Skip to main content
engineeringJanuary 20, 2026

OCPI CDR Billing: How EV Charging Roaming Payments Actually Work

A technical breakdown of OCPI Charge Detail Records (CDRs) — how billing flows between CPOs and eMSPs, tariff calculation, and common integration pitfalls.

At a glance

OCPI CDR billing is where roaming interoperability becomes commercial reality. Small implementation mistakes in tariffs, rounding, or reconciliation quickly turn into payment disputes.

CPO and eMSP integration teamsBilling and settlement ownersBuyers evaluating roaming-ready charging platforms
  • CDR accuracy depends on session quality, tariff logic, and consistent rounding.
  • Reconciliation should be designed in from day one, not added after disputes appear.
  • Buyers should test roaming and billing workflows during evaluation, not after launch.
Y
Yacine El Azrak
Co-founder & CEO
6 min read

The billing chain

When a driver charges their EV on a roaming network, money flows through a chain of parties:

Driver pays the eMSP (their service provider), who pays the CPO (the network operator), who pays for the electricity and infrastructure.

OCPI CDRs (Charge Detail Records) are the documents that make this chain work. They're the invoices of the EV charging world.

What finance and operations need before go-live

Most CDR problems are not discovered by protocol engineers. They are discovered when finance cannot reconcile invoices, support cannot explain a charge, or a roaming partner rejects a settlement file.

Before launch, rollout teams should be able to answer:

  • which session record is the source of truth when charger data and backend data disagree
  • how tariff versions are linked to a session at the moment charging starts
  • how rounding and tax rules are applied and audited
  • who investigates missing, duplicated, or disputed CDRs

If those answers do not exist, billing is not launch-ready even if the OCPI endpoints respond correctly.

Anatomy of a CDR

A CDR captures everything needed to calculate and verify a charging session's cost:

Session identification

  • CDR ID — unique identifier
  • Session ID — links to the real-time session record
  • Start/stop timestamps — when charging began and ended
  • Auth reference — which token was used and how

Location details

  • Location ID, EVSE UID, Connector ID — exactly where the charging happened
  • Connector type and power — AC/DC, kW rating

Charging data

  • Total energy — kWh delivered
  • Charging periods — time segments with different tariff conditions
  • Meter values — start and end meter readings

Cost calculation

  • Tariff ID — which pricing structure was applied
  • Total cost — the final amount including taxes
  • Currency — ISO 4217 currency code

How charging periods work

This is where OCPI billing gets interesting. A single session can have multiple charging periods, each with different pricing rules.

Consider this scenario: a driver charges for 2 hours at a station with time-of-day pricing.

Period 1: 17:00 - 18:00 (peak rate)
  - Energy: 15 kWh × €0.45/kWh = €6.75
  - Time: 60 min × €0.10/min = €6.00

Period 2: 18:00 - 19:00 (off-peak rate)
  - Energy: 20 kWh × €0.30/kWh = €6.00
  - Time: 60 min × €0.05/min = €3.00

Total: €21.75

Each period has dimensions that describe what's being charged:

  • ENERGY — per kWh
  • TIME — per minute of charging
  • PARKING_TIME — per minute after charging completes
  • FLAT — one-time fee

The CDR lifecycle

1. Session starts

When a roaming session begins, the CPO creates a session record and pushes real-time updates to the eMSP via the OCPI Sessions module.

2. Session ends

When the driver stops charging, the CPO finalizes the session and calculates the total cost.

3. CDR generation

The CPO generates a CDR with the complete cost breakdown. This is the canonical billing record.

4. CDR delivery

The CDR is pushed to the eMSP via the OCPI CDRs module. The eMSP validates it against the session data they received during charging.

5. Settlement

The eMSP invoices the driver and remits payment to the CPO (minus their commission). Settlement terms vary by agreement — typically monthly.

Tariff calculation pitfalls

Rounding errors

OCPI specifies that costs should be calculated per charging period and rounded to the smallest currency unit. Rounding at the wrong level (per dimension instead of per period) causes discrepancies between CPO and eMSP calculations.

Step tariffs

Some tariffs have thresholds: "First 50 kWh at €0.30, then €0.25/kWh." If your tariff engine doesn't handle step functions, you'll overcharge or undercharge.

Parking time ambiguity

When does parking time start? OCPI says it starts when energy delivery stops but the vehicle remains connected. Some implementations start it when the session is authorized but before energy flows. Align with your roaming partners.

VAT handling

OCPI CDRs include total_cost (with tax) and optionally total_fixed_cost, total_energy_cost, total_time_cost, total_parking_cost. Ensure your tax calculations match your roaming partner's expectations.

Reconciliation

CDR reconciliation is the process of ensuring that CPO and eMSP records agree. Discrepancies happen due to:

  • Clock drift — charger and backend clocks diverge
  • Meter accuracy — physical meters have tolerances
  • Tariff interpretation — different implementations of the same tariff specification
  • Network issues — CDRs lost in transit

Build reconciliation into your system from day one. Compare CDRs against session data, flag outliers, and investigate discrepancies before they become financial disputes.

Minimum acceptance tests before settlement starts

Treat these as go-live gates, not optional QA:

  1. Session-to-CDR matching: every completed roaming session should produce exactly one expected billing record.
  2. Tariff replay: rerun known sample sessions against the tariff engine and confirm the same totals are produced repeatedly.
  3. Rounding checks: test low-value, edge-threshold, and long-duration sessions where small mistakes compound.
  4. Partner reconciliation: exchange sample CDRs with at least one roaming partner and compare totals field by field.
  5. Exception workflow: verify teams can identify, reprocess, and annotate a disputed or missing CDR without manual spreadsheet work.

If your vendor cannot walk through these tests, the platform is not proving billing readiness. It is only proving API availability.

How EV Cloud handles CDR billing

EV Cloud can automate the CDR lifecycle and reduce manual billing work:

  • Automatic CDR generation from OCPP transaction data
  • Tariff engine supporting all OCPI pricing models (energy, time, parking, flat, step)
  • Real-time session sync with eMSP partners
  • Reconciliation dashboard showing CDR status and discrepancies
  • Export in OCPI-compliant JSON format

That matters most when finance, support, and partner operations need one place to inspect how a total was produced and where a discrepancy started.

Turn billing complexity into a platform decision

If roaming billing is central to your business model, do not evaluate vendors only on charger connectivity.

Use the EV charging software RFP checklist to pressure-test tariff handling, reconciliation, and export workflows. Then use the comparison hub and the pricing page to move from protocol fit into rollout and commercial fit.

Frequently asked questions

Short answers for operators evaluating this topic in production.

Continue evaluation

Turn this topic into a buying decision

Roaming and billing decisions usually expose the platform constraints underneath them. Use these pages to evaluate the architecture and vendor model behind the workflow.

From content to rollout

Need help applying this in a live EV charging stack?

EV Cloud helps operators connect chargers, roaming partners, and internal platforms without rewriting their entire backend. Use the guide above for strategy, then use the product pages below for rollout planning.