CarChargeOS
ENVI
Book a demo
← Back to Resources
Market

EV Charging Revenue Reconciliation: From Session to Settlement

September 26, 2026 · 8 min read

Charging revenue doesn't usually go missing at the connector - it goes missing between the session and the bank account. A CPO running a few dozen chargers is reconciling at least four separate records for every transaction: what the charger reported, what the payment gateway settled, what the invoice said, and what got paid out to a site host or roaming partner. When those records live in four different systems, month-end close becomes a spreadsheet exercise, and small mismatches quietly become written-off revenue.

The four records that have to agree

RecordWhat it saysWhere it comes from
Session recordEnergy delivered, duration, tariff applied, calculated amount owedThe CSMS, from the charger's own meter values
Payment recordWhat was actually authorized, captured, refunded or failedThe payment gateway or the in-app wallet ledger
Invoice / receiptThe tax document issued to the driver or corporate accountBilling - and, in many markets, a tax authority's e-invoice system
Settlement recordWhat is owed onward - site-host revenue share, partner payoutsRevenue reporting and payout calculations

Reconciliation is just the work of proving those four agree, for every session, every month. The amount of that work is set almost entirely by how many systems the four records are spread across.

Where the mismatches actually come from

  • Pre-authorization vs. final amount. A card is pre-authorized for an estimated maximum before the session starts, then captured for the real amount afterwards. The gateway report shows both; only one is revenue.
  • Failed and aborted sessions. A session that started, delivered 0.4 kWh and dropped still produced a session record and possibly a held authorization - a case that has to be resolved deliberately, not left as an orphan.
  • Wallet timing. With a prepaid wallet, the money arrives on top-up and the revenue is recognized at the session, in different months more often than anyone expects. A top-up is a liability until a session consumes it, not income.
  • Refunds and partial refunds. A goodwill refund for a failed session has to reverse the payment, the invoice and - if the site host was already credited - the payout, or the three drift apart permanently.
  • Roaming sessions. When a visiting driver charges on your network, the amount you bill the partner comes from an exchanged record, not your own retail tariff. See how OCPI roaming works for what that exchange involves.
  • Tax rounding. VAT rounded per session and VAT rounded per monthly invoice do not produce the same total. Small, systematic, and the reason a reconciliation report lands a rounding unit off with no obvious cause.

Why one session record changes the arithmetic

If tariffs, sessions, payments, invoices and settlement all operate against the same session record, most of the reconciliation above is structural rather than manual: the invoice is derived from the session, the payout is derived from the same session, and a refund reverses all three in one place. Stitching a CSMS to a separate billing tool and a separate payout spreadsheet doesn't just add integration work - it creates the possibility of disagreement, which is what reconciliation exists to hunt down. This is the specific operational cost behind the four-vendor versus one-platform decision.

A month-end close that actually closes

  1. Reconcile gateway payouts against recognized revenue. Start from what the gateway deposited, not from what the dashboard reports - the deposit is the number your bank agrees with.
  2. Clear the exceptions queue. Failed sessions with held authorizations, sessions with no payment, payments with no session. This list should be short and shrinking; if it grows month over month, something upstream is broken.
  3. Confirm every completed session produced an invoice. Unissued tax documents are a compliance problem, not just an accounting one.
  4. Generate site-host statements from the same session data. A host who can see the sessions behind their payout raises far fewer disputes - and the ones they do raise are answerable. That transparency is half of the site-host relationship.
  5. Reconcile partner roaming balances separately. These settle on the partner's cycle, not yours, so they need their own line rather than being mixed into retail revenue.
  6. Keep the audit trail. Every adjustment, refund and re-issued invoice logged with who did it and when - the difference between explaining a variance and re-deriving it a quarter later.

What to ask a platform vendor

  • Is billing derived from the session record, or from an export? An export is a copy, and copies drift.
  • Can it produce a per-site payout statement without manual work? Revenue share you have to calculate by hand is revenue share you will eventually calculate wrong.
  • How are held pre-authorizations on failed sessions surfaced? They should appear in a queue, not only in the gateway's own console.
  • Does it handle tax invoicing for your market, including e-invoice requirements? Retrofitting this after launch is significantly harder than it sounds.
  • Can finance export to the accounting system already in use? The goal is a reconciled feed into the existing ledger, not a second ledger to maintain.

CarChargeOS runs tariffs, payments, invoicing, revenue share and settlement records against the same session data - see the Commerce layer on the platform page.

Frequently asked questions

Why doesn't the dashboard revenue figure match the bank deposit?

Usually three reasons stacked together: gateway fees deducted before deposit, settlement timing (sessions near the period boundary deposit in the next cycle), and refunds netted against the payout. None are errors - but the platform should let you tie each difference back to specific sessions rather than leaving you to guess.

Is a prepaid wallet balance revenue?

No. A top-up is money received against a future service - a liability until a session consumes it. Treating top-ups as revenue overstates income in growth months and understates it later, which is why wallet balance and session revenue need to be reportable separately.

How often should reconciliation run?

The formal close is monthly for most operators, but the exceptions queue - failed sessions, orphaned payments - is worth reviewing weekly. Those items get harder to resolve the longer they sit, particularly once a driver has forgotten the session in question.

Ready to see the platform behind these guides?

See how CarChargeOS handles station management, tariffs and billing, and your branded EV owner app.

Take the product tour

The operating system for your EV charging business.

You build the network. We power the software behind it.

Book a demo