If every charging network needs its own app, account, wallet and private integration, the market has not solved charging. It has moved fragmentation from the physical network into software.
A consumer app can be useful. It can show chargers, start sessions, manage payments and provide support. But it does not solve interoperability by itself. The more important infrastructure is the set of contracts that lets one operator's charging assets be discovered and used through another provider's customer relationship.
That is the problem OCPI, the Open Charge Point Interface, is designed to address. The EVRoaming Foundation describes OCPI as a free and independent protocol connecting eMobility Service Providers, which serve drivers, with Charge Point Operators, which manage charging stations. It supports bilateral connections and roaming hubs.1
As of September 2026, the EVRoaming Foundation identifies OCPI 2.3.0 as the current release. OCPI 3.0 is under development, so this article describes the production concepts in 2.3.0 and treats future-version behavior separately.1
The fragmentation problem starts small and becomes expensive
Imagine three charging operators in Lagos, two in Nairobi and one in Kigali. Each has its own backend. Some run different charger vendors. Each has a different API for locations, status and pricing. A mobility platform wants to show all six networks and let a driver start a session.
Without a common interface, the mobility platform builds six adapters. Then every operator changes an endpoint, field name or authentication scheme on its own schedule. Add another aggregator and the integration graph doubles again. Eventually the market is spending engineering time translating the same concepts between proprietary schemas.
OCPI standardizes that business-to-business boundary. The official specification says it enables scalable automated roaming between CPOs and eMSPs and supports authorization, charge-point information, transaction events, charge detail records, remote commands and smart-charging information.2
A driver-facing product should not need to understand every charger vendor. It should understand a stable mobility contract. Likewise, a CPO should not have to expose its internal database schema to every partner.
CPOs own charging operations. eMSPs own the driver relationship.
OCPI is easiest to understand when the roles are clear.
The OCPI 2.3.0 terminology documentation shows the typical module direction for these roles. Locations, sessions, tariffs and CDRs normally originate from CPO-side systems, while tokens normally originate from the eMSP side. Commands usually travel from eMSP toward CPO.3
This division is useful because it creates ownership. One party is authoritative for a particular object and the other party synchronizes it rather than inventing a second truth.
OCPI is not OCPP, and you usually need both boundaries
This is one of the most common architecture confusions in EV software.
The Open Charge Alliance defines OCPP as standardized communication between a charging station and a charging-station management system.4 That is the hardware-to-backend boundary. OCPI is the platform-to-platform roaming boundary.
A charger can be perfectly OCPP-compliant and still be commercially isolated from other networks if the operator exposes no roaming layer. Conversely, an eMSP can speak OCPI but still depend on the CPO backend to translate a remote start request into the protocol understood by the physical charger.
What OCPI actually exchanges
OCPI 2.3.0 describes a set of functional modules. Credentials and registration are required; most other modules are optional and can have dependencies.5
Credentials
The platforms exchange credentials tokens and version endpoints. The specification requires OCPI requests to carry a credentials token in the Authorization header.6
Locations
CPO systems share Locations containing EVSEs and connectors, including status and other operational data. Locations can be pushed to partners or pulled.7
Tariffs
The CPO communicates the tariff objects that apply to charging. The eMSP can then show price information without hard-coding one operator's pricing model.8
Tokens
The eMSP shares driver token information so CPOs can authorize charging and associate a later charge detail record with the correct mobility provider.9
Sessions
During charging, session state can be synchronized so the eMSP knows where the session is happening, how much energy has been delivered and what it is costing.10
CDRs
A Charge Detail Record provides the finalized charging record used for downstream billing and reconciliation, including energy, charging periods and total cost.11
Commands
Commands support actions such as remote start, remote stop, reservation and connector unlock. The specification deliberately makes command completion asynchronous because the physical charger may sit behind slower or unreliable connectivity.12
A roaming charging session is a distributed transaction
From the driver's perspective, a session can feel simple: find charger, tap start, charge, stop, pay. Across systems, it is a sequence of state changes with different owners.
Discovery
The eMSP receives the CPO's location, EVSE, connector and tariff data and exposes the relevant subset to the driver.
Authorization
The driver presents a token or sends a remote command. The CPO determines whether charging is authorized.
Start
If remote start is used, the eMSP sends a command. The CPO acknowledges whether it can attempt the command, then the result arrives asynchronously.
Session
The CPO publishes changing session state, including energy delivered and cost information where applicable.
Completion
The charging session ends, whether by the driver, charger, CPO or fault path.
CDR and settlement
The CPO sends the final charging record. The commercial systems can then invoice, settle or reconcile according to the parties' agreement.
The protocol does not remove distributed-systems problems. It gives those problems a shared language.
How I would architect an OCPI layer
I would keep OCPI outside the core charger-control domain. The internal CPO model should be able to evolve without leaking every internal table into the roaming contract.
The protocol edge should validate country codes, party IDs, object identifiers, timestamps, pagination and version compatibility before domain logic runs. It should also preserve the partner request ID and enough raw context to investigate disputes later.
I would use an internal canonical model and map OCPI objects into it. That prevents the rest of the platform from becoming permanently shaped around one protocol version.
The difficult part is not the happy path
Roaming systems live in partial failure. A remote-start request can be accepted by the CPO backend while the charger is temporarily unreachable. A Session update can arrive late. A tariff can change while a location replica is stale. A CDR can be retried. A partner can time out after the receiving system has committed the request.
The Commands module itself reflects this reality by separating request acceptance from the later command result.12 That is exactly the right mental model for the rest of the integration: do not collapse "request received," "operation attempted" and "physical action completed" into one boolean.
Every externally initiated operation should have an idempotency strategy, a durable state machine, bounded retries and a reconciliation path. HTTP 200 is not proof that a vehicle received energy.
It is also important to distinguish protocol credentials from driver tokens. OCPI 2.3.0 uses credentials tokens for platform authentication, while the Tokens module deals with credentials used to authorize drivers or charging. The specification explicitly separates those concepts.6
Why this matters specifically as African charging networks emerge
The argument is not that Africa should copy Europe's market structure. It is that open interfaces become more valuable before fragmentation hardens.
African EV deployment is likely to remain heterogeneous. Some markets will be bus-heavy. Others will scale motorcycles, ride-hailing or corporate fleets first. Energy companies, property owners, fleet operators and dedicated CPOs may all own charging assets. If each network grows behind a proprietary wall, regional expansion becomes an integration tax.
The IEA expects charging infrastructure to continue expanding rapidly as EV adoption grows, while the World Bank and African Development Bank are already framing charging as part of a broader transport and energy investment problem.1314 In that environment, interoperable software contracts are infrastructure, not a cosmetic developer feature.
OCPI also allows bilateral connections. A market does not need a giant central roaming hub before two networks can interoperate. That is useful for early ecosystems where only a few serious operators exist.
What I would build before another consumer charging app
A canonical CPO data model
Stable internal objects for locations, EVSEs, connectors, tariffs, authorization, sessions and CDRs.
Reliable charger operations
OCPP or equivalent hardware control, monitoring, remote diagnostics and deterministic transaction handling.
An OCPI edge
Version negotiation, credentials exchange, module endpoints, validation and partner-specific routing without contaminating the core domain.
Reconciliation
Session-to-CDR checks, tariff validation, duplicate detection, partner delivery status and commercial exception queues.
Observability
Per-partner error rates, stale data, command latency, CDR backlog and protocol-version visibility.
Then build the app
The app becomes much more valuable once it can sit on top of several networks instead of being a polished front end for one isolated backend.
Consumer experience still matters. But the strongest consumer experience is built on infrastructure that lets the customer move across networks without understanding the commercial boundaries underneath.
The network should be the product. The app should be one client of it.
Protocol and market references
- EVRoaming Foundation, OCPI overview. Current release, purpose, bilateral use and roaming-hub support.
- OCPI 2.3.0 Introduction. Official protocol scope and roaming capabilities.
- OCPI 2.3.0 Terminology. Market roles and typical sender/receiver module directions.
- Open Charge Alliance. OCPP boundary between charging stations and central systems.
- OCPI 2.3.0 Version Information. Core module identifiers and version discovery.
- OCPI Credentials module. Platform registration and credentials-token exchange.
- OCPI Locations module.
- OCPI Tariffs module.
- OCPI Tokens module.
- OCPI Sessions module.
- OCPI CDRs module.
- OCPI Commands module. Remote start, stop, reservation and asynchronous command results.
- IEA, Global EV Outlook 2026. Global charging-infrastructure expansion and outlook.
- African Development Bank, July 2026. African green-mobility investment and charging support.
