Articles Projects Glossary Map About

What is OCPP

History

In 2009, the Dutch government tasked a handful of EV companies with setting up charging stations across the Netherlands. When they began buying chargers from different manufacturers, they ran into a frustrating problem: every company used its own proprietary protocol to communicate with its chargers.

This made large-scale management nearly impossible. Operators would need a separate backend system (CSMS) for every brand of charger they purchased.

They started looking for an existing standard, but none existed. So they decided to build one themselves. They called it the Open Charge Point Protocol, or what we know today as OCPP.

The word “open” was deliberate. They wanted the protocol to be free to use, with no licensing fees and no restrictions, so that anyone, manufacturers, operators, software vendors, could adopt it without barriers. The goal was widespread adoption, and openness was the path to it.

The first version, OCPP 1.0, was released in 2010. It was basic by today’s standards, covering only the essentials needed to manage a simple charging session. But it was the foundation everything since has been built on.

OCPP Explained

What is it

OCPP (Open Charge Point Protocol) is the communication protocol between the charging station and the CSMS (Charging Station Management System).

It defines every message that travels between the charger and the backend, covering firmware updates, certificate management, remote starting and stopping a session, smart charging, meter values, and status reporting.

There are three main versions. OCPP 1.6 is the oldest and still the most widely deployed, but it is being phased out due to its limitations in security and features. OCPP 2.0.1 is the current industry standard, widely adopted and pushed as the gold standard by regulators. OCPP 2.1 is the newest version, released in January 2025. It builds on 2.0.1 with even more features, but it has not fully matured in production yet. For a detailed comparison, see OCPP 1.6 vs 2.0.1 vs 2.1 (coming soon).

How it works

The charger connects to the CSMS over the internet using a WebSocket, a persistent connection that stays open so either side can send messages at any time. The charger initiates the connection and sends a BootNotification, telling the CSMS “I’m online, here’s my model, here’s my firmware version.” From that point, the charger sends a Heartbeat at regular intervals, a simple ping that tells the backend “I’m still alive.” If heartbeats stop arriving, the CSMS knows something is wrong.

Every OCPP message is a request-response pair. The charger can send requests to the CSMS, like reporting its status or asking whether a driver is authorized. The CSMS can send requests to the charger, like starting a session remotely or pushing a firmware update. Both sides can initiate a message at any time because the connection is always open.