OCPP MESSAGE · UPDATED 11 AUG 2026

BootNotification: how a charger comes online

The first message a charge point sends after the WebSocket opens, and the one that decides whether it is allowed to do anything at all. It is also the best fleet inventory feed you will ever get, and most platforms throw the data away.

PART OF THE OCPP COMPLETE GUIDE · 14 MESSAGE GUIDES

IN ONE PARAGRAPH

BootNotification is the charger introducing itself: vendor, model, serial, firmware, modem details. The CSMS answers Accepted, Pending or Rejected and sets the heartbeat interval. Accepted means the charger may operate; the other two are provisioning gates that most implementations under-use.

The message

// Charge point -> CSMS
[2, "19223200", "BootNotification", {
  "chargePointVendor": "ExampleVendor",
  "chargePointModel": "DC60-CCS2",
  "chargePointSerialNumber": "CP014-002",
  "chargeBoxSerialNumber": "CB-2024-88231",
  "firmwareVersion": "2.4.1",
  "iccid": "89910123456789012345",
  "imsi": "404451234567890",
  "meterType": "Landis+Gyr E360",
  "meterSerialNumber": "MTR-77123"
}]

// CSMS -> charge point
[3, "19223200", {
  "status": "Accepted",
  "currentTime": "2026-08-11T08:59:58Z",
  "interval": 900
}]

Sent immediately after the WebSocket opens, and again after every reboot, firmware install or reconnection following a long outage.

The three verdicts

StatusCharger mayRetry behaviour
AcceptedOperate normallyProceeds to Heartbeat at interval
PendingNot start transactions; CSMS may configure itRetries after interval
RejectedNothingRetries after interval
Pending is the most under-used status in OCPP. It means “I know you, wait while I set you up” — and it is exactly the window in which to push configuration, a local authorisation list, or a firmware update, before the charger starts serving drivers with vendor defaults. Most platforms return Accepted unconditionally and then configure afterwards, which means every newly installed charger serves its first sessions misconfigured.

interval does double duty: on Accepted it is the heartbeat period; on Pending or Rejected it is how long to wait before retrying. A short retry interval on Rejected across a fleet of unknown chargers is a self-inflicted denial of service on your own CSMS.

Rejected as a security control

Rejected is the gate for chargers you do not recognise. A CSMS endpoint is reachable from the internet, and unknown units will connect — misconfigured hardware pointed at the wrong CSMS, units from a decommissioned site, and occasionally something you should look at more closely.

A reasonable policy:

  • Known and provisionedAccepted.
  • Known but not yet configuredPending, configure, then accept on the retry.
  • Unknown serialRejected with a long interval, and log it.
  • Known but decommissionedRejected, and alert — a retired unit reconnecting is worth investigating.

Accepting anything that connects means your fleet inventory is defined by whatever dials in, which is not an inventory.

Free fleet inventory

Every boot carries a full hardware and firmware census. Recorded over time it answers questions that are otherwise expensive:

FieldOperational use
chargePointVendor / chargePointModelAttribute faults to a model; target firmware rollouts
firmwareVersionConfirm updates actually installed; correlate regressions
chargePointSerialNumberIdentity, warranty, asset tracking
meterType / meterSerialNumberMetrology compliance and billing dispute evidence
iccid / imsiSIM inventory and connectivity troubleshooting

The boot pattern itself is diagnostic. A charger sending BootNotification every few minutes is in a reboot loop — a fault no availability metric will show you, because between reboots it reports as fine. Alert on boot frequency, not just on boot failure.

What happens after a reboot

A reboot is not free. Depending on the vendor and how it happened:

  • Queued offline transactions may or may not survive. A hard reset is materially more likely to lose them than a soft one.
  • Configuration may have reverted, particularly after a firmware install. Re-apply rather than assume.
  • Active sessions end. Expect StopTransaction with reason Reboot or PowerLoss.
  • The charger re-reports status for every connector, so treat post-boot status as authoritative and discard what you held before.

Using the boot as a trigger to reconcile — verify configuration, check firmware version, refresh status — turns an unavoidable event into a consistency checkpoint.

Production lessons

  • Use Pending to provision before first use. It is what the status exists for.
  • Reject unknown serials with a long retry interval and log every one.
  • Persist every boot as an inventory record, not just the latest state. The history is what makes it useful.
  • Alert on boot frequency to catch reboot loops that availability metrics hide.
  • Set interval per charger here rather than pushing configuration changes fleet-wide.
  • Re-verify configuration after every boot following a firmware change.
  • Serve currentTime from a synchronised clock — this is the charger's first clock set, and every timestamp it produces afterwards inherits it.

Frequently asked questions

What does OCPP BootNotification do?

It is the first message a charge point sends after connecting. The charger reports its vendor, model, serial numbers, firmware version and modem details, and the CSMS responds with Accepted, Pending or Rejected plus the current time and the heartbeat interval.

What does a Pending BootNotification response mean?

The CSMS recognises the charger but is not ready to let it operate. It cannot start transactions and will retry after the given interval. This is the correct window in which to push configuration, a local authorisation list or a firmware update before the charger serves its first driver.

When should a CSMS reject a BootNotification?

For unknown serial numbers, and for units that have been decommissioned. Rejecting with a long retry interval prevents unknown hardware from operating and stops a fleet of rejected chargers from hammering the CSMS. Accepting anything that connects means your inventory is defined by whatever dials in.

How can BootNotification be used for fleet management?

Every boot carries a full hardware and firmware census — vendor, model, serials, firmware version, meter type and SIM identifiers. Persisted over time this gives asset tracking, firmware rollout verification and fault attribution by model. Boot frequency also reveals reboot loops that availability metrics hide.