JouloDocs

Sessions

Understand charging session data in Joulo

A session represents a single charging event • from the moment your car starts drawing power until it stops. Every session records how much energy was delivered and, when applicable, how many ERE-credits were earned.

Session object

{
  "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
  "charger_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "charger_nickname": "Garage",
  "started_at": "2026-04-08T18:30:00Z",
  "ended_at": "2026-04-09T06:45:00Z",
  "kwh": 42.37,
  "status": "completed",
  "counts_for_ere": true,
  "ere_credits": 14.10,
  "estimated_euro": 5.09
}

Fields

FieldTypeDescription
idstring (UUID)Unique identifier for the session.
charger_idstring (UUID)ID of the charger this session belongs to.
charger_nicknamestringUser-defined name of the charger.
started_atstring (ISO 8601)When the session started.
ended_atstring (ISO 8601)When the session ended. null for active sessions.
kwhnumberTotal energy delivered, in kilowatt-hours.
statusstringactive, charging, or completed.
counts_for_erebooleanWhether this session counts toward ERE: true when the charger is MID-eligible (real MID meter or admin-granted exception).
ere_creditsnumberERE-credits earned by this session (count, not euros). Derived from kwh via the NEa formula (see below). null when the charger is not MID-eligible or no energy was delivered.
estimated_euronumberIndicative net value of those ERE, in euros. A forecast, not a payout (see below). null whenever ere_credits is null.

Session statuses

StatusDescription
activeThe charger is connected and a session is in progress.
chargingThe charger is actively delivering power.
completedThe session has ended and final energy values are recorded.

Energy calculation

Joulo calculates kwh from the best available data source for each session:

  1. Direct kWh value from the charger (if reported)
  2. Energy in watt-hours, converted to kWh
  3. Difference between meter start and stop readings
  4. Live meter reading minus meter start (for active sessions)

This ensures accurate energy values regardless of which charger brand you use.

ERE-credits

ERE stands for Emissiereductie-eenheden (Emission Reduction Units), the official unit under the Dutch RED III implementation. The ere_credits field is the count of ERE generated by this session, derived deterministically from kwh:

ere_credits = kwh × 0.505 × 0.6588
  • 0.505 • Dutch grid renewable fraction for 2026 (CBS).
  • 0.6588 • RED III fossil reference (183 g CO₂eq/MJ × 3.6 MJ/kWh).

Only sessions on a MID-eligible charger can be inboeked at the NEa. The API applies that filter for you: counts_for_ere tells you whether a session qualifies, and ere_credits is null for sessions on non-eligible chargers. That is the same filter the Joulo dashboard uses for its top-line numbers.

From ERE to euros

estimated_euro carries the value of the session in euros, so you never have to do the arithmetic yourself:

estimated_euro = ere_credits × price_per_ere × (1 − effective_fee_pct/100)

Both inputs come back once per response in estimate_basis, so you can explain or audit the amount without a second call:

{
  "sessions": [ /* ... */ ],
  "limit": 20,
  "offset": 0,
  "estimate_basis": {
    "price_per_ere": 0.451,
    "effective_fee_pct": 20
  }
}

estimated_euro is a forecast, not a payout. Never present it as money owed.

Three things move between a charging session and a payment:

  1. The price is per trade, not per session. Joulo sells ERE forward in batches. Your ERE is allocated to a trade per production quarter, and the sale price locks at that moment. price_per_ere is the current indicative mid-market price, so it is what an unsold ERE is worth on paper today.
  2. The fee locks at settlement. effective_fee_pct is the account's percentage today, after referral and loyalty discounts. The fee actually charged is the lower of the one at reservation and the one at settlement.
  3. Unsold ERE is held, not paid. Joulo never pays out against a model price.

For what was really sold, and at which price, call GET /ere-position. It returns realised amounts per compliance year and quarter, split into paid, payable and reserved, with the weighted price per quarter.

Filtering sessions

The GET /sessions endpoint supports several query parameters:

  • charger_id • Show sessions for a specific charger only
  • from / to • Filter by date range (ISO 8601 timestamps)
  • limit / offset • Paginate through results

See the API reference for full details.

Next steps