OCPI 2.3.0 - Open Charge Point Interface
Front matter of the OCPI 2.3.0 specification. This document covers the protocol overview, copyright information, complete version history, document revision policy, and the full table of contents for all 19 chapters.
1. Overview
IntroductionOCPI (Open Charge Point Interface) is a protocol developed by the EVRoaming Foundation that enables EV charging networks to exchange data and interoperate. This document covers the front matter of the OCPI 2.3.0 specification, including version history, copyright information, and the full table of contents.
About OCPI
Open Charge Point Interface
OCPI enables scalable, automated EV roaming connections between operators and service providers. It supports peer-to-peer and hub-based communication topologies.
Interoperability
OCPI covers location data exchange, session management, CDR handling, tariff information, token authorization, remote commands, smart charging profiles, and more.
Extensible Protocol
Version 2.3.0 makes OCPI extensible, adds vehicle types to EVSE, parking objects, disability information, North American tax support, 15118 Plug and Charge compatibility, and new Payments and Bookings modules.
Booking Support
The latest revision (2.3.0-booking-1.0) introduces the Bookings Module, enabling advance reservation of charging slots through the OCPI protocol.
Document Version
This documentation corresponds to OCPI 2.3.0-booking-1.0, dated 2025-06-13. This version builds on OCPI 2.3.0 (released 2025-01-16) and adds the Bookings Module.
2. Copyright & License
LegalCopyright Notice
Copyright © 2014 – 2025 EVRoaming Foundation. All rights reserved.
This document is made available under the Creative Commons Attribution-NoDerivatives 4.0 International Public License (https://creativecommons.org/licenses/by-nd/4.0/legalcode).
EVRoaming Foundation
OCPI is developed and managed by the EVRoaming Foundation. The EVRoaming Foundation is a contributor based organisation. Everyone can join the EVRoaming Foundation via https://www.evroaming.org.
The EVRoaming Foundation aims to keep OCPI as free from IPR as possible. If you want to contribute by adding new functionality or features, you are required to send them the signed Contributor Agreement (CA) document before contributing.
Contributing
To get the Contributor Agreement (CA), send an email to:
You must submit the signed CA before any contributions to the protocol will be accepted.
3. Version History
ReferenceComplete history of all OCPI protocol versions and documentation revisions, from the initial draft to the latest release.
| Version | Date | Author | Description |
|---|---|---|---|
2.3.0-booking-1.0 | 2025-06-13 | Boudewijn Groeneboer (ihomer), Niclas Rinman (Volvo) | Add Bookings Module |
2.3.0 | 2025-01-16 | Greg Fitzpatrick (ChargeHub), Petar Jovevski (Metergram), Robert Gliguroski (Metergram), Philipp Fischbacher (ChargePoint), Reinier Lamers (SWTCH Energy) | Make OCPI extensible; Add vehicle types to EVSE; Add list of accepted eMSPs to EVSE; Add a Parking object linked to EVSE; Information for people with disabilities; Support for North American taxes; 15118 Plug and Charge compatibility flags on Connectors; Make Hub support incremental from regular multi-party Platform support; Add Payments Module |
2.2.1-d2 | 2023-09-07 | Jakub Karbownik (Ekoenergetyka), Rudolph Froger (TandemDrive), Robert de Leeuw (EVA Global), Reinier Lamers (ihomer) | Documentation update. |
2.2.1 | 2021-10-06 | Robert de Leeuw (ihomer), Reinier Lamers (ihomer) | Final release of OCPI 2.2.1. Added country_code and party_id to CdrToken class.
Fixed datatype of CDR SignedData URL. Improved some descriptions. Fixed length of CDR
SignedData, increased to 5000. Change signed data related fields to string.
postal_code optional in CdrLocation. state added to CdrLocation. AC_2_PHASE and
AC_2_PHASE_SPLIT added to PowerType in Connector. Additional types added to
ConnectorType in Connector. Added connector_id to StartSession command and START_SESSION_CONNECTOR_REQUIRED to EVSE Capabilities. Added optional field: home_charging_compensation to CDR. Improved description/examples Tariff for step_size. |
2.2-d2 | 2020-06-12 | Robert de Leeuw (ihomer) | 2nd documentation revision of the OCPI 2.2 spec. Contains textual improvements and
fixes some of the examples. Most improvements in the tariffs module, especially step_size is better explained. |
2.2 | 2019-09-30 | Robert de Leeuw (ihomer) | Added support for Roaming Hubs. Adds support for Platforms with multiple/different roles, additional roles. Adds support for smart charging. Lots of improvements to existing modules. See changelog. |
2.1.1-d2 | 2019-06-21 | Robert de Leeuw, ihomer | Fixes the command module documentation, fixes a lot of examples, lots of small textual improvements: see changelog. |
2.1.1 | 2017-06-08 | Robert de Leeuw (ihomer) | Fixed 4 bugs found in OCPI 2.1, lots of small textual improvements: see changelog. |
2.1 | 2016-04-08 | Robert de Leeuw (ihomer) | Added command module. Added support for real-time authorization. Lots of small improvements: see changelog. |
2.0-d2 | 2016-02-15 | Robert de Leeuw (ihomer) | 2nd documentation revision of the OCPI 2.0 spec. Only documentation updated: ConnectorType of Connector was not visible, credentials clarified, location URL segments incorrect (now string, was int), minor textual updates. DateTime with timezones is still an issue. |
2.0 | 2015-12-30 | Robert de Leeuw (ihomer), Simon Philips (Becharged), Chris Zwirello (The New Motion), Simon Schilling | First official release of OCPI. |
0.4 | 2014-11-04 | Olger Warnier (The New Motion) | First draft of OCPI. (Also known as Draft v4) |
0.3 | 2014-05-06 | Olger Warnier (The New Motion) | First draft of OCPI. (Also known as Draft v3) |
4. Document Revisions
VersioningNaming Convention
There can be multiple documentation revisions of the same version of the OCPI protocol.
The newer documentation revisions of the same protocol version can never change the content of the messages: no new fields or renaming of fields. A new revision can only clarify/fix texts/descriptions and fix typos etc.
These documentation revisions (not the first) will be named: d2, d3, d4 etc.
Examples
OCPI 2.1.1 is a different protocol version of OCPI than OCPI 2.1. They
may have different message formats and fields.
OCPI 2.2-d2 is the same protocol version as OCPI 2.2, but a
newer documentation revision. The wire protocol is identical — only documentation text
has been improved.
5. Table of Contents
19 ChaptersComplete listing of all chapters in the OCPI 2.3.0 specification. Each chapter covers a specific aspect of the protocol, from core concepts to individual modules.
OCPI
Overview of OCPI versions (2.3.0, 2.2.1, 2.2) and introduction/background to the Open Charge Point Interface protocol.
Terminology and Definitions
Requirement keywords, abbreviations, EV charging market roles, terminology, provider/operator abbreviations, charging topology, variable names, cardinality, data retention.
Supported Topologies
Peer-to-peer, multiple peer-to-peer connections, dual roles, mixed roles, platforms via Hub, platforms via Hub and direct.
Transport and Format
JSON/HTTP implementation guide, security and authentication, authorization header, pull and push, request format (GET/PUT/PATCH), client owned object push, client owned object pull, response format, non-specified JSON fields, message routing, unique message IDs, interface endpoints, offline behaviour.
Status Codes
1xxx Success, 2xxx Client errors, 3xxx Server errors, 4xxx Hub errors.
Versions Module
ModuleVersion information endpoint, version details endpoint, endpoint class, InterfaceRole enum, ModuleID OpenEnum, VersionNumber OpenEnum.
Credentials Module
ModuleRegistration, updating to newer version, changing endpoints, updating credentials, errors during registration, GET/POST/PUT/DELETE methods, credentials object, CredentialsRole class.
Locations Module
ModuleFlow and lifecycle, sender/receiver interfaces, Location/EVSE/Connector/Parking objects, data types (GeoLocation, BusinessDetails, Capability, ConnectorFormat, ConnectorType, EnergyMix, Facility, Hours, Image, PowerType, Status, VehicleType, etc.).
Sessions Module
ModuleFlow and lifecycle (push/pull model, charging preferences, reservation), sender/receiver interfaces, Session object, ChargingPreferences object, SessionStatus enum.
CDRs Module
ModuleFlow and lifecycle (credit CDRs, push/pull model), sender/receiver interfaces, CDR object, data types (AuthMethod, CdrDimension, CdrLocation, CdrToken, ChargingPeriod, SignedData, SignedValue).
Tariffs Module
ModuleFlow and lifecycle, sender/receiver interfaces, Tariff object, data types (DayOfWeek, PriceComponent, PriceLimit, TariffElement, TariffDimensionType, TariffRestrictions, TariffType, TaxIncluded).
Tokens Module
ModuleFlow and lifecycle (push/pull model, real-time authorization), receiver/sender interfaces, AuthorizationInfo object, Token object, data types (AllowedType, EnergyContract, LocationReferences, TokenType, WhitelistType).
Commands Module
ModuleFlow, receiver/sender interfaces, objects (CancelReservation, CommandResponse, CommandResult, ReserveNow, StartSession, StopSession, UnlockConnector), data types (CommandResponseType, CommandResultType, CommandType).
ChargingProfiles Module
ModuleSmart charging topologies, use cases, flow, receiver/sender interfaces, objects (ChargingProfileResponse, ActiveChargingProfileResult, ChargingProfileResult, ClearProfileResult, SetChargingProfile), data types (ActiveChargingProfile, ChargingRateUnit, ChargingProfile, ChargingProfilePeriod, ChargingProfileResponseType, ChargingProfileResultType).
HubClientInfo Module
ModuleScenarios (CONNECTED, OFFLINE, PLANNED, SUSPENDED), flow and lifecycle, receiver/sender interfaces, ClientInfo object, ConnectionStatus enum.
Payments Module
New in 2.3.0Usage flows, terminal assignment, terminal activation, transaction, sender/receiver interfaces, Terminal object, Financial Advice Confirmation object, data types (InvoiceCreator, CaptureStatusCode).
Bookings Module
New in 2.3.0-bookingFlow and lifecycle, booking lifecycle from making to fulfillment, cancel booking from CPO, sender/receiver interfaces (BookingLocation and Calendar interface, Booking interface), objects (BookingLocation, Calendar, Booking), data types (BookingRequest, BookingTerms, BookableParkingOptions, Cancellation, AccessMethod, BookingRequestStatus, Timeslot, BookingToken, Bookable, LocationAccess, ReservationStatus, ReservationRequestStatus, CanceledReason).
Types
class, enum, OpenEnum, CiString, DateTime, DisplayText, number, Price, TaxAmount, Role, string, URL.
Changelog
Changes between versions (2.3.0 and 2.3.0-booking-1.0, 2.2.1-d2 and 2.3.0, 2.2.1 and 2.2.1-d2, OCPI 2.2 and 2.2.1, OCPI 2.1.1 and 2.2).