
Moving an EV charging network from a simple power-delivery setup to a fully connected, grid-aware system is not a small step.
There are many moving parts to manage, many compatibility questions to answer, and a lot of code to rethink.
That is why we have put together this guide to help charging point operators, software developers, and fleet managers understand what OCPP 2.1 V2G features actually change and how to act on it.
On January 23, 2025, the Open Charge Alliance officially put out OCPP 2.1. The International Electrotechnical Commission also took it on as IEC 63584-210.
OCPP 2.1 V2G features brought a hard break from 1.6. The shift changed how devices were modeled, how transactions were handled, and how security was layered in. Many teams found that transition difficult.
OCPP 2.1 V2G features are different. Built directly on top of 2.0.1, the three-tier Device Model, the message structures, and the security profiles all stay in place. What 2.1 adds sits on top of that base without disturbing it.
The additions are substantial. The spec covers over 377 pages of errata and new use-case sections. The main areas of change are:
The most significant technical change in OCPP 2.1 V2G features is how the protocol handles Vehicle-to-Everything. Before this OCPP 2.1 release, bidirectional charging was largely proprietary.
Teams added custom extensions to OCPP 1.6 or fell back on CHAdeMO standards. There was no uniform way to carry this out across different hardware and software stacks.
OCPP 2.1 changes this by folding native support for ISO 15118-20 directly into the protocol. This gives every participant in the charging chain, from the vehicle to the station to the management system, a common, cryptographically secure way to handle bidirectional energy flows.
On the security side:
Because the vehicle has no direct link to the local grid operator, the charging station steps in as an edge proxy. The station picks up grid parameters via OCPP and converts them into ISO 15118-20 format before passing them down to the vehicle.
OCPP 2.1 V2G features are set up to handle both the vehicle's internal battery as a short-term storage node and a permanent stationary battery sitting alongside a fast-charging unit to absorb peak demand.
The OCPP 2.1 V2G features draw on the expanded Device Model from 2.0.1 to map the physical attributes of a battery system into logical variables that the management system can read and write. In OCPP 1.6, the battery gave back very little data. In 2.1, individual parts, including separate power converter modules, can each be picked out by their own standardized names.
The main data variables available for storage control are:
Energy arbitrage is a central use case here. Storing energy when grid prices are low and releasing it when prices go up is the economic basis of most BESS setups. OCPP 2.1 V2G features support this by working with structured tariff models that tie in with roaming protocols like the Open Charge Point Interface. The management system can send time-of-use or real-time pricing schedules directly to the local battery controller.
In a practical scenario:
Every energy movement is logged via signed meter values, keeping everything auditable under metering laws.
Utility regulators now put high-capacity charging stations in the same category as commercial solar arrays or grid-scale battery farms. This means they must meet compliance requirements and take on grid-stabilization duties.
Utilities typically use protocols like IEEE 2030.5, IEC 61850, or OpenADR 3.0 to manage distributed resources. OCPP 2.1 V2G features act as a translation layer between these utility protocols and the charging station.
A management system or an on-site proxy controller picks up signals from the grid operator via IEEE 2030.5 and turns them into OCPP commands the station can act on straight away.
The specific control options this opens up include:
The move from OCPP 1.6 to 2.0.1 was notoriously difficult. Backward compatibility was dropped entirely. Networks that wanted to upgrade often had to run two separate IT setups side by side or swap out hardware that lacked the memory to handle the larger payloads and mandatory cryptography of the newer standard.
OCPP 2.1 V2G features take a fundamentally different path. Backward compatibility with 2.0.1 is a design principle, not an add-on. All application logic, variable structures, and baseline message routing built for 2.0.1 carry over fully into a 2.1 setup.
How the process plays out in practice:
New features in 2.1 come in through new use cases, new messages, or optional non-breaking fields added to existing 2.0.1 messages. New variables for bidirectional transfer or local payment terminals slot into the existing Device Model without touching the underlying database schema. Software stacks built for 2.0.1 only need small, modular updates rather than a full rewrite.

For hardware manufacturers and network architects still running OCPP 1.6, the question is whether to move to 2.0.1 first or jump straight to 2.1. The answer depends on deployment type, timeline, and primary business goals.
Going straight to 2.1 makes sense when:
Staying on or moving to 2.0.1 first makes sense when:
The most workable strategy for current procurement is to set 2.0.1 compliance as a contractual baseline, while legally requiring the vendor to follow through with a clear firmware upgrade path to 2.1 as soon as certification is available.
Teams building on OCPP 2.1 V2G features have come across consistent patterns across engineering forums, open-source projects like the Linux Foundation's EVerest project, and developer communities. The lessons below reflect what is actually happening in production builds.
Break up your code structure early. The number of variables and use cases in OCPP 2.x makes a single-class codebase unworkable. Teams are splitting their codebases into separate functional blocks, such as Authorization, Security, Reservations, and Smart Charging. This makes each block testable on its own and easier to keep up as the spec moves forward.
Use the facade pattern to support both 2.0.1 and 2.1. A single interface to the shared logic lets both protocol versions run through a common gateway without copying large amounts of code. Many teams put 2.0.1 and 2.1 under a single namespace to keep them clearly separated from older 1.6 code. New 2.1 variables can be added to JSON configurations without touching the database.
Test the backend before buying hardware. The lack of good testing environments for 2.x has held teams back. Major emulator providers have not yet fully caught up with the new Device Model. Community-built tools have stepped in to fill the gap:
Set up a local proxy for home energy management and V2G. Direct communication between a cloud management system and a residential charger is often too slow for real-time grid balancing. Field guidelines from ElaadNL point to a local OCPP 2.1 controller sitting between the charger and the cloud. This local controller:
No. OCPP 2.1 V2G features are designed to be backward compatible with 2.0.1. Version negotiation during the WebSocket handshake lets the management system fall back to 2.0.1 automatically when connecting to older hardware. The transaction logic, TLS 1.2+ security profiles, and Device Model structures are the same across both versions. Developers add new functional blocks in a modular way without touching the existing architecture.
OCPP 1.6 used separate, fragmented messages that broke down under state-machine errors when the network was unstable. OCPP 2.x brought these together into a single transaction event request. Version 2.1 goes further by letting the station work out session costs entirely offline. The station also picks up external payment terminals, dynamic QR code generation, and prepaid limits based on energy imported, time elapsed, or fiat cost.
Yes. The protocol is modular by design. OCPP 2.1's support for ISO 15118-20 covers bidirectional charging, but the cryptographic elements can be used for automated authentication and billing on their own. Setting the control mode to ChargingOnly means the station carries out Plug and Charge sessions normally while blocking any energy from being sent back from the vehicle.
In most cases, no. Moving from 1.6 to 2.x is not a software update. The hardware must be able to handle Transport Layer Security, cryptographic certificate management, and the much larger payload sizes of JSON messages in the 2.x architecture. Most older microcontrollers in 1.6 hardware do not have the memory or processing power to meet these requirements.
OCPP 2.1 V2G features puts the charging station in the Distributed Energy Resource category and brings in dedicated control blocks for turning utility grid signals into station-level actions. The management system or a local controller can adjust the power factor, set frequency droop curves, and configure ramp-rate limits. This lets the station hold up grid voltage and frequency stability actively or passively, without waiting for manual steps from an operator.


