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

# Submit Meter Readings

> Submit one or more meter readings. Readings can be submitted by `meterNumber` (when known) or by `connectionNumber` (when meter number is not known — set `referenceType: "connectionNumber"`). Supports batch submission. The raw reading is multiplied by the meter's `mf` (multiplier factor) at bill calculation time. Valid `readingType` values come from `/billspree/meters/get-meter-connection-reading-types`.



## OpenAPI

````yaml POST /billspree/meters/update-meter-readings
openapi: 3.1.0
info:
  title: Billspree API
  description: REST API for Billspree — billing, AR management, and workspace operations.
  version: 1.0.0
servers:
  - url: https://{workspace}.spreesuite.com
    variables:
      workspace:
        default: your-workspace
        description: Your organization's subdomain (e.g. demo → demo.spreesuite.com)
security:
  - apiKeyAuth: []
paths:
  /billspree/meters/update-meter-readings:
    post:
      tags:
        - Usage
      summary: Submit Meter Readings
      description: >-
        Submit one or more meter readings. Readings can be submitted by
        `meterNumber` (when known) or by `connectionNumber` (when meter number
        is not known — set `referenceType: "connectionNumber"`). Supports batch
        submission. The raw reading is multiplied by the meter's `mf`
        (multiplier factor) at bill calculation time. Valid `readingType` values
        come from `/billspree/meters/get-meter-connection-reading-types`.
      operationId: updateMeterReadings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitReadingsRequest'
            examples:
              by-meter-number:
                summary: Submit by meter number
                value:
                  method: Create
                  action: Upload Meter Readings
                  apiVersion: v2
                  meterReadings:
                    - meterNumber: 2
                      readingType: Normal
                      reading: 1250
                      readingDate: 15/06/2026
                      healthID: 1
                      comments: ''
              by-connection-number:
                summary: Submit by connection number
                value:
                  method: Create
                  action: Upload Meter Readings
                  apiVersion: v2
                  meterReadings:
                    - connectionNumber: 1001
                      referenceType: connectionNumber
                      readingType: Normal
                      reading: '1250'
                      readingDate: 15/06/2026
                      healthID: null
                      comments: ''
      responses:
        '200':
          description: Readings submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericSuccessResponse'
              example:
                success: true
                statusCode: 200
                message: Request Succeeded.
                error: null
                data: {}
components:
  schemas:
    SubmitReadingsRequest:
      type: object
      required:
        - method
        - action
        - apiVersion
        - meterReadings
      properties:
        method:
          type: string
          description: Always `"Create"`
          example: Create
        action:
          type: string
          description: Always `"Upload Meter Readings"`
          example: Upload Meter Readings
        apiVersion:
          type: string
          description: Always `"v2"`
          example: v2
        meterReadings:
          type: array
          description: List of readings — supports batch submission
          items:
            $ref: '#/components/schemas/MeterReading'
    GenericSuccessResponse:
      type: object
      properties:
        success:
          type: boolean
        statusCode:
          type: integer
        message:
          type: string
        error:
          nullable: true
        data:
          type: object
    MeterReading:
      type: object
      required:
        - readingType
        - reading
        - readingDate
      properties:
        meterNumber:
          type: integer
          description: >-
            Meter number — required when submitting by meter. Omit when using
            `connectionNumber`
        connectionNumber:
          type: integer
          description: >-
            Subscription number — use instead of `meterNumber` when meter number
            is not known
        referenceType:
          type: string
          description: >-
            `"connectionNumber"` — only set when referencing by connection
            number
        readingType:
          type: string
          description: >-
            Reading type name — fetch valid values from
            `/billspree/meters/get-meter-connection-reading-types`
        reading:
          description: >-
            The actual meter reading value. The billing engine multiplies this
            by the meter's `mf` to get billed units
        readingDate:
          type: string
          description: Date of reading in `dd/mm/yyyy` format
        healthID:
          type: integer
          nullable: true
          description: Meter health ID — `null` when submitting by connection number
        comments:
          type: string
          description: Optional notes on the reading
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Auth token returned from the login endpoint. Send as: `Authorization:
        <token>` (no Bearer prefix)

````