Problem
The current UEI EV charging implementation guide only documents the PRE-ORDER
payment flow, requiring drivers to pay upfront before the session starts. This
creates friction for new users and locks funds in CPO wallets before any energy
is delivered.
Note: ON-FULFILLMENT is already a valid enum value in the layer2 spec
(payment_misc.yaml, energy_EV_1.1.0_openapi_3.1.yaml) — it has simply
never been documented with usage examples in the implementation guide.
Proposed Change
Add implementation guide documentation for ON-FULFILLMENT payment type,
enabling postpaid metered charging:
- Session starts without upfront payment (
status: NOT-PAID, amount: "0")
- Real-time cost updates via
on_status with a new LIVE-METER tag group
(energy-delivered, cost-so-far, rate)
- BPP sends UPI collect to driver's VPA after
TransactionEvent(Ended)
- Cable remains physically locked until UPI collect is approved
- Final
on_update carries SESSION-SUMMARY tag (verified kWh + cost) and
transitions payment to PAID and fulfillment state to cable-released via
OCPP UnlockConnector
Use Case
India's DC fast chargers (CCS2 / CHAdeMO) have cable-lock hardware that
prevents drive-offs before payment. The meter-then-pay model is already
familiar to Indian users (auto-rickshaws, Uber). This extends the same
pattern to EV charging without requiring wallet pre-loading or CPO registration.
Enforcement Mechanism
Cable lock (DC chargers): connector is physically locked by the charger until
the BPP sends OCPP UnlockConnector — issued only after receiving UPI
collect confirmation.
I plan to submit a PR with:
- A complete
ON-FULFILLMENT postpaid flow covering the full session lifecycle:
confirm → session start → live metering → session end → UPI collect → cable release
- A new
LIVE-METER tag structure for real-time kWh and running cost
updates pushed to the BAP during an active charging session
- A new
SESSION-SUMMARY tag structure carrying verified final energy
and cost figures sent at session end, before payment is collected
- A
cable-released fulfillment state that signals successful UPI
collection and OCPP connector unlock — completing the postpaid lifecycle
- Taxonomy entries for all new tag codes, fulfillment states, and
payment params (virtual_payment_address, transaction_id) introduced
by this flow
Problem
The current UEI EV charging implementation guide only documents the
PRE-ORDERpayment flow, requiring drivers to pay upfront before the session starts. This
creates friction for new users and locks funds in CPO wallets before any energy
is delivered.
Note:
ON-FULFILLMENTis already a valid enum value in the layer2 spec(
payment_misc.yaml,energy_EV_1.1.0_openapi_3.1.yaml) — it has simplynever been documented with usage examples in the implementation guide.
Proposed Change
Add implementation guide documentation for
ON-FULFILLMENTpayment type,enabling postpaid metered charging:
status: NOT-PAID,amount: "0")on_statuswith a newLIVE-METERtag group(
energy-delivered,cost-so-far,rate)TransactionEvent(Ended)on_updatecarriesSESSION-SUMMARYtag (verified kWh + cost) andtransitions payment to
PAIDand fulfillment state tocable-releasedviaOCPP
UnlockConnectorUse Case
India's DC fast chargers (CCS2 / CHAdeMO) have cable-lock hardware that
prevents drive-offs before payment. The meter-then-pay model is already
familiar to Indian users (auto-rickshaws, Uber). This extends the same
pattern to EV charging without requiring wallet pre-loading or CPO registration.
Enforcement Mechanism
Cable lock (DC chargers): connector is physically locked by the charger until
the BPP sends OCPP
UnlockConnector— issued only after receiving UPIcollect confirmation.
I plan to submit a PR with:
ON-FULFILLMENTpostpaid flow covering the full session lifecycle:confirm → session start → live metering → session end → UPI collect → cable release
LIVE-METERtag structure for real-time kWh and running costupdates pushed to the BAP during an active charging session
SESSION-SUMMARYtag structure carrying verified final energyand cost figures sent at session end, before payment is collected
cable-releasedfulfillment state that signals successful UPIcollection and OCPP connector unlock — completing the postpaid lifecycle
payment params (
virtual_payment_address,transaction_id) introducedby this flow