Skip to content
Case study · CHARGE TECH · In production since Jan 2025

We built and run the OCPP brain behind 40+ EV chargers

PlugEV, branded CHARGE TECH, is a production OCPP 1.6-J charging management system for an Indian operator. One system for multi-brand hardware, UPI payments, GST invoicing, and billing that holds up at 2 AM.

40+
chargers live
2
Indian cities
99.7%
uptime in production
16 wks
to first build

The problem

An EV charging operator needed one system to run a network built from different hardware brands, each of which implements OCPP a little differently. The chargers had to take Indian payments over UPI, issue GST invoices, and price in INR. None of that mattered without the part that is easy to say and hard to do: a car charging at 2 AM still has to bill correctly.

Off-the-shelf platforms either assumed one vendor's hardware or skipped the Indian payment and tax reality entirely. So we built the whole thing, and we still operate it.

What we built

Go WebSocket gateway

About 3,500 lines of Go handling connection routing, heartbeats, and OCPP 1.6-J over WebSocket. A per-vendor quirks file sat in the repo from day one, because every hardware brand implements the spec a little differently.

Laravel 11 admin + billing

Around 12,000 lines of PHP running the operator admin, pricing rules, invoicing, and the account model. TLS terminates at the Go gateway, so the Laravel side never touches a raw charger socket.

RFID lifecycle manager

A custom card manager with an offline-capable fallback. Per-card limits and per-station permissions mean a charger still authenticates a driver even when the API gateway is unreachable.

Metered billing in paise

Per-session, time-based, and per-kWh pricing rated continuously into paise and invoiced at cycle close. GST invoices generate automatically, priced in INR.

Operator dashboard

A real-time charger map, live session telemetry, revenue analytics, and a fleet sub-account hierarchy so an operator can manage business customers under one roof.

WhatsApp notifications

Session start and stop alerts and low-balance warnings go out over the WhatsApp Business API, which is where Indian drivers actually read their messages.

How the architecture fits together

Chargers speak OCPP 1.6-J, JSON over WebSocket, to a gateway written in Go. That gateway routes connections, keeps heartbeats alive, and smooths over each vendor's quirks before anything reaches the rest of the system. TLS terminates there, which keeps the Laravel 11 admin and billing backend off the raw socket entirely.

Postgres holds the data, and Redis carries session state and idempotency keys so a retried request never double-bills. Razorpay handles UPI, cards, and Autopay. The whole stack runs on CloudNX, our own India-region cloud platform.

Go (OCPP WebSocket gateway)Laravel 11 (admin + billing)PostgreSQLRedisOCPP 1.6-JRazorpay (UPI, cards, Autopay)WhatsApp Business APICloudNX Mumbai

The billing has to be right

Sessions are rated continuously into paise across three models: per-session, time-based, and per-kWh metered. At cycle close the system invoices what was actually used and generates a GST invoice automatically. Idempotency keys in Redis mean a network retry or a reconnecting charger never charges a driver twice, which is exactly the failure you cannot afford on an unattended overnight session.

Results

PlugEV was built over 16 weeks and has run in production since January 2025. In that time it has held 99.7% uptime. The one rough patch, a week at 99.1%, came from a Razorpay outage in Q1 2026 rather than our own stack. The network now covers 40+ chargers across 2 Indian cities.

Not every week was clean. Early on, a charger time-sync bug took a full week to track down. It is the kind of problem you only find in production, and finding it is part of why we still run the system rather than handing it over and walking away.

What it costs to build and run

We are honest about numbers because operators need them to plan. These are ours, from this build.

16 weeks
build time
Rs 11.5 L
all-in build cost
Rs 18k/mo
hosting
Rs 80k/mo
maintenance

Rolled together, the network runs at roughly Rs 26,000 per charger per year all-in.

Where it goes next

OCPP 2.0.1 with certificate-based security is mapped as the next step: GetCertificateStatus behind an OCSP proxy, signed firmware updates, and the SignCertificate, CertificateSigned, and InstallCertificate flows. Because TLS already terminates at the Go gateway, the admin backend stays insulated from that added complexity as it lands.

Frequently asked questions

Which OCPP version does PlugEV run?

PlugEV runs on OCPP 1.6-J, the JSON-over-WebSocket variant that almost every charger deployed in India speaks today. OCPP 2.0.1 with certificate-based security is mapped as the next step, and we treat it as a separate piece of work rather than something you get by accident.

How does it handle chargers from different hardware brands?

The Go gateway normalises each vendor's OCPP behaviour through a per-vendor quirks file that has been in the repo since day one. Real chargers rarely implement the spec cleanly, so when we onboard a new brand we validate its quirks against that layer before it goes live.

How do Indian payments and GST invoicing work?

Payments run through Razorpay for UPI, cards, and Autopay. Sessions are rated continuously into paise across per-session, time-based, and per-kWh pricing, then invoiced at cycle close with GST invoices generated automatically in INR.

What is the uptime like in production?

In production the system has held 99.7% uptime. The worst week dropped to 99.1% during a Razorpay outage in Q1 2026, which sat outside our own stack. A car charging at 2 AM still needs to bill correctly, and that reliability bar shaped a lot of the design.

Can you build one for another EV charging operator?

Yes. We built and operate PlugEV ourselves, so the OCPP integration, billing logic, and RFID lifecycle are patterns we can carry into a new network. New charger brands add validation time, and we scope hardware and billing needs on a short discovery call before quoting.

OCPP 1.6-J or 2.0.1, which should we start on?

For a network of chargers shipping today, 1.6-J is almost always the right starting point because that is what the hardware speaks. 2.0.1 brings certificate-based security like SignCertificate, CertificateSigned, InstallCertificate, and GetCertificateStatus through an OCSP proxy, plus signed firmware updates. We add it when the hardware and the threat model justify it.

Running an EV charging network in India?

We have already solved the messy OCPP, payments, and billing problems on PlugEV. See the product page, or talk to us about building your own CSMS.

Start a conversation

Chat on WhatsApp

+91 74289 19927 · Replies within 24 hours

Pick a quick message to start a conversation on WhatsApp, or type your own below. Your message pre-fills, you hit send from WhatsApp.

Or type your own

We'll send your message via WhatsApp Web or the WhatsApp app.