PILLAR GUIDE · UPDATED 11 AUG 2026

Beckn for EV charging: the complete guide

Beckn turns EV charging into an open network: any buyer app can discover and book charging from any provider platform, with no central marketplace in between. This is the map of how that actually works — roles, lifecycle, trust model, and where it meets OCPI.

IN ONE PARAGRAPH

Beckn is a set of asynchronous actions exchanged between a buyer platform (BAP) and a provider platform (BPP), each answered by a matching callback. Discovery is broadcast through a gateway; everything after it is point to point. For EV charging it sits above OCPI rather than replacing it — Beckn finds and books the charge, OCPI runs it.

What Beckn changes

The default shape of a digital market is a platform in the middle. Buyers join it, sellers join it, and the platform owns discovery, transactions and the relationship with both sides.

Beckn removes the middle. It specifies a protocol that buyer-side and provider-side software use to transact directly, so any compliant app can discover and buy from any compliant provider without either having integrated with the other beforehand. Discovery is federated rather than centralised.

For EV charging in India this matters because the alternative is what already happened: a driver carrying five apps because five networks each built their own walled garden. On an open network one app reaches every operator, and operators compete on service rather than on app installs.

The actors

AcronymMeaningIn EV charging
BAPBeckn Application PlatformThe consumer-facing app — typically an eMSP
BPPBeckn Provider PlatformThe provider platform — typically a CPO
BGBeckn GatewayBroadcasts discovery — see the gateway
NONetwork OperatorGovernance, onboarding and the registry
CDSCatalog Discovery ServiceEnables discovery across BPPs
EVSEElectric Vehicle Supply EquipmentAn individual charging unit
A note on the acronyms. BAP and BPP are frequently written out incorrectly, including as “Buyer Provider Platform” for BPP, which is self-contradictory. The Beckn core specification defines them as Beckn Application Platform and Beckn Provider Platform. The BAP is the buyer side, the BPP is the seller side.

The specification uses standard requirement language throughout — MUST, MUST NOT, SHOULD and MAY — and the distinction is worth respecting when assessing whether an implementation is conformant or merely functional.

The transaction lifecycle

Every action has an on_ twin. The BAP sends; the BPP acknowledges immediately and calls back later. Each of these has a full guide.

ActionCallbackDoes
searchon_searchBroadcast discovery — returns catalogues of chargers and prices
selecton_selectNarrow to one provider and item; returns a quote
initon_initAttach billing; returns payment and cancellation terms
confirmon_confirmCreate the order; returns the authorization token
statuson_statusCurrent fulfilment state and live charging progress
updateon_updateChange a live order — including stopping a charge
cancelon_cancelVoid an order before fulfilment

The four phases

  1. Discovery. The BAP searches; catalogues stream back from multiple BPPs over several seconds.
  2. Selection and booking. select, init and confirm turn a listing into an order with an authorization token.
  3. Charging session. The driver presents the token, the session starts, and status and update track it.
  4. Completion. The BPP issues the final settled quote; billing follows from it.

Cross-cutting concepts

ConceptWhy it matters
The context objectEvery message carries it. transaction_id threads the whole transaction; message_id pairs one request with its callback. Correlation depends entirely on getting these right.
Signing and the registryOn an open network you have never met most participants. Ed25519 signatures plus a network registry are what make an inbound callback trustworthy.
The gateway and ACK/NACKHow one search reaches every provider, why the gateway leaves after discovery, and why an ACK is a receipt rather than a result.

Everything is asynchronous

This is the single structural fact that shapes every Beckn implementation. There are no synchronous responses carrying business data. A request receives 200 ACK — meaning accepted for processing — and the answer arrives later as a separate HTTP request in the opposite direction.

BAP                                  BPP
 │                                    │
 ├──── POST /select ─────────────────►│
 │◄─── 200 { "ack": "ACK" } ──────────┤     receipt, not an answer
 │                                    │
 │                        (BPP works) │
 │                                    │
 │◄─── POST /on_select ───────────────┤     the actual answer
 ├──── 200 { "ack": "ACK" } ─────────►│
 │                                    │

Three consequences worth designing for from the start:

  • Both parties run a server. A BAP is not just a client; it must receive callbacks at a publicly reachable, signature-verifying endpoint.
  • State lives on your side. There is no request-scoped context to hold a transaction in. Every open transaction is persisted state with a TTL.
  • Callbacks can be late, lost or duplicated. Idempotency and expiry are baseline requirements, not refinements.

