StopTransaction
Closes a charging session and reports the final meter reading, the reason, and any buffered meter data.
- Version
- OCPP 1.6
- Direction
- Charge Point → CSMS
- Feature profile
- Core
StopTransaction ends a session. Besides the closing meter reading it carries a reason, which is the field that makes operational reporting possible — distinguishing a driver unplugging from a power loss from a remote stop.
It can also carry transactionData: meter values buffered during the session, delivered in bulk at the end.
Request
| Field | Type | Required | Description |
|---|---|---|---|
transactionId | integer | Required | The id returned by StartTransaction. |
meterStop | integer | Required | Meter reading in Wh at the end of the session. |
timestamp | dateTime | Required | When the session ended. |
idTag | IdToken | Optional | The token that stopped the session, when one was presented. |
reason | Reason | Optional | Why the session ended. Absent means Local. |
transactionData | MeterValue[] | Optional | Meter values collected during the session. |
[2, "19223201", "StopTransaction", {
"transactionId": 8814,
"meterStop": 1216800,
"timestamp": "2026-09-09T12:47:31.000Z",
"idTag": "04A1B2C3D4E580",
"reason": "EVDisconnected"
}]Response
| Field | Type | Required | Description |
|---|---|---|---|
idTagInfo | IdTagInfo | Optional | Present only when idTag was supplied in the request. |
[3, "19223201", {
"idTagInfo": { "status": "Accepted" }
}]Values
Reason
| Value | Meaning |
|---|---|
EmergencyStop | The emergency stop button was pressed. |
EVDisconnected | The cable was disconnected at the vehicle. |
HardReset | A hard reset ended the session. |
Local | Stopped locally — a token was presented at the charger. This is the default when reason is omitted. |
Other | None of the other reasons apply. |
PowerLoss | Supply to the charge point was lost. |
Reboot | The charge point rebooted. |
Remote | Stopped by RemoteStopTransaction. |
SoftReset | A soft reset ended the session. |
UnlockCommand | Stopped by UnlockConnector. |
DeAuthorized | The token was de-authorized during the session. |
Implementation notes
Omitting `reason` means `Local`, not "unknown". A charger that never sends the field makes every session look driver-terminated, and hides power losses and emergency stops from your reporting entirely.
The response omits idTagInfo when the request had no idTag. A CSMS that always includes it is being harmlessly generous; a charger that requires it will break.
transactionData is the mechanism for delivering meter values that could not be sent live. Expect it to arrive after a reconnect, carrying timestamps well in the past.