> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voltview.co.uk/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit meter reading to supplier

> Submit a meter reading to the supplier (Octopus Energy, E.ON Next, British Gas Lite). The reading is saved to Firestore with status PENDING first, then sent to the supplier; the document is updated to SUCCESS or FAILED. Supports single-register (gas or single-rate electricity), day/night (2 registers), or multi-register (e.g. green/amber/red). Get registerIds from the supplier account's meter details (e.g. from account sites). On failure, the response includes readingId so you can retry within the typical 10-day submission window.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/suppliers/accounts/{id}/readings
openapi: 3.0.3
info:
  title: VoltView API
  description: >-
    The VoltView API provides comprehensive energy monitoring and management
    capabilities for multi-site businesses, enabling real-time tracking of
    energy consumption, cost analysis, and environmental impact metrics.


    Our API suite includes:

    - Site Management API - Manage and monitor multiple site locations

    - Energy Consumption API - Access detailed energy usage data

    - Cost Analysis API - Track and analyse energy costs

    - Environmental Metrics API - Monitor carbon emissions and energy efficiency

    - Bill Validation API - Validate and audit utility bills for accuracy

    - Supplier Integration API - Integrate with utility suppliers for automated
    data collection


    ## Getting started guide


    To start using the VoltView API, you need to:


    - Sign up for a VoltView account to receive your API credentials

    - Review our data granularity options (hourly/daily/monthly)

    - Ensure your requests are sent via HTTPS

    - All responses are returned in JSON format


    ## Authentication


    Include your VoltView API key in the `x-api-key` header on every request.


    ### Authentication error response

    If authentication fails, you will receive an HTTP 401 Unauthorised response
    with a detailed error message in the JSON response body.


    ## Data Units

    - Energy Consumption: kWh

    - Power Demand: kW

    - Carbon Emissions: kg CO2e/tonnes CO2e

    - Currency: GBP (£)

    - Time Series: ISO 8601 format

    - Numeric Values: Rounded to 2 decimal places
  version: 1.0.0
  contact:
    email: info@voltview.co.uk
  license:
    name: Proprietary
servers:
  - url: https://api.voltview.co.uk
    description: Production server
security:
  - apiKeyAuth: []
tags:
  - name: Authentication
    description: Endpoints for authentication
  - name: User
    description: User profile management
  - name: Sites
    description: Multi-site management endpoints
  - name: Energy Consumption
    description: Energy consumption data endpoints
  - name: Specific Site
    description: Operations for specific sites
  - name: Meters
    description: Meter lookup and meter readings management
  - name: Emissions
    description: Carbon emissions data endpoints
  - name: LOA Management
    description: >-
      Letter of Authority (LOA) management - create, list, view, and update
      status of LOAs
  - name: Supplier Integration
    description: Utilities integration endpoints
  - name: Billing Insights
    description: Account-level billing insights and bill assurance opportunities
  - name: Bill Validation
    description: Utility bill validation and error detection endpoints
paths:
  /v1/suppliers/accounts/{id}/readings:
    post:
      tags:
        - Supplier Integration
      summary: Submit meter reading to supplier
      description: >-
        Submit a meter reading to the supplier (Octopus Energy, E.ON Next,
        British Gas Lite). The reading is saved to Firestore with status PENDING
        first, then sent to the supplier; the document is updated to SUCCESS or
        FAILED. Supports single-register (gas or single-rate electricity),
        day/night (2 registers), or multi-register (e.g. green/amber/red). Get
        registerIds from the supplier account's meter details (e.g. from account
        sites). On failure, the response includes readingId so you can retry
        within the typical 10-day submission window.
      operationId: submitMeterReadingToSupplier
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
          description: Supplier account ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitMeterReadingToSupplierRequest'
            examples:
              single:
                summary: Single read (gas or single-rate electricity)
                value:
                  mpanMprn: '1234567890123'
                  readAt: '2026-03-15'
                  readings:
                    - registerId: reg-abc-001
                      reading: 45231
              dayNight:
                summary: Day/night (two registers)
                value:
                  mpanMprn: '1234567890123'
                  readAt: '2026-03-15'
                  readings:
                    - registerId: reg-night-001
                      reading: 12000
                    - registerId: reg-day-002
                      reading: 28500
              multiRegister:
                summary: Green/amber/red (multi-register)
                value:
                  mpanMprn: '1234567890123'
                  readAt: '2026-03-15'
                  readings:
                    - registerId: reg-green-001
                      reading: 5000
                    - registerId: reg-amber-002
                      reading: 15000
                    - registerId: reg-red-003
                      reading: 22000
      responses:
        '200':
          description: Meter reading submitted successfully to supplier
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                  readingId:
                    type: string
                    description: Unique id for this submission (for retries)
                  data:
                    type: object
                    description: Supplier API response
                  warning:
                    type: string
                    description: Optional e.g. readAt older than 10 days
        '400':
          description: Bad request - invalid body, meter not found, or supplier rejected
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                  readingId:
                    type: string
                    description: Reading saved to Firestore; retry within submission window
                  error:
                    type: string
                  warning:
                    type: string
        '500':
          description: Failed to save reading to Firestore
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                  readingId:
                    type: string
        4XX:
          $ref: '#/components/responses/Error4XX'
components:
  schemas:
    SubmitMeterReadingToSupplierRequest:
      type: object
      required:
        - mpanMprn
        - readAt
        - readings
      properties:
        mpanMprn:
          type: string
          description: MPAN (electricity) or MPRN (gas) for the meter
        readAt:
          type: string
          description: Date of the reading (ISO 8601 date e.g. 2026-03-15)
        readings:
          type: array
          minItems: 1
          description: >-
            One or more register readings. Get registerIds from the supplier
            account's meter details.
          items:
            type: object
            required:
              - registerId
              - reading
            properties:
              registerId:
                type: string
                description: Register ID from supplier meter details
              reading:
                type: number
                minimum: 0
                description: Cumulative register value (non-negative integer)
  responses:
    Error4XX:
      description: Client error response
      content:
        application/json:
          schema:
            type: object
            properties:
              type:
                type: string
                enum:
                  - error
              error:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - invalid_request_error
                  message:
                    type: string
                    default: Invalid request
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: VoltView API key

````