JouloDocs

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;82227874

Columns

ColumnRequiredDescription
customeryesYour customer number. Must match the number the customer registered with (SSO sub or the signup form).
MIDyestrue/false (also accepts 1, ja, yes). Whether the session was measured by a MID-certified meter.
session startyesYYYY-MM-DD HH:mm:ss. Determines the month the energy is booked in.
total energy (kWh)yesSession energy. Both 24.20 and 24,20 are accepted; European thousands formatting (1.234,56) is handled.
contractnoContract number, used as fallback matching key when the customer number does not match.
EVSE-IdnoCharge point id. Parsed per customer; not currently shown in the import report.
ManufacturernoCharger manufacturer, e.g. Alfen. Used to verify MID status against the charger catalog.
ModelnoCharger model.
SerialnumbernoMeter/charger serial number.
session stopnoIgnored for booking; the start timestamp determines the month.
session IDnoYour 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

  1. Rows with MID = false are skipped: only MID-metered kWh counts toward ERE. The report shows how many rows were skipped for this reason.
  2. Sessions are rolled up to monthly totals per customer. You keep the raw sessions; Joulo books the month aggregate.
  3. 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.
  4. 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.