ChargingPile EV charging operations

Multi-tenant EV charging platform

Run EV charging as one operating system

One console for tenants, stations, chargers and orders. Tariffs split by peak, flat and valley in each station's own timezone. Settlement, payouts and reconciliation that balance to the cent, with OCPP at the device edge and OCPI toward roaming partners.

Charge point protocols
OCPP 1.6J and 2.0.1, vendor MQTT
Roaming
OCPI / EMSP direction
Payments
Stripe, PayPal, offline bank transfer
Tenant isolation
Database per tenant

Who it is for

Built for the teams that keep chargers running

  • Charge point operatorsRun branded networks across many sites, currencies and timezones from one console.
  • Fleets and depotsDriver cards, member tariffs, energy reporting and cost allocation per vehicle group.
  • Site hosts and landlordsSee revenue per bay, per tariff period and per tenant without asking for a report.
  • Sub-merchants and resellersSelf-service portal with commissions, statements and payouts scoped to their own data.

Platform surfaces

One platform, three audiences

The platform team, the operator and the driver each get their own surface and their own permission model, backed by the same ledger. Nothing is copied between them, so nothing can disagree.

/platform

Platform console

The control room for the platform owner: tenant provisioning, cross-tenant reporting, regional settings, tariffs and pricing templates, commissions and settlement runs, withdrawals, invoices, channel reconciliation, alarms and scheduled jobs.

  • Tenants, stations, chargers and connectors
  • Orders, members, wallets and tariff plans
  • Settlement, payouts, invoices, reconciliation
  • Alarm centre and scheduled task history

/mppc   /mp

Operator portal

Self-service for charge point operators and their sub-merchants, on desktop: publish tariffs, watch connectors, handle refunds, approve driver accounts, download statements and request payouts. Every view is scoped to the merchant subtree, so operators never see each other's numbers.

  • Station and connector management
  • Tariff, member and voucher configuration
  • Commissions, statements and payout requests
  • Data scope limited to the merchant subtree

PWA · iOS · Android

Driver apps

Drivers get an installable PWA that also runs in any mobile browser, plus native Android and iOS builds from the same codebase. Find a charger, start and stop a session, watch live energy and cost, top up the wallet, download receipts. No app store detour required to charge.

  • Installable PWA and H5 in any modern browser
  • Native Android and iOS apps
  • Live session, cost estimate and receipts
  • Wallet top-up and saved payment method

Capabilities

The operational spine of a charging business

Charging is rarely the hard part. Tariffs, money and auditability are. These are the modules that carry them, each one built to be re-run and explained.

Multi-tenant by default

Every business table lives in the tenant's own database rather than behind a filter, so a query cannot leak across customers by forgetting a where clause. Tenant context is resolved from the request and never guessed.

Stations, chargers, connectors

Three levels of asset register with live connector state, telemetry curves, error codes and offline sweeps. Alarms from the same charger and code are merged instead of flooding the list.

Tariffs on station time

Peak, flat and valley energy and service prices are resolved against the station's timezone, falling back to the tenant's. Overlapping or gapped periods are rejected before a tariff goes live.

Sessions, wallet, members

One session per connector, with the wallet balance frozen up front so a driver cannot overspend. Settlement charges what was delivered and releases the difference automatically.

Commissions and settlement

Multi-level commission rules with tiers and a cooling-off period. Refunds reverse the commission that was already allocated, and every line item points back to its session.

Payouts, invoices, reconciliation

Withdrawal requests move through an approval state machine with the bank account on file. Invoices and channel statements are managed in one place, and payment differences are held for a human instead of being adjusted silently.

Smart charging by profile

Load management is expressed as OCPP charging profiles, so the schedule is executed on the charger itself and survives a dropped connection. Profiles can be simulated before they are applied.

Alarms and scheduled jobs

A lightweight scheduler runs idempotent jobs tenant by tenant, so one customer's failure never blocks another. Every run is recorded, and jobs can be replayed by hand during an incident.

How it works

From plug-in to payout in five steps

  1. Onboard the tenant

    Create the tenant, its database and its first administrator. Currency, timezone, locale and regional module set come from the tenant profile, so a Spanish operator and a Russian operator can run side by side on one installation.

  2. Connect the hardware

    Register stations, chargers and connectors, then point the chargers at the OCPP endpoint. OCPP 1.6J and 2.0.1 connect on the same platform, and vendor devices that speak MQTT are normalised to the same asset model.

  3. Publish tariffs

    Define energy and service prices per period, plus start fee, idle fee, minimum spend and a per-session cap. Tariff periods are validated against the station timezone and snapshot when a session starts, so repricing never rewrites history.

  4. Drivers charge and pay

    A driver scans, taps or uses the app, authorises a payment method, and follows live energy, power and cost. Card, Apple Pay and Google Pay run through Stripe, PayPal runs alongside it, and bank transfer is available with manual confirmation.

  5. Settle and reconcile

    Finished sessions settle at the metered amount, commissions are allocated, statements and invoices are produced, and the channel statement is reconciled line by line. Anything that does not match is parked for review.

