Charges

Correct an odometer reading you recorded

Changed on

Required scope: charge-odometer:write </br>Organization authorization: supported

Only readings with source partner_api can be corrected; readings from a vehicle integration, the driver app or the operator hub are another party's evidence and are rejected with 403. Omitted fields are left untouched, so sourceRef can be overwritten but not cleared — record a new reading instead.

patch/api/v1/charges/{chargeId}/odometer-readings/{readingId}

Request

  • Base URL
    https://partner-api.monta.com
  • URL
    https://partner-api.monta.com/api/v1/charges/{chargeId}/odometer-readings/{readingId}
  • Auth
    HTTP bearer

Path parameters

chargeIdinteger required
readingIdinteger required

Request body

odometerKminteger nullable

Corrected odometer reading in whole kilometres. Values outside 0-4000000 are rejected with 422.

readingAtstring date-time nullable

Corrected time of the reading (ISO8601: yyyy-MM-ddTHH:mm:ssZ)

sourceRefstring nullable

Corrected identifier for this reading. Maximum 128 characters. Omitted fields are left untouched, so an existing sourceRef can be overwritten but not cleared.

Example request

{
  "odometerKm": 42500,
  "readingAt": "2026-05-21T11:55:00Z",
  "sourceRef": "fleet-run-10"
}

Response

Odometer reading corrected

idinteger required

Id of the odometer reading

chargeIdinteger required

Id of the charge the reading belongs to

vehicleIdinteger nullable

Id of the vehicle the reading was taken from. Null when the charge has no vehicle assigned.

odometerKminteger required

Odometer reading in whole kilometres

readingAtstring date-time required

When the reading was taken (ISO8601: yyyy-MM-ddTHH:mm:ssZ)

source'vehicle_integration' | 'manual_app' | 'manual_hub' | 'partner_api' required

Where the reading came from

sourceLabelstring required

Human-readable label for source

sourceRefstring nullable

Your own identifier for this reading, echoed back as you sent it

capturePhase'start' | 'stop' | 'manual' required

Point in the charge lifecycle the reading was captured at. Readings you push are always manual.

confidence'verified' | 'declared' required

How trustworthy the value is: verified for a Monta vehicle integration, declared for anything a human or a partner reported

confidenceLabelstring required

Human-readable label for confidence

editableboolean required

True only for readings you pushed yourself. Readings from a vehicle integration, the driver app or the operator hub are another party's evidence and cannot be patched or deleted.

createdAtstring date-time nullable

When the reading was recorded (ISO8601: yyyy-MM-ddTHH:mm:ssZ)

Example response

{
  "id": 1,
  "chargeId": 1234,
  "vehicleId": 99,
  "odometerKm": 42500,
  "readingAt": "2026-05-21T11:55:00Z",
  "source": "partner_api",
  "sourceLabel": "Partner API",
  "sourceRef": "fleet-run-9",
  "capturePhase": "manual",
  "confidence": "declared",
  "confidenceLabel": "Declared",
  "editable": true,
  "createdAt": "2026-05-21T12:00:00Z"
}

Changes