Funds we never hold
Voltu is not a wallet and not a payment aggregator. The driver pays the operator directly, over their own UPI app or over the open network with collected_by=bppso the operator collects the metered amount via a UPI mandate. There is no Voltu balance, no card storage, no float. It removes the heaviest compliance surface entirely, and it is literally true in the product copy (“we never held your money”).
Data residency
All application data lives in India (Supabase, Mumbai ap-south-1). Any payment-adjacent data stays in India per RBI expectations. Map tiles, glyphs and station data are self-hosted, so we can apply India’s official boundaries per the National Geospatial Policy rather than depend on a foreign map that mis-depicts them.
DPDP & consent
Aligned to the Digital Personal Data Protection Act, 2023: consent is granular and purpose-limited (location, arrival telemetry, analytics and marketing are separate asks, each revocable), tracked in a consent ledger. Data-principal rights (access, correction, erasure) are exercisable in-app, a privacy notice is published, and a grievance officer is named. Transactional and marketing communications are separated and honour their own consent.
Data minimisation
The reliability layer needs one fact: did a driver arrive and did it work. Arrival telemetry is geofenced to within ~120 m of a known charge point, records only a site id, a timestamp and a yes/no, and where else you drove is matched on-device and discarded. Crowd reports carry no reporter identity when read back. Nothing is sold, ever.
Least privilege
- Row-Level Security on every table. A user reaches only their own rows; cross-user access is denied by policy, not by convention.
- The service-role key is server-only: never in the app bundle or the browser. Public web forms use the anon key with insert-only policies, so nothing can be read back.
- Every input is validated against a shared schema; the server, not the client, decides auth and geo-verification.
- Secrets live in EAS Secrets / Supabase Vault, never in git; queries are parameterised.
Signed rails
Trust artefacts are cryptographically signed with Ed25519. Our Beckn/UEI buyer-app signs every outbound request, and verifies every inbound callbackagainst the partner’s registered key over the raw body before it is trusted; unverified callbacks are dropped. Private keys stay in the Vault; only public keys are ever registered with the network.
App & transport
- TLS 1.3 in transit; certificate pinning on the mobile client.
- Platform attestation (Play Integrity / App Attest) to keep automated abuse off the network.
- Short-lived tokens in secure device storage; biometric app-lock available.
- CI runs dependency and static analysis; type-checking gates every merge.
Anti-abuse (the crowd is the moat, so it’s defended)
A single report never moves a public grade. A success rate is withheld until at least three graded reports earn it. Reports are server-side geo-verified (a report filed at the charger counts double; one filed from afar counts less), rate-limited per user, and weighted so an operator cannot upvote its own dead charger. Corrections are one-vote-per-driver-per-kind and are surfaced as counts, never auto-applied by a single actor.
CERT-In & incidents
Operations are built to the CERT-In 2022 directions: cyber-incident reporting within six hours, logs retained 180 days in India, synchronised clocks, and an independent VAPT before public launch. Observability (crash, performance, release health) is wired from day one, with PII and location masked and gated behind analytics consent.