RequestStartTransaction
Sent by the CSMS to remotely start a transaction on a Charging Station. Replaces RemoteStartTransaction from OCPP 1.6J with a richer model including remoteStartId for request tracking.
Quick Reference
Required Fields
idToken IdTokenType Identifier to use for the transaction (object with idToken + type)
remoteStartId integer Unique ID for this remote start request, used to correlate with the subsequent TransactionEvent
Optional Fields
evseId integer EVSE on which to start the transaction. If omitted, the Charging Station can choose
chargingProfile ChargingProfileType Charging profile to apply to the transaction
groupIdToken IdTokenType Group identifier token for multi-user scenarios
Example Payload
{
"remoteStartId": 1,
"idToken": {
"idToken": "AABBCCDD",
"type": "ISO14443"
},
"evseId": 1
} Example Full Frame
[
2,
"msg-001",
"RequestStartTransaction",
{
"remoteStartId": 1,
"idToken": {
"idToken": "AABBCCDD",
"type": "ISO14443"
},
"evseId": 1
}
]
Format: [MessageType, MessageId, Action, Payload]
Overview
RequestStartTransaction allows the CSMS to remotely initiate a charging session on a Charging Station. It replaces RemoteStartTransaction from OCPP 1.6J and adds remoteStartId for reliable request correlation.
When to Send
- When a user starts a session via a mobile app or backend system
- For scheduled charging sessions
- To start a session on behalf of a fleet management system
Expected Response
The Charging Station responds with:
status:AcceptedorRejectedtransactionId(optional): If the Charging Station can immediately provide it
After a successful response, watch for a TransactionEvent with triggerReason: "RemoteStart" and transactionInfo.remoteStartId matching the sent remoteStartId.
Key Differences from OCPP 1.6J
| OCPP 1.6J | OCPP 2.0.1 |
|---|---|
RemoteStartTransaction | RequestStartTransaction |
| No request ID | remoteStartId (required) |
idTag (string) | idToken (object) |
connectorId | evseId |
Usage Notes
- The
remoteStartIdis essential for correlating this request with theTransactionEventthat follows - If
evseIdis omitted, the Charging Station selects an available EVSE - The Charging Station may still reject if the EVSE is occupied or faulted
Best Practices
- Always use remoteStartId — Use an incrementing counter or unique integer per request
- Track the TransactionEvent — Verify
transactionInfo.remoteStartIdmatches your sent ID - Set a timeout — If no
TransactionEventwith matchingremoteStartIdarrives within a reasonable time, assume the start failed
Testing Tips
- Test the full flow: send RequestStartTransaction → verify Accepted → verify TransactionEvent with remoteStartId
- Test rejection when EVSE is already occupied
- Test with and without
evseIdspecified
Common Errors
TypeConstraintViolation
Cause: idToken sent as a plain string
Solution: idToken is an object with idToken and type fields in OCPP 2.0.1
GenericError
Cause: remoteStartId missing
Solution: remoteStartId is required in OCPP 2.0.1 to track the request against a subsequent TransactionEvent