Skip to main content

Charging Session Lifecycle

A charging session progresses through distinct phases from vehicle connection to completion.

Session States​

Typical Flow​

1. Authorization​

User presents RFID or app triggers remote start.

The CSMS checks if the idTag is valid (not blocked, not expired, sufficient balance, etc.).

2. Transaction Start​

Once authorized, the charger reports the transaction beginning.

Key data in StartTransaction:

  • connectorId - which plug on the charger
  • idTag - who is charging
  • meterStart - Wh reading at start
  • timestamp - when it started
  • reservationId - if from a reservation

The CSMS assigns a transactionId used for all subsequent messages.

3. Charging​

During charging, the charger sends meter readings and status updates.

MeterValues can include:

  • Energy delivered (Wh)
  • Power (W)
  • Current (A)
  • Voltage (V)
  • State of Charge (%)
  • Temperature

4. Transaction Stop​

Charging ends when the user stops it, the vehicle is full, or the CSMS sends a remote stop.

Stop reasons:

ReasonDescription
LocalUser stopped via RFID or button
RemoteCSMS sent RemoteStopTransaction
EVDisconnectedCable unplugged
PowerLossCharger lost power
RebootCharger rebooting
DeAuthorizedAuthorization revoked mid-session

Remote Start/Stop​

The CSMS can initiate sessions without user presence at the charger.

Suspended States​

Charging can pause without ending the transaction:

StateMeaning
SuspendedEVVehicle is not accepting power (battery management, full, etc.)
SuspendedEVSECharger is limiting power (smart charging, thermal limits)

The transaction remains open. When conditions allow, charging resumes.

Transaction Data Integrity​

  • Transactions are uniquely identified by transactionId
  • If connection is lost, the charger queues messages
  • When reconnected, queued messages are delivered in order
  • The CSMS should handle duplicate messages idempotently

Calculating Session Metrics​

Energy Delivered = meterStop - meterStart  (Wh)
Duration = stopTimestamp - startTimestamp
Average Power = Energy / Duration

For more detailed metering, use the transactionData array in StopTransaction.req which contains sampled values throughout the session.