Integrations and API

Open at the edges, strict in the middle

Speak OCPP to the hardware, OCPI to roaming partners, and REST with signed webhooks to everything else. Protocol differences are absorbed at the gateway, so the tariff and settlement logic never forks per vendor.

OCPP 1.6J and 2.0.1

Boot and heartbeat, status notification, authorisation, start and stop transaction, meter values, charging profiles, remote start and stop, reset, unlock, configuration and firmware triggers.

WebSocket · :9002

OCPI / EMSP

Built toward the roaming direction international partners expect: locations, tariffs and sessions exposed between operators rather than a single-country standard.

EMSP direction

REST and webhooks

Every console action sits on the same documented REST surface. Subscribe to session, settlement and alarm events and receive signed deliveries with a retry log you can inspect.

:8090 · OpenAPI

Vendor MQTT

Manufacturers that expose their own MQTT protocol are mapped to the standard asset and telemetry model, including meters, storage and site loads that are not charge points at all.

TCP · :9003

GET /api/v1/connectors?station=sample-depot-lisbon
Authorization: Bearer <token>

200 OK
{
  "station": "Sample Depot Lisbon (placeholder)",
  "connectors": [
    { "id": "A-01-2", "status": "Charging",  "power_kw": 44.0 },
    { "id": "A-03-1", "status": "Available", "power_kw": 0.0  }
  ]
}

Illustrative request and response shapes. The live OpenAPI schema is served by the platform itself. Figures are sample data (placeholder).

Architecture diagram: chargers and vendor devices connect over OCPP and MQTT gateways to a multi-tenant core that serves the platform console, the operator portal and driver apps, with payments and OCPI roaming at the edges.
Deployment shape: protocol gateways are separate processes, so they scale and restart independently of the business core. Diagram is English-only.

Security and compliance

Isolation, permissions and a paper trail

Written as engineering facts rather than badges: these are properties of the platform, and no certification is claimed on this page that the product does not hold.

GDPR-minded data handling

Driver data is scoped to the tenant that collected it, exports are explicit rather than incidental, and where country lookup is used it can run from a local database so visitor IP addresses never leave your infrastructure.

Database per tenant

Business tables live in a per-tenant database instead of carrying a tenant column. Isolation is a property of the connection, not of every query being written correctly.

Roles and permissions

Platform and merchant sessions are separate and their tokens are not interchangeable. Permissions are assigned per role and per merchant subtree, and a missing tenant context fails loudly instead of falling back.

Audit logs

Operator actions, sign-ins, scheduled job runs, remote commands sent to hardware and payment callbacks each keep their own record, including who did it, when, to which device, and what came back.

Payments and money flow

Cards, wallets and bank transfer, reconciled alike

Stripe

Cards plus Apple Pay and Google Pay through a single integration, with authorisation before the session and capture of the metered amount at the end. Refunds and partial refunds are issued from the same interface as the original charge.

  • Card, Apple Pay, Google Pay
  • Authorise, capture, refund
  • Per-tenant credentials, stored encrypted

PayPal

For drivers and fleets that prefer a PayPal balance: the same order lifecycle, the same idempotent callback ledger, and the same settlement line as a card payment.

  • PayPal checkout and capture
  • Signed callbacks, replay-safe
  • Settlement alongside card revenue

Offline bank transfer

Some markets still pay by transfer. Drivers or fleet managers upload proof, staff confirm it in the console, and the credit lands on the wallet with the approver recorded.

  • Upload proof, staff confirmation
  • Manual credit with an audit entry
  • Useful for fleet and depot accounts

How the money stays consistent

  • Amounts are held in the smallest currency unit, so no rounding drift accumulates between platform and processor.
  • Callbacks converge on one idempotent entry point: a duplicate or replayed callback cannot post twice.
  • Reconciliation runs against the processor statement, and differences are parked in three buckets for a human rather than adjusted automatically.
  • Processor credentials are encrypted at rest and only ever displayed masked in the console.

Language and localisation

English first, four languages in the product

Geo-aware first visit

A first-time visitor is served the language that fits where the request came from: Traditional Chinese for Taiwan, Hong Kong and Macau, Spanish for Spanish-speaking markets, Russian for Russian-speaking markets, and English everywhere else.

Choice always wins

Once someone picks a language, that choice follows them and overrides any geographic guess. If the platform cannot tell where a request came from, it serves English rather than guessing.

Timezone and currency apart

Interface language, currency and timezone are three separate settings. Currency is configured per tenant, tariff periods are cut in the station timezone, and changing the language never changes a price.

Try the switcher on this page

This site is English by default. Use the language selector in the header: navigation, headings and buttons switch immediately, and the choice is remembered in your browser. Body copy on a static page stays English, which is why the product's own localisation is the thing to evaluate on a demo.

