OCPP MESSAGE · UPDATED 11 AUG 2026

StatusNotification: what the connector is doing

Every availability badge a driver sees traces back to this message. It is the charger's account of what is physically happening at a socket — and the single richest source of operational signal in the whole protocol.

PART OF THE OCPP COMPLETE GUIDE · 14 MESSAGE GUIDES

IN ONE PARAGRAPH

StatusNotification reports a connector's state and any fault, and it is what your availability map is built from. Two details cause most of the trouble: connectorId 0 refers to the whole charge point rather than a socket, and several distinct states all mean 'not usable' but for very different operational reasons.

The message

// Charge point -> CSMS
[2, "19223202", "StatusNotification", {
  "connectorId": 1,
  "errorCode": "NoError",
  "status": "Charging",
  "timestamp": "2026-08-11T09:12:04Z",
  "info": "Session active",
  "vendorId": "ExampleVendor",
  "vendorErrorCode": ""
}]

// CSMS -> charge point
[3, "19223202", {}]

Note the empty response. The CSMS acknowledges but cannot reject — this is the charger reporting reality, not requesting permission.

connectorId: 0 means the charge point itself, not a connector. A status on connector 0 describes the whole unit — typically Unavailable or Faulted for a cabinet-level problem. Treating it as a socket creates a phantom connector in your data model, and it is one of the most common integration bugs in OCPP.

The nine states

StatusMeansDriver-facing
AvailableFree and operationalAvailable
PreparingCable plugged or authorised, not yet chargingStarting
ChargingEnergy flowingCharging
SuspendedEVVehicle paused it — usually a full batteryCharge complete
SuspendedEVSECharger paused it — load management or grid limitPaused
FinishingSession ended, cable still connectedPlease unplug
ReservedHeld for a specific driverReserved
UnavailableAdministratively disabledOut of service
FaultedHardware faultOut of order

The two suspends are not the same

This distinction is worth getting right because it changes what you tell the driver and what you tell operations.

  • SuspendedEV — the car stopped drawing. Usually a full battery. Nothing is wrong; the driver should be told charging is complete and asked to move the vehicle.
  • SuspendedEVSE — the charger stopped supplying, typically because of smart charging limits or a site power constraint. The driver is waiting on you, not on their car.

Reporting both as “paused” means a driver whose car is full sits waiting, and a driver being curtailed thinks their car is finished.

Error codes

errorCode is present on every StatusNotification, and NoError is the normal value. When it is not, it is telling you something specific:

Error codeIndicatesAction
ConnectorLockFailureThe latch did not engage or releaseMay need UNLOCK_CONNECTOR or a site visit
GroundFailureEarth fault detectedSafety — take out of service immediately
OverCurrentFailureCurrent exceeded limitsInvestigate; possible cable or vehicle fault
OverVoltage / UnderVoltageSupply outside toleranceGrid or site electrical issue
HighTemperatureThermal limit reachedOften derating, not failure — watch for repeats
PowerMeterFailureMetering hardware faultBilling integrity risk — stop transactions
PowerSwitchFailureContactor faultTake out of service
ReaderFailureRFID reader faultRemote start still works; local auth does not
EVCommunicationErrorCharger cannot talk to the vehicleFrequently the cable or the car, not the charger
WeakSignalPoor connectivityExpect offline behaviour and queued transactions
InternalError / OtherErrorUnspecifiedCheck vendorErrorCode

PowerMeterFailure deserves special handling. A charger with a broken meter can still deliver energy, and it will still send MeterValues — they just will not be true. Any transaction on a connector reporting this is a billing dispute waiting to happen; block it rather than invoice from it.

The state machine

A normal session walks a predictable path, and deviations from it are diagnostic:

Available ──plug in──► Preparing ──authorised──► Charging
                                              │
                        ┌─────────────────────┼─────────────────────┐
                        ▼                     ▼                     ▼
                 SuspendedEV           SuspendedEVSE            Finishing
                (battery full)      (curtailed by CSMS)      (session over)
                        │                     │                     │
                        └─────────────────────┴────────► Finishing ─┴──unplug──► Available

What the deviations tell you:

  • Stuck in Preparing — authorisation is failing, or the vehicle is not handshaking. A cluster of these at one site points at a reader or connectivity problem.
  • Stuck in Finishing — the driver has not unplugged. This is the state to trigger idle fees and notifications from.
  • Available straight to Faulted with no session — hardware degrading on its own.
  • Rapid oscillation between states — usually a flapping connection rather than genuine state changes.

Mapping to OCPI

If you operate a CPO platform, this message is the origin of the EVSE status you publish to roaming partners through OCPI Locations.

OCPP statusOCPI EVSE status
AvailableAVAILABLE
Preparing, Charging, SuspendedEV, SuspendedEVSE, FinishingCHARGING or OCCUPIED
ReservedRESERVED
UnavailableINOPERATIVE
FaultedOUTOFORDER
No recent contactUNKNOWN

The last row is the one teams forget. A charger that has gone silent has no OCPP status at all, and the honest OCPI answer is UNKNOWN rather than the last value you happened to receive. Publishing a stale AVAILABLE is how a roaming partner sends a driver to a dead charger.

Production lessons

  • Handle connectorId: 0 as the charge point. Never create a connector record for it.
  • Distinguish the two suspends in your UI. They mean opposite things to a driver.
  • Block transactions on PowerMeterFailure. Energy without trustworthy metering is unbillable.
  • Store status history, not just current state. Fault patterns are only visible over time, and it is the evidence for a warranty claim.
  • Alert on GroundFailure immediately — it is a safety condition, not an availability one.
  • Age out status. A status is only as good as the connection that delivered it; combine it with Heartbeat liveness before publishing availability.
  • Watch Preparing dwell time per site. It is one of the earliest indicators of an authorisation or hardware problem.

Frequently asked questions

What does connectorId 0 mean in OCPP StatusNotification?

It refers to the charge point as a whole rather than an individual socket, and is used for cabinet-level conditions such as Unavailable or Faulted. Treating it as a connector creates a phantom connector in your data model and is one of the most common OCPP integration bugs.

What is the difference between SuspendedEV and SuspendedEVSE?

SuspendedEV means the vehicle stopped drawing power, usually because the battery is full — nothing is wrong. SuspendedEVSE means the charger stopped supplying, typically due to smart charging limits or a site power constraint. They require opposite messages to the driver.

What are the OCPP connector statuses?

Available, Preparing, Charging, SuspendedEV, SuspendedEVSE, Finishing, Reserved, Unavailable and Faulted. Only Available means a driver can start a new session.

How does OCPP status map to OCPI EVSE status?

Available maps to AVAILABLE, the active states map to CHARGING or OCCUPIED, Reserved to RESERVED, Unavailable to INOPERATIVE and Faulted to OUTOFORDER. Critically, a charger that has gone silent should be published as UNKNOWN rather than its last received status.

What should you do when a charger reports PowerMeterFailure?

Block transactions on that connector. The charger can still deliver energy and will still send MeterValues, but those readings cannot be trusted, so any resulting transaction is a billing dispute waiting to happen.