The Open Charge Point Protocol (OCPP) is the global standard for communication between EV chargers (Charge Points) and Central Management Systems (CMS).
It enables features such as remote start/stop of charging, firmware updates, diagnostics, and session reporting.
Among these operations, RemoteStartTransaction allows a CMS to start a charging session remotely—for example, when a driver taps “Start Charging” in a mobile app.
In this article, we’ll cover how this process works, show JSON message examples for OCPP 1.6 and 2.0.1, and include a sequence diagram illustrating the entire flow.
🔄 Remote Start Charging Overview
High-Level Steps
- User action:
The EV driver requests charging via an app or web portal. - CMS request:
The CMS sends aRemoteStartTransactionto the charger via WebSocket. - Charger validation:
The charger checks its availability and validates the driver’sidTag. - Vehicle connection:
Once the EV is plugged in, the charger starts energy delivery. - CMS monitoring:
The CMS receivesStartTransaction,MeterValues, and session updates in real time.
📊 Sequence Diagram
Below is a visual representation of how the RemoteStartTransaction flow works:

Diagram Description (for rendering or design team):
🟢 Actors:
- CMS (Central Management System)
- Charge Point (EVSE / Charger)
- EV (Electric Vehicle)
🟣 Flow:
- CMS → Charger: RemoteStartTransaction(idTag, connectorId)
- Charger → CMS: Accepted (status)
- Charger → EV: Prepare for charging
- EV plugs in and signals readiness
- Charger → CMS: StartTransaction(connectorId, idTag, meterStart, timestamp)
- CMS → Charger: Accepted (transactionId)
- Charger → CMS: StatusNotification(Charging)
- CMS ↔ Charger: MeterValues updates periodically
- CMS → Charger: RemoteStopTransaction (when charging ends)
- Charger → CMS: StopTransaction(transactionId, meterStop, timestamp)
You can include the following PlantUML-style markup (convertible to image via plugin or generator):
@startuml
actor "Driver" as D
participant "CMS" as CMS
participant "Charge Point" as CP
participant "EV" as EV
D -> CMS: Tap "Start Charging" (via App)
CMS -> CP: RemoteStartTransaction(idTag, connectorId)
CP -> CMS: Response(status=Accepted)
CP -> EV: Prepare to charge
EV -> CP: Plugged-in / Ready signal
CP -> CMS: StartTransaction(connectorId, idTag, meterStart, timestamp)
CMS -> CP: Response(transactionId, status=Accepted)
loop During Charging
CP -> CMS: MeterValues(energy usage)
CP -> CMS: StatusNotification(Charging)
end
CMS -> CP: RemoteStopTransaction(transactionId)
CP -> CMS: StopTransaction(meterStop, timestamp)
@enduml
If you’d like, I can generate this diagram as a 1200 × 630 image optimized for WordPress (light or dark theme, matching your previous article banners).
💬 Example: RemoteStartTransaction (OCPP 1.6 JSON)
[
2,
"19223201",
"RemoteStartTransaction",
{
"idTag": "ABC123RFID",
"connectorId": 1
}
]
Response:
[
3,
"19223201",
{
"status": "Accepted"
}
]
⚙️ StartTransaction Message
When the EV is connected:
[
2,
"19223202",
"StartTransaction",
{
"connectorId": 1,
"idTag": "ABC123RFID",
"meterStart": 0,
"timestamp": "2025-11-01T15:23:45Z"
}
]
Response:
[
3,
"19223202",
{
"transactionId": 10123,
"idTagInfo": {
"status": "Accepted"
}
}
]
🔐 OCPP 2.0.1 JSON-RPC Example
{
"jsonrpc": "2.0",
"id": "f9b8c1f3-9b45-42e6-9ef8-1e33b7b6e9a4",
"method": "RemoteStartTransaction",
"params": {
"idToken": {
"idToken": "ABC123RFID",
"type": "ISO14443"
},
"evseId": [1]
}
}
Response:
{
"jsonrpc": "2.0",
"id": "f9b8c1f3-9b45-42e6-9ef8-1e33b7b6e9a4",
"result": {
"status": "Accepted"
}
}
🔒 Security and Best Practices
- Always use secure WebSocket (wss://) with TLS for all OCPP communications.
- Validate all incoming IDs (
idTag,evseId) to prevent misuse. - Log every transaction for auditing and billing accuracy.
- If a request fails with
"Rejected"or"Unavailable", retry after confirming the charger’s availability.
✅ Conclusion
The RemoteStartTransaction command is the cornerstone of remote EV charging control.
It enables a seamless, app-based experience for drivers while allowing operators to automate energy delivery, session monitoring, and billing.
By understanding the OCPP message sequence and implementing it correctly, you can build a scalable, interoperable EV charging network that communicates securely and efficiently across thousands of charging points.