Beckn and OCPI together

These are complementary layers, not alternatives, and the confusion between them is common enough to be worth stating plainly.

BecknOCPI
SolvesOpen discovery and booking across any providerBilateral roaming between two known parties
RelationshipNone required in advanceRegistered pairwise beforehand
DiscoveryBroadcast via gatewayPull the partner's Locations
ShapeAsync action + callbackREST, plus async for Commands
Billing recordFinal settled quote on the orderCDR

A realistic Indian deployment runs both. A CPO exposes a Beckn BPP so any buyer app can find and book its chargers, and simultaneously maintains OCPI connections with the eMSPs it has commercial agreements with. Underneath both, OCPP talks to the hardware.

The mapping is direct where it needs to be: a Beckn confirm produces an authorization token; when the driver uses it the CPO starts a session, and that session yields a CDR. Keeping transaction_id joined to the session and CDR is what makes Beckn orders and charging records reconcile — and skipping that join is why they often do not.

An implementation roadmap

PhaseBuildYou can now
1context + signingSend and verify a well-formed, trusted message
2search / on_searchDiscover chargers across the whole network
3select + init + confirmBook a charger and receive an authorization token
4status + updateShow live progress and stop a charge remotely
5cancelHandle cancellation by either party, with fees

Phases 1 to 3 are a working booking flow. Phase 4 is what makes it feel like a real product. Do not defer phase 1 — retrofitting signature verification onto a live endpoint means running an unverified endpoint in the meantime.

Production lessons

  • Verify every inbound message. No staging bypass, no exceptions.
  • One transaction_id per business transaction; a new message_id per request. The most common source of hard-to-reproduce bugs.
  • Never treat ACK as success. Wait for the callback before telling a driver anything.
  • Make confirm idempotent. Duplicate orders are the expensive failure mode.
  • Handle unsolicited callbacks. Natural completion, faults and expiries all arrive without you asking.
  • Render search results progressively and close the window at a few seconds. You never know how many providers will answer.
  • Join transaction_id to the charging session and CDR, or reconciliation becomes guesswork.
  • Serve catalogues from cache as a BPP. Broadcast search volume is not under your control.

Official references

The normative sources are the Beckn Protocol core specification and the domain specification for EV charging, alongside the UBC Technical Specification Document, which formalises EV charging semantics while keeping alignment with OCPI for CPO communication. A UBC EV sandbox is available for testing implementations against the network before onboarding.

The intended audience for that material is broad: consumer application developers building BAPs, eMSPs and aggregators mapping services across multiple CPOs, charge point operators exposing services as BPPs, and architects designing interoperable EV ecosystems.

Frequently asked questions

What is the Beckn protocol?

An open protocol that lets buyer-side and provider-side platforms transact directly without a central marketplace in between. Any compliant application can discover and buy from any compliant provider without the two having integrated beforehand.

What do BAP and BPP stand for?

BAP is Beckn Application Platform, the buyer side — typically a consumer-facing app run by an eMSP. BPP is Beckn Provider Platform, the seller side — typically a charge point operator. The expansion 'Buyer Provider Platform' sometimes seen for BPP is incorrect.

What is the Beckn transaction lifecycle for EV charging?

search and on_search for discovery, select and on_select for a quote, init and on_init for terms, confirm and on_confirm to create the order and issue an authorization token, then status, update and cancel to track, modify or void it. Every action has a matching callback.

Does Beckn replace OCPI?

No, they are complementary layers. Beckn provides open discovery and booking across providers with no prior relationship; OCPI provides bilateral roaming between two parties who have registered with each other. A CPO commonly runs both, with OCPP underneath talking to the hardware.

Why is Beckn fully asynchronous?

Because discovery is a broadcast that many providers answer at different speeds, so no single synchronous response could carry the result. Every request is answered with an immediate ACK receipt, and the real answer arrives later as a separate callback in the opposite direction.

Do you need a public endpoint to build a Beckn BAP?

Yes. A BAP is not just a client — it must expose a publicly reachable callback endpoint that verifies signatures, because every answer arrives as an inbound HTTP request rather than as a response to the one it sent.