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.