Apostol CSMS
Production-ready CSMS product for managing EV charging infrastructure. Multi-tenant, multi-payment, regulatory compliance in Europe and Russia.
What it is
Apostol CSMS is not a SaaS service — it's a deployable platform. A brand operator (CPO, utility, equipment vendor) deploys their own fully-branded CSMS on their own infrastructure with a single command.
60-second analogy
CSMS is like Shopify for EV charging infrastructure. Stations are your product, drivers are your customers, and the platform handles everything else: identification, payments, roaming, billing, and compliance. Each charging session is a transaction. CSMS is the back-office that makes it possible.
Who it's for
Small business (1–10 stations)
— Stations are bought. What now? You need to accept payments, issue receipts, report on compliance.
Cloud onboarding in minutes. Stripe or YooKassa. QR payment without registration. No developers needed.
Network operators (10–500 stations)
— Current CSMS is locked to one vendor, slow to change, billing breaks once a month.
OCPP-agnostic. Migration without downtime. Open REST API. Partner commissions automatic.
Developers, hotels, retail
— Charging is needed for ESG reporting and tenant value — but you don't want to become a CPO.
Partner model: we accept payments, you get monthly payouts. AFIR and receipts included.
EV fleets and car-sharing
— Drivers charge everywhere. Reimbursements are chaos. No unified TCO per vehicle.
RFID per driver, per-vehicle reports, fleet API. Session data straight into your ERP.
Station manufacturers
— Customers want software. Building it in-house — years and tens of millions.
White-label under your brand. Tenant isolation built in. Revenue share or per-station license.
Fuel networks and roadside
— EV is not your core business, but you need to launch fast: roaming, uptime, corporate reports.
OCPI 2.2.1 + 2.3.0. Hub-ready for Hubject and Gireve. Proven uptime. Turnkey deployment.
How it works
The lifecycle of a single charging session — from driver arrival to invoice closing.
Driver arrives
Scans QR, taps RFID, or opens the app. The platform identifies them and verifies authorization.
Pre-authorization hold
For QR payment — Stripe or YooKassa hold an amount based on charging mode (slow/standard/fast/ultra). For registered drivers — linked card or wallet.
Charging starts
The platform sends OCPP RemoteStart. The connector locks, current flows, the session is active.
Real-time accounting
MeterValues arrive every 30 seconds. Cost is calculated by tariff rules — day/night, peak, idle, waiting.
Session ends
Driver stops the charge or unplugs. The platform issues an invoice, charges the actual amount, releases the remaining hold.
Everything is preserved
Session, invoice, payment, OCPP messages — all audited. Roaming partners receive CDRs. Reports export to your accounting.
Capabilities
Everything needed for production CSMS operation — implemented and validated.
OCPP 1.5 + 1.6 + 2.0.1 simultaneously
Three protocol versions in a single backend with auto-detection and translation. Unique among competitors — covers legacy fleets and premium stations at once.
OCPI 2.2.1 + 2.3.0 — hub-ready
Most OCPI modules implemented. Hub integration ready for Hubject and Gireve with dual-version adaptive serialization.
Four payment providers
Stripe and Adyen for Europe, YooKassa and CloudPayments for Russia and CIS. Stripe Connect for automated partner payouts.
AFIR QR payment
Anonymous charging via QR code without registration — mandatory under EU AFIR since 2024 for public stations ≥50 kW.
Multi-tenant architecture
Database-level isolation. Auto-derive tenant FK across business tables, private Network and Area for each tenant.
Hardware-agnostic
Out-of-the-box support for many equipment vendors. A single backend works with diverse station manufacturers.
Protocols and equipment
OCPP — for station communication. OCPI — for roaming. Three OCPP versions simultaneously is rare on the market, and critical if you have legacy equipment.
OCPP — station protocol
OCPP 1.5 (SOAP)
Support for 2012–2015 stations. Most modern platforms have dropped it. We kept it — your old hardware keeps working.
OCPP 1.6 (JSON/WebSocket)
Market standard. 25+ Central System commands, 10 station messages, full spec coverage. Auto-conversion JSON↔SOAP for mixed fleets.
OCPP 2.0.1 (JSON/WebSocket)
Next-gen protocol with three-tier model (Station → EVSE → Connector) and string transaction IDs. Core works in production.
OCPI — roaming protocol
Full OCPI 2.2.1 + 2.3.0 implementation. Most modules working. Hub-ready for Hubject and Gireve. Adaptive serialization for legacy partners and Hubject 2025+.
CPO — sender
Publish your stations to roaming hubs. Accept authorization requests and commands from third-party drivers.
eMSP — receiver
Your drivers charge at any partner station. Locations are cached locally. Sessions and CDRs sync in real time.
Works with any OCPP-compatible station
Automatic station registration on first connection. Vendor profiles handle BootNotification quirks, status code mapping, and charging profile semantics. New vendor onboarding — typically 1–3 days of integration testing. AC and DC stations from any manufacturer — Type 1, Type 2, CCS1, CCS2, CHAdeMO, Tesla, GB/T, Schuko.
AFIR compliance
Since April 2024, every public station ≥50 kW in the EU must accept payment without registration. Most CSMS bolt this on. We made it a separate app on its own subdomain with full audit trail.
Scan QR
Each connector has its own QR code. No app, no account.
See the price
Tariffs displayed by charging mode (slow/standard/fast/ultra) with hold amount in the network's currency.
Pay
Stripe or YooKassa handle 3DS when needed. A hold is placed on the card based on charging mode.
Charging starts
Platform creates a guest customer record, sends OCPP RemoteStart, the connector locks.
Actual amount charged
At session end, the actual consumed amount is captured. The remaining hold is released.
Full audit
Every step is logged. The regulator can request a compliance report at any time.
Compliant with EU AFIR (Alternative Fuels Infrastructure Regulation 2023/1804).
Five frontend applications
A complete set of interfaces for every role — admin, driver, payment, authentication, marketing.
| Application | Stack | Audience |
|---|---|---|
| Admin Webapp | Next.js 15 + React 19 + Ant Design 5 | Platform admins, tenant admins, CPO partners, engineers |
| Driver PWA | Vite 6 + React 19 + antd-mobile + MapLibre | EV drivers (installable progressive web app) |
| Pay App | Nuxt 4 | Anonymous users (AFIR QR payment) |
| Auth App | Vue 3 + Vite | Unified OAuth2 login |
| Landing Template | Nuxt 4 | Marketing (replaceable per brand) |
Competitive comparison
On par with commercial enterprise platforms on key capabilities. Unique dual-market positioning.
| Capability | Apostol CSMS | AMPECO | Driivz | OSS+wrappers |
|---|---|---|---|---|
| OCPP 1.6 | ✓ | ✓ | ✓ | ✓ |
| OCPP 2.0.1 | Core | Full | Full | Partial |
| OCPP 1.5 (legacy) | ✓ | — | — | Partial |
| OCPI 2.2.1+2.3.0 | ✓ | ✓ | ✓ | — |
| Hub roaming | Ready for Hubject, Gireve | ✓ | ✓ | — |
| AFIR QR payment | ✓ | ✓ | ✓ | — |
| Russian payments (YooKassa, CloudPayments) | ✓ | — | — | — |
| Multi-tenant | Full | ✓ | ✓ | — |
| Runtime i18n (8 languages) | ✓ | ✓ | ✓ | — |
| White-label | ✓ | ✓ | ✓ | Custom |
Key insights
- •Unique dual-market platform: the only known solution combining EU coverage (Stripe, AFIR, hub-ready for Hubject/Gireve) and Russian/CIS coverage (YooKassa, CloudPayments) in a single codebase.
- •Three OCPP versions simultaneously (1.5+1.6+2.0.1) with automatic translation — a unique differentiator covering legacy fleets and premium stations.
- •On par with AMPECO and Driivz on OCPI, AFIR, multi-tenancy, runtime i18n, and modern frontend stack.
Regulatory compliance
Ready for key regulatory requirements in both markets.
EU AFIR
Price transparency, ad-hoc payment without registration, open data for public stations ≥50 kW. Implemented via the pay app and public APIs.
GDPR + eIDAS
Auth, OAuth2, tenant isolation, audit log. Ready for data deletion and export requests.
152-FZ, Russian Software Registry
Ready for inclusion in the Russian software registry. Russian payment providers and intra-RF OCPI roaming.
GOST compatibility
Support for standards and protocols required for Russian subsidies and government programs.
Active deployments
The platform powers EV charging operators in Europe and Russia.
ChargeMeCar
chargemecar.com ↗
- •Stripe + Adyen
- •EU AFIR compliance
- •Hub-ready for Hubject and Gireve
- •Hundreds of stations, many vendors
PlugMe
plugme.ru ↗
- •YooKassa + CloudPayments
- •Intra-RF OCPI roaming
- •Russian software registry ready
- •Hundreds of stations
OCPP CSS
ocpp-css.com ↗
- •Central System as Service — turnkey CSMS for CPOs without own infrastructure
- •Quick OCPP onboarding
- •Minimal entry barrier
Four ways to use the platform
Choose the model that fits your business — partnership, license, cloud subscription, or full white-label under your brand.
Partner model
You connect stations. We accept payments from drivers and pay you out weekly or monthly, minus an agency commission.
Hotels, malls, fuel stations, and private owners of a few stations who need charging in operation without becoming an operator.
License on your server
Buy a non-exclusive license and deploy in your own infrastructure. Full control over data, integrations, and area of responsibility.
Large operators, energy companies, and corporations with their own IT and security policies.
White-label platform
Full white-label: your brand, your domains, your theme. Tenant isolation built in. Single codebase, all via configuration — your identity applied in CRM, driver PWA, and email templates without code changes.
Station manufacturers, integrators, and dealers selling software with hardware.
Cloud subscription
Connect stations to our cloud. Drivers find them via the Driver PWA. We run the infrastructure — you run the business.
Networks of any size and rapid user acquisition through a polished web app.
Deployment architecture
Brand-template model: a brand operator deploys CSMS from a template in minutes.
Five-repository architecture
Backend, OCPP CS, DB, Frontend, Auth — separate repositories. Backend and OCPP are published as public Docker images (shared across brands).
Brand-template model
Operator creates a brand repo from the template, gets pre-configured docker-compose, install/update/check scripts, per-environment structure.
Per-environment version pinning
platform.lock.json fixes the platform version, Docker image digests, git commits of source repos for each environment (dev/stage/prod).
Disciplined rolling updates
update.sh pulls new images, runs db-migrate as a blocking gate (rollback on failure), rolling-restarts services, records previous version for --rollback.
Built-in health checks
check.sh runs a comprehensive set: containers, postgres, API, OpenID, OCPP, frontend, TLS, disk, memory, version match. JSON output for monitoring.
Semver discipline
Patch (bugfix), minor (new features), major (breaking migration) with MIGRATION.md per release. --diff-compose for change reconciliation.
What ownership gives you
Own, don't rent
A CPO or utility owns the stack rather than subscribing to someone else's SaaS. Structural advantage for operators outgrowing subscription economics.
Years of development saved
Cost of replicating a comparable platform from scratch — years of focused team work. Apostol CSMS delivers a production-ready solution.
Open-source foundation
The A-POST-OL platform (libapostol + db-platform) is open source under MIT. No vendor lock-in.
Dual-market positioning
The only known platform supporting European and Russian markets in a single codebase.
FAQ
Specifics about the platform — or contact us for a detailed consultation.
What's needed to connect a station?+
An OCPP-capable station (1.5, 1.6, or 2.0.1) and internet. You register, add the station's OCPP endpoint URL — and it connects automatically. First paid session — within the same week.
What equipment does the platform work with?+
Anything that speaks OCPP 1.5 (SOAP), 1.6 (JSON/WebSocket), or 2.0.1 (JSON/WebSocket). AC and DC stations from any manufacturer — Type 1, Type 2, CCS1, CCS2, CHAdeMO, Tesla, GB/T, Schuko. Auto-conversion between OCPP versions for mixed fleets.
How do payouts work?+
Session revenue is calculated automatically by tariffs. Stripe Connect (EU) and YooKassa/CloudPayments (CIS) handle scheduled payouts. Detailed financial reports with transactional audit — in dashboard and via API.
Can I configure my own tariffs?+
Yes. Flexible models: per kWh, per minute, time-of-day (day/night/peak), combined. Schedules with minute precision. Reservation fee, idle penalty, waiting fee — all configurable per station.
Can the platform run under my brand?+
Yes. White-label is available today. Your brand, domains, logos, theme colors, and SMTP applied in CRM, driver PWA, and email templates via single configuration — no code changes per brand.
Can I deploy the platform in my own infrastructure?+
Yes. License-on-your-server — deploy in your environment. Full data sovereignty and compliance control. Hybrid model also supported — part cloud, part on-prem.
Is the platform AFIR-compliant?+
Yes. A separate Pay app handles QR payment without registration — as required by EU AFIR (2023/1804) for public stations ≥50 kW. Full audit trail available for the regulator.
What about roaming via Hubject or Gireve?+
OCPI 2.2.1 and 2.3.0 supported with adaptive serialization for legacy partners and Hubject 2025+. Platform works as CPO sender (publishes your stations) and eMSP receiver (sends your drivers to partner networks). Ready for commercial registration.
Interested?
Tell us about your task — we'll discuss how the platform fits your scenario.