EdgePay brings full UPI banking to every Indian, regardless of internet access. Built on USSD technology, it works on any phone, any network — even where 2G is a luxury.
Where internet is a privilege, not a given. EdgePay bridges the digital payments divide using infrastructure that already exists — every GSM tower, every SIM card.
EdgePay's core innovation is a fully abstracted USSD payment layer built on India's National Unified USSD Platform. Payments are processed through the phone's native GSM radio — working on every Indian carrier at just 2G speeds, deep in rural areas where data connectivity doesn't exist.
A fully UPI-integrated digital wallet with PIN verification and locally encrypted transaction state. Users can send, receive, and manage funds using only their UPI VPA — no bank app or internet required for most operations.
Vision Camera integration with ML Kit-powered decoding. Merchant UPI ID and amount auto-populate into the payment form. Handles low-light conditions and both static and merchant-displayed QR codes at under 120ms on budget devices.
A dual-path SMS system guarantees payment reliability. Listens via BroadcastReceiver for real-time bank debit alerts, and also polls the inbox as fallback. A custom multi-pattern parser extracts transaction IDs, amounts, and timestamps — confirming payments within seconds.
Full-service banking through secure USSD channels — check balances, change UPI PIN, and request money without opening a browser or bank app. Every action is handled by NPCI's verified banking infrastructure.
All USSD and wallet transactions are stored locally in encrypted, structured format. History includes merchant details, timestamps, transaction references, and status indicators — parsed from SMS confirmations. Private by default, no cloud sync needed.
Balances are hidden by default (₹ ••••••) for user privacy. Every sensitive action — Check Balance, Send Money — is PIN-protected. PIN values are handled natively and zeroed in memory after use, aligned with OWASP MASVS-CRYPTO.
Three native Android widgets give you real-time financial data at a glance: Home Status (4×1), Savings Goal tracker (2×2), and Expense Percentage display (2×2). All powered entirely from local store — no cloud required.
Set a monthly salary or pocket money budget. Auto-deduction logic continuously scans confirmed transactions via SmsParser and updates your remaining balance in real-time via Zustand. Spending percentage calculated and surfaced on the widget instantly.
No internet handshake. No server round-trips. EdgePay talks directly to India's national USSD banking infrastructure — the same system powering every major bank's offline UPI feature.
Point your camera at any BHIM UPI QR code — the scanner auto-decodes the UPI ID and amount. Alternatively, type the recipient's mobile number directly. QR payments follow BHIM UPI ID structure; mobile-number payments work with most major banks via USSD. No internet needed at any point.
Review the summary — recipient, amount, remark. Enter your UPI PIN. The app constructs the USSD command (*99*1*1*<mobile>*<amt>*<remark> or 1*<pin>#) and dials it via ACTION_CALL — completely offline over GSM.
Once the USSD session completes, the bank sends a standard SMS debit alert. EdgePay's SMS engine intercepts this, parses the transaction reference and amount, and surfaces a clear "Payment Successful" card within 2–3 seconds. Logged locally.
Building offline payments on Android wasn't calling an API. It meant reverse-engineering telephony primitives, fighting OS restrictions, and rethinking how mobile apps confirm financial transactions.
Modern Android sandboxes restrict programmatic USSD dialing. Strings with * and # are intercepted at the dialer layer. CALL_PHONE permission management also differs wildly across Android 7–14 and OEM firmware variants.
Built a Kotlin-native TelephonyManager bridge exposed to React Native via a custom NativeModule. The USSD string is URL-encoded, wrapped in a tel: intent, and dispatched via startActivity(ACTION_CALL) — bypassing the RN bridge entirely for telephony.
India has 50+ banks, each formatting its debit confirmation SMS differently — varying terminology, date formats, merchant name placements, and encoding quirks. A naive regex fails across all but one bank's format.
Built a multi-pattern SMS parser with a ranked priority queue of 12+ regex templates tuned to specific bank formats. Extracts a normalised struct — {amount, bank, txnRef, timestamp} — regardless of input variation, with BroadcastReceiver + inbox polling dual-channel strategy.
Running ML Kit BarcodeScanning on every camera frame at 30fps caused severe frame drops and UI thread blocking on low-end Android devices. The RN bridge introduced serialisation overhead on every native call.
Integrated react-native-vision-camera with Worklets to run barcode decoding on a native thread — never touching the JS or UI thread. Results forward to React Native only on successful decode. Cut scan latency from ~800ms to under 120ms on budget devices.
JavaScript's GC doesn't guarantee immediate memory reclamation, meaning UPI PINs can linger in heap memory long after a transaction — exposable via memory dumps on rooted devices.
PIN values captured natively and passed directly to the Kotlin USSD bridge via a single-use NativeModule call, never persisted to React Native state. Stored in a CharArray and zeroed via Arrays.fill(pinArray, '\0') immediately after use — aligned with OWASP MASVS-CRYPTO.
React Native has no built-in telephony API. The standard Linking.openURL('tel:...') opens the dialer instead of dialing USSD, breaking the in-app payment flow. Additionally, the RN New Architecture introduced breaking changes to the NativeModule contract.
Authored UssdModule.kt — a fully typed RN NativeModule exposing dialUssd(ussdString, promise) to JavaScript. Implements both the legacy NativeModule interface and a TurboModule spec file for forward compatibility. Dispatches via a properly encoded Intent and resolves the Promise with success/error payload.
Every service is routed through NPCI's National USSD Platform — the same infrastructure your bank uses for its own offline UPI feature.
Send to any mobile number or BHIM UPI ID — no internet. App builds the USSD string, dials it over GSM, bank confirms via SMS. Works for most major Indian banks.
Live bank balance — entirely over GSM radio. Zero internet, zero data. Both USSD (*99*3#) and missed-call banking supported. Results in 3–4 seconds.
Reset or update your UPI PIN entirely through USSD — no internet, no bank app, no OTP email. Debit card details verified directly on NPCI's side.
Send a collect request to any mobile number — they get a standard UPI notification and can approve from any UPI app. Perfect for splitting bills or merchant collections.
A carefully chosen stack that marries cross-platform development speed with native Android performance — because offline payments cannot afford to compromise on reliability.
EdgePay doesn't use a generic adapter. It ships hand-tuned bank-specific logic — separate protocol paths for different banks, with a multi-pattern regex brain that works across 50+ Indian bank SMS formats.
EdgePay ships three native Android widgets — so your financial snapshot is a glance away, even when the app is closed. No internet. No refresh delay. Purely local.
Set your monthly salary or pocket money budget once. EdgePay's auto-deduction logic continuously scans your transaction history and maintains a live view of what's left — zero manual entry.
EdgePay uses a decoupled architecture where the React Native UI communicates with a specialized Banking Engine — keeping telephony, parsing, and state management cleanly separated.
EdgePay requires a physical Android device — USSD/SMS listeners cannot be emulated. A real SIM card is needed for full telephony functionality.
These aren't edge cases — millions of Indians face payment failures every day because digital finance was built assuming internet always works.
EdgePay was built to make these statistics history — payments that work regardless of internet, carrier, or geography.
Download EdgePay and start making UPI payments with nothing but a GSM signal. No data plan, no bank app, no internet dependency — ever.