Skip to content

EV Charging

Charging sessions billed on two clocks: energy delivered, and the bay held afterwards.

The short answer

EV Charging is an Odoo application for operators of a charge-point estate. It models stations, chargers, tariffs and metered sessions, and it prices each session on two clocks rather than one: the minutes energy was flowing, and the minutes the connector stayed occupied after the car was full. Energy, time and idle each carry their own cost line.

Request this module

Last updated

What it is for

The car finished charging and is still in the bay. Nobody is charging, nobody is paying, and the next driver pulls in, finds the bay taken by a full car, and leaves. That failure mode never shows up in a report that only counts kilowatt hours. Generic billing cannot express it either, because it has one clock. A charging session has two: the time energy was flowing, and the time the connector stayed occupied afterwards. Charge for one and you subsidise the other.

Platform
Odoo
Category
Assets & rentals
Works with
Odoo 18 · Odoo 19
Technical name
ev_charging
Status
Direct from webbox
Pricing
Paid

What is inside it

  1. 01

    Idle time

    A session stores its start, its charging-end and its end, so idle is a field rather than something inferred later. Energy, time and idle costs add up to the total.

  2. 02

    Tariffs

    A tariff holds the per-kWh rate, the per-minute connection rate and the idle rate. A charger points at one, so a second pricing tier is a second record.

  3. 03

    The estate

    Chargers belong to stations and carry a connector type, a power rating and a status. Availability counts the points that are not sitting in a fault state.

  4. 04

    The board

    Six tiles lead with availability, because that is what a driver meets on arrival. Clicking a tile opens the sessions or chargers it counted.

What it looks like in practice

  1. A driver leaves the car plugged in long after it is full

    The session has stopped drawing power but the connector is still occupied, and the next arrival finds no free bay.

    Charging-end and end are separate fields on the session, so the second gap is stored as idle rather than worked out afterwards. idle_cost is computed from the tariff's idle rate and joins energy_cost and time_cost in the total, which is what lets an invoice line say what the driver is actually paying for.

    Behaviour of the shipped code.

    Idle timeTariffs

  2. A faulted charge point drops the availability a driver would meet

    One point stops working and somebody marks its status down on the charger record.

    Availability on the board counts the points not in a fault state, so the number moves when the record changes rather than when somebody remembers to update a spreadsheet. The tile opens the chargers behind it.

    Chargers down, of eight points
    2
    Charger availability
    75%
    Session success
    90.9%

    Figures from the module's own demo data, on a fresh install. Install with demo data and open EV Charging, then the dashboard.

    The estateThe board

  3. The idle rate goes up and last month's sessions stay as they were

    A site decides a held bay should cost more than it did.

    The rate lives on the tariff record, so the change is an edit on a form rather than a release. Historical sessions are not recomputed, because the price a driver was quoted is the price they paid.

    Behaviour of the shipped code.

    TariffsIdle time

What it deliberately does not do

No OCPP
Chargers do not talk to this. Sessions are recorded, not ingested from hardware, so treat it as the ledger behind live telemetry rather than the driver of it.
No driver app or RFID
There is no self-service portal and no token authentication. Sessions are created by staff, or by an integration you write.
No roaming or eMSP settlement
One operator, one estate. Nothing here clears sessions between networks.
No load management
Power ratings are recorded per charge point. Nothing balances draw across a site.

Questions

Can I install this on Odoo Online?
No. Odoo Online cannot install modules that contain Python, so this runs on Odoo.sh or a self-hosted instance. Check the versions listed above for the series and edition it is verified against.
Does it speak OCPP and pull sessions off the chargers?
No. There is no OCPP stack and no hardware conversation of any kind. Sessions are recorded by staff or pushed in by an integration you write, and the module prices them and reports on them. If you already have live telemetry, run this as the billing ledger behind it.
Can drivers start a session themselves with an app or an RFID token?
No. There is no self-service portal and no token authentication, so every session is created inside Odoo. Nothing here settles sessions between networks either, which makes it a fit for one operator running one estate rather than for a roaming arrangement.
How is access split, and does it fence off by company?
Two groups. EV Charging / User works sessions and chargers; EV Charging / Manager reaches stations, tariffs and configuration. Record rules fence sessions, chargers, stations and tariffs by company. The suite runs green on Odoo 19 and Odoo 18, against a throwaway database built with demo data.

Have something to build?

Tell us the problem. We'll come back with a plan, a price, and who'd actually build it.

  • Free scoping call
  • Reply within 1 business day
  • No lock-in