This guide covers what eMSPs must call on Hub and implement as receivers on their platform.
Your responsibilities
As an eMSP, you offer drivers access to charging networks. The Hub routes your authorization and commands to CPOs, and delivers session/CDR updates asynchronously.
Call Hub (authenticated)
| Module | Methods | Purpose |
|---|---|---|
| Tokens | PUT .../authorize | Realtime authorization before charging |
| Commands | POST .../commands/{command} | Start, stop, reserve, cancel |
| Locations | GET | Discover charge points (routing-filtered) |
| Tariffs | GET | Retrieve pricing (routing-filtered) |
Token authorization
Before a driver starts charging, authorize their token:
PUT /ocpi/2.2.1/tokens/{country_code}/{party_id}/{token_uid}/authorize
The Hub forwards this to the owning CPO in realtime. Rate limit: 100 requests/minute per party.
Remote start
Send a start command with response_url for async results:
POST /ocpi/2.2.1/commands/START_SESSION
Content-Type: application/json
{
"response_url": "https://your-platform.com/ocpi/callbacks/commands",
"token": { "uid": "...", "type": "RFID", "contract_id": "..." },
"location_id": "LOC001",
"evse_uid": "EVSE001",
"connector_id": "1"
}
For STOP_SESSION, include session_id instead of location fields.
Pull locations and tariffs
GET /ocpi/2.2.1/locations?offset=0&limit=50 GET /ocpi/2.2.1/tariffs?offset=0&limit=50
Results are filtered by routing rules. See Pagination.
Locations and tariffs are pull-only on the Hub. The Hub does not push location or tariff updates to eMSPs — poll periodically or on demand.
Receive from Hub (on your platform)
You must implement these receiver endpoints:
| Module | Method | Purpose |
|---|---|---|
| Sessions | PUT .../sessions/{cc}/{pid}/{id} | Async session updates from Hub |
| CDRs | POST /ocpi/2.2.1/cdrs | Async CDR delivery from Hub |
The Hub does not expose GET endpoints for eMSPs to pull sessions or CDRs. You must implement receivers — the Hub worker pushes data asynchronously.
Provide your session and CDR receiver URLs to your account team during onboarding.
Command async results
Command results arrive at your response_url (forwarded by Hub from CPO callback). Handle ACCEPTED, REJECTED, TIMEOUT, and session-related result types per OCPI 2.2.1.
Integration checklist
- [ ] Credentials exchange complete
- [ ] Routing rules enabled for target CPOs
- [ ] Token authorization flow tested
- [ ] START_SESSION / STOP_SESSION tested end-to-end
- [ ] Session receiver endpoint live
- [ ] CDR receiver endpoint live
- [ ] Location/tariff pull integrated
- [ ]
GET /ocpi/versionsreachable for health checks