Why plug-in and plug-out timestamps are not enough
A charging session can remain connected while the vehicle pauses, reaches a limit, follows a schedule, or is constrained by site capacity. Session start and stop times therefore do not show when energy was actually delivered. Timestamped OCPP MeterValues can provide that detail when the charger sends them with usable units and transaction references.
Export modes
Raw meter values
The raw CSV preserves each retained sample with its UTC timestamp, transaction, charger, site, connector, measurand, phase, location, original value, and unit. Use this format when you need current, voltage, power, state of charge, or the exact energy-register series supplied by the charger.
15-minute and hourly energy
The interval exports use only Energy.Active.Import.Register samples with Wh, kWh, or MWh units. EVCharge converts consecutive cumulative values to a kWh delta. If a reading period crosses a UTC bucket boundary, the delta is allocated in proportion to elapsed time on each side of that boundary.
This proportional allocation is an estimate between two physical readings. A charger that reports every minute produces a more precise interval boundary than one that reports every hour.
15-minute and hourly energy with cost
Priced exports add the historical tariff components recorded while the session was billed: energy, transmission, market energy, each component's average net price per kWh, tax, currency, and total. A 15-minute row exposes that period's component price; an hourly row provides the volume-weighted average. The export uses stored charging-period costs rather than recalculating old sessions from today's tariff or market-price configuration.
Cost records are assigned to the UTC reporting bucket containing their stored pricing timestamp. Duplicate historical records for the same transaction, timestamp, and component are reduced to the latest record and marked deduplicated_history. Periods with meter energy but no recorded tariff cost are marked not_priced; an empty price is not the same as zero-cost charging.
How to export
- Open Reports in the CPO Portal and choose the date range.
- Choose raw meter values, interval energy, or interval energy and cost as the export format.
- Download the CSV and check its transaction, tariff, currency, pricing status, units, and UTC timestamps before using it downstream.
How to read phases and resets
- Phase-specific series remain separate. Do not add an aggregate “None” series to L1, L2, and L3 values from the same charger.
- A negative cumulative delta normally indicates a meter reset or replacement. EVCharge skips that segment instead of reporting negative consumption or bridging across the reset.
- Samples without a supported energy unit remain available in the raw export but are excluded from interval aggregation.
- Delivered energy comes from the selected cumulative register series. Priced energy comes from historical billing rows, so both columns remain visible for reconciliation.
- When aggregate and phase registers are both present, the priced export prefers the aggregate series instead of adding it to L1, L2, and L3.
- The export reflects what the charger reported. Confirm the meter configuration and installation requirements before using it for regulated billing.
Safety and access controls
Exports require report-read permission in the selected CPO workspace. Queries are scoped to that workspace and capped at 100,000 retained samples and 100,000 cost records per download; choose a shorter date range if a cap is reached. Export requests do not send commands to chargers or change charging sessions.
Example hourly row
Interval start (UTC),Interval end (UTC),Transaction,Charger,Site,Connector,Phase,Location,Energy (kWh),Contributing segments
2026-08-13T10:00:00.000Z,2026-08-13T11:00:00.000Z,4201,Garage A,Office,1,None,Outlet,6.842,12Need a different reporting shape?
If you need calendar-timezone buckets, automated delivery, a specific accounting schema, or meter-data API access, send us the required columns, interval, and downstream system. That is more useful than trying to infer requirements from a generic session CSV.