Start Transaction
Source: OCPP 1.6 Specification — Section 4.8 (Operation), Sections 6.45 / 6.46 (Messages)
Overview
The Charge Point SHALL send a StartTransaction.req PDU to the Central System to inform about a transaction that has been started. If this transaction ends a reservation (see Reserve Now operation), then the StartTransaction.req MUST contain the reservationId.
Upon receipt of a StartTransaction.req PDU, the Central System SHOULD respond with a StartTransaction.conf PDU. This response PDU MUST include a transaction id and an authorization status value.
The Central System MUST verify validity of the identifier in the StartTransaction.req PDU, because the identifier might have been authorized locally by the Charge Point using outdated information. The identifier, for instance, may have been blocked since it was added to the Charge Point's Authorization Cache.
If the Charge Point has implemented an Authorization Cache, then upon receipt of a StartTransaction.conf PDU the Charge Point SHALL update the cache entry, if the idTag is not in the Local Authorization List, with the IdTagInfo value from the response as described under Authorization Cache.
It is likely that the Central System applies sanity checks to the data contained in a StartTransaction.req it received. The outcome of such sanity checks SHOULD NOT ever cause the Central System to not respond with a StartTransaction.conf. Failing to respond with a StartTransaction.conf will only cause the Charge Point to try the same message again as specified in Error responses to transaction-related messages.
Sequence Diagram
Figure 19. Sequence Diagram: Start Transaction
Charge Point ──── StartTransaction.req ────▶ Central System
(connectorId, idTag, meterStart, reservationId?, timestamp)
Charge Point ◀─── StartTransaction.conf ──── Central System
(idTagInfo, transactionId)
Initiator
Charge Point → Central System
Fields
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| connectorId | integer (> 0) | 1..1 | Required. This identifies which connector of the Charge Point is used. |
| idTag | IdToken | 1..1 | Required. This contains the identifier for which a transaction has to be started. |
| meterStart | integer | 1..1 | Required. This contains the meter value in Wh for the connector at start of the transaction. |
| reservationId | integer | 0..1 | Optional. This contains the id of the reservation that terminates as a result of this transaction. |
| timestamp | dateTime | 1..1 | Required. This contains the date and time on which the transaction is started. |
| Field Name | Field Type | Card. | Description |
|---|---|---|---|
| idTagInfo | IdTagInfo | 1..1 | Required. This contains information about authorization status, expiry and parent id. |
| transactionId | integer | 1..1 | Required. This contains the transaction id supplied by the Central System. |
Examples
{
"connectorId": 1,
"idTag": "044943121F1A80",
"meterStart": 12500,
"reservationId": 42,
"timestamp": "2026-04-27T12:34:56Z"
}{
"idTagInfo": {
"status": "Accepted",
"expiryDate": "2026-12-31T23:59:59Z",
"parentIdTag": "PARENT001"
},
"transactionId": 1234
}Schema
Source:
schemas/StartTransaction.json,schemas/StartTransactionResponse.json(OCPP 1.6, JSON Schema draft-04)