Charging data delivery
Deliver charge sessions as CSV keyed on your customer number, or let customers link their own charger.
Charging data delivery
Each tenant has one charging data source, configured by Joulo:
- Customer-linked (
user) • the customer connects their own charger in the onboarding wizard and Joulo syncs the sessions from the charger backend. You deliver nothing; skip the rest of this page. - CPO-delivered (
tenant) • you deliver the sessions, keyed on the customer number. The charger-link step is removed from onboarding and the customer dashboard shows the latest delivery date.
CSV delivery
Upload a session export in the admin portal under Imports
(/admin/imports). One row per charge session, semicolon-delimited,
with a header row:
contract;customer;MID;EVSE-Id;Manufacturer;Model;Serialnumber;"session start";"session stop";"total energy (kWh)";"session ID"
1707830;1706679;true;NL*XYZ*E0013982*001;Alfen;"Eve Single Pro-line 22kW cable";ace0013982;"2026-01-10 12:02:18";"2026-01-10 14:18:54";24.2000;82227874Columns
| Column | Required | Description |
|---|---|---|
customer | yes | Your customer number. Must match the number the customer registered with (SSO sub or the signup form). |
MID | yes | true/false (also accepts 1, ja, yes). Whether the session was measured by a MID-certified meter. |
session start | yes | YYYY-MM-DD HH:mm:ss. Determines the month the energy is booked in. |
total energy (kWh) | yes | Session energy. Both 24.20 and 24,20 are accepted; European thousands formatting (1.234,56) is handled. |
contract | no | Contract number, used as fallback matching key when the customer number does not match. |
EVSE-Id | no | Charge point id. Parsed per customer; not currently shown in the import report. |
Manufacturer | no | Charger manufacturer, e.g. Alfen. Used to verify MID status against the charger catalog. |
Model | no | Charger model. |
Serialnumber | no | Meter/charger serial number. |
session stop | no | Ignored for booking; the start timestamp determines the month. |
session ID | no | Your session reference. |
Practical notes:
- Column order does not matter and header matching is tolerant of casing and punctuation.
- A comma-delimited file also works; the delimiter is detected from the header row.
- UTF-8, with or without BOM; any line-ending style.
What happens on import
- Rows with
MID=falseare skipped: only MID-metered kWh counts toward ERE. The report shows how many rows were skipped for this reason. - Sessions are rolled up to monthly totals per customer. You keep the raw sessions; Joulo books the month aggregate.
- Customers are matched on customer number first, contract number as fallback. Unmatched customers are listed in the import report so you can see who has kWh waiting but no registration yet.
- Re-importing a month overwrites that month for the customers in the file. Delivering a cumulative or overlapping export is safe; totals never double-count. Each delivery must contain the complete month, though: a re-import replaces the stored month total rather than adding to it, so a file with only part of a month would lower it.
The import report shows rows counted, rows skipped (non-MID and rows with missing or unreadable fields), matched and unmatched customers, and the months written.
Deliver at least monthly. The dashboard shows customers the date of the latest delivery, and ERE submission follows the delivered months.
REST delivery
Programmatic session delivery over REST is available for CPOs on the
Integrated API: push monthly kWh totals per account with
POST /v1/sessions:batch, on the same data model as the
CSV (MID-metered kWh, idempotent per month). Use it instead of CSV uploads when
you run your own onboarding through the API.