Skip to content

Solar Installation ​

Solar installations are jobs for installing solar PV (photovoltaic) panel systems at residential properties. These installations may span multiple days and can include battery storage and Tesla Gateway components. For standalone battery installations without solar panels, see Battery-Only Installation.

Job Properties ​

PropertyDescription
productTypeAlways 'solar'
packsContains inverter, battery, and optional Tesla Gateway packs
datesArray of installation dates

Completing a Solar Installation ​

1. External Installation Photos ​

Supports up to 3 roof arrays. Array 1 photos are required; Arrays 2-3 are optional.

Per-array photos:

  • Roof face before starting
  • Full roof facing points
  • Full roof bracket and rail
  • DC cables tied to rail
  • Completed roof array (showing full array)
  • DC entry (optional)
  • Optimiser layout (optional)
  • Bird guard (optional)

2. Internal Installation Photos ​

16 photos documenting the internal installation

3. Tesla Gateway (Conditional) ​

Only required if packs contain a Tesla Gateway (pack name contains both "tesla" and "gateway").

4 photos required:

  • Overview of gateway installed
  • Gateway (with serial number)
  • Gateway with internal cover removed (showing wiring)
  • Gateway with internal cover fitted and labelled

4. PV Array Test ​

Single photo of PV array test results.

5. Electrical Installation Certificate ​

Upload of the BS 7671 electrical installation certificate. Can be uploaded directly or sent via email to [email protected].

6. Building Regulations Certificate ​

Upload of the building regulations certificate. Can be uploaded directly or sent via email.

7. Customer Walkthrough ​

See Customer Walkthrough for details.

Submission Flow ​

StepEndpointBody
1POST /engineers/installation-jobs/solar/{id}/photosPhoto data
2PUT /installation_jobs/{jobId}/done{installerId}

Job transitions to ready_for_audit state on success.

Tesla Gateway Detection ​

Tesla Gateway step visibility is determined by pack contents:

typescript
hasTeslaGatewayInPacks = job.packs.some(
  (pack) => pack.name?.toLowerCase().includes('tesla') && pack.name?.toLowerCase().includes('gateway'),
);