Note: a static page cannot look up an IP address, so this demo detects language from your browser language and timezone. The product itself resolves locale server-side from CDN country headers, a local country database or the user's own choice.

  • EnglishDefault everywhere
  • 繁體中文Suggested for Taiwan, Hong Kong, Macau
  • EspañolSuggested for Spanish-speaking markets
  • РусскийSuggested for Russian-speaking markets

Pricing

Packaging that scales with sites, not with seats

Feature grouping follows the product's own module boundaries. Numbers are placeholders: real pricing depends on site count, connectors and settlement complexity.

Starter

Single operator, one country, charging and payment working end to end.

$0,000/ site / month
Placeholder price - replace with real pricing

  • Stations, chargers and connectors
  • Tariffs by peak, flat and valley
  • Sessions, wallet, refunds
  • Platform console and operator portal
  • Driver PWA and H5
Start with a demo

Most common

Growth

Several operators or sub-merchants, with money moving between them.

$0,000/ site / month
Placeholder price - replace with real pricing

  • Everything in Starter
  • Sub-merchant accounts and data scoping
  • Commission rules, statements, payouts
  • Invoices and channel reconciliation
  • Smart charging by OCPP profile
  • Native Android and iOS apps
Talk to an engineer

Enterprise

Private deployment, custom integrations and roaming.

$0,000/ site / month
Placeholder price - replace with real pricing

  • Everything in Growth
  • Single-tenant or on-premise deployment
  • OCPI, ERP and market integrations
  • Custom settlement and reporting
  • Implementation and handover support
Scope a project
Capability comparison. Placeholder plan packaging - confirm scope in the contract. Support response times and service levels are agreed per contract and are not promised on this page.
Capability Starter Growth Enterprise
Platform console: tenants, stations, chargers, connectorsIncludedIncludedIncluded
Tariffs split by peak, flat and valley per station timezoneIncludedIncludedIncluded
OCPP 1.6J charge point connectionsIncludedIncludedIncluded
OCPP 2.0.1 charge point connectionsIncludedIncludedIncluded
Driver PWA and H5IncludedIncludedIncluded
Native Android and iOS appsPWA onlyIncludedIncluded
Sub-merchants, commissions, statements, payouts—IncludedIncluded
Invoices and channel reconciliation—IncludedIncluded
Smart charging through OCPP charging profiles—IncludedIncluded
Vendor MQTT devices: meters, storage, site loads—IncludedIncluded
OCPI / EMSP roaming with partner networks—On requestOn request
Database-per-tenant isolationIncludedIncludedIncluded
Role-based permissions and audit logsIncludedIncludedIncluded
Deployment modelShared cloudShared cloudPrivate or on-premise
Custom integrations and migration support——Included

FAQ

Questions buyers actually ask

Which charge point protocols are supported?

OCPP 1.6J and OCPP 2.0.1 over WebSocket, plus vendor MQTT for hardware that speaks its own protocol. Both OCPP versions connect to the same platform and share the same asset, tariff and settlement model, so a mixed estate does not need a second system.

How are charging profiles used for load management?

Load limits are published as OCPP charging profiles, which means the charger itself holds and executes the schedule. A short network interruption therefore does not release the site limit. Profiles can be simulated first and every applied profile is recorded.

How does tariff time work across timezones?

Peak, flat and valley periods are resolved against the station's timezone, falling back to the tenant's. Periods may cross midnight and are validated for overlaps and gaps before a tariff is published. A session snapshots the tariff it started under, so later price changes never rewrite an invoice.

Where does tenant data live, and who can see it?

Each tenant gets its own database rather than a shared table with a filter column. Platform and merchant sessions are issued separately with non-interchangeable tokens, and merchant views are scoped to that merchant's subtree. Enterprise deployments can run entirely inside your own infrastructure.

Which payment methods can a driver use?

Cards, Apple Pay and Google Pay through Stripe; PayPal alongside it; and offline bank transfer with staff confirmation for fleets and markets where transfers are the norm. Amounts are stored in the smallest currency unit and every callback converges on one idempotent entry point.

Is there a mobile app, or only a web page?

Both. Drivers can install the PWA, use the H5 build in any browser, or install the native Android and iOS apps, all backed by the same account and the same session record.

What does migration from an existing system look like?

Import stations, chargers and members, point the chargers at the platform's OCPP endpoint, and run a pilot site with production tariffs before cutting over. Existing tariffs are modelled as plans rather than hard-coded rates, so the pilot is a fair test of the real configuration.

Book a demo

Bring one real site and we will configure it

Send us a station, its timezone and its tariff table. We will set it up in a demo tenant so you can walk a full session: authorise, charge, settle, refund, commission, reconcile. Then decide.

QR code placeholder; replace with the real app link before launch.
Driver app Placeholder QR - replace with the real app link

Demo environments are provisioned by a person, so expect a reply rather than an instant account.

This form is static: it validates locally and posts to no server. Connect it to your own endpoint or CRM, and publish a privacy notice, before launch.