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.75Each period has dimensions that describe what's being charged:
ENERGY— per kWhTIME— per minute of chargingPARKING_TIME— per minute after charging completesFLAT— 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:
- Session-to-CDR matching: every completed roaming session should produce exactly one expected billing record.
- Tariff replay: rerun known sample sessions against the tariff engine and confirm the same totals are produced repeatedly.
- Rounding checks: test low-value, edge-threshold, and long-duration sessions where small mistakes compound.
- Partner reconciliation: exchange sample CDRs with at least one roaming partner and compare totals field by field.
- 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.