How UPI Intent & QR checkout actually works
Two interactive demos showing what happens when an Indian player deposits ₹499 — the mobile Intent flow that hands off to PhonePe / Google Pay / Paytm / BHIM, and the desktop QR flow that scans through any UPI app. Both end at the same state: your server receives a signed webhook.
UPI Intent (Mobile)
On a phone, the merchant opens a upi://pay?... deep link. Android/iOS shows the user every UPI app installed on their device. The user picks one; the app launches with merchant VPA, amount, and order ID pre-filled. The user just approves with their UPI PIN — no typing, no copy-paste.
UPI QR (Desktop)
On a laptop, the merchant displays a QR containing the same upi://pay?... string. The user scans it with any UPI app on their phone, approves, and the desktop page polls the merchant backend until it sees payment.succeeded and flips to the success state.
PayRemixLabs Checkout
SSL encrypted · 256-bit
One-time payment · No hidden charges
Choose UPI app
PhonePe
UPI · linked account
Google Pay
UPI · Tez enabled
Paytm
UPI · wallet linked
BHIM
NPCI · all banks
Frequently asked questions
Does clicking a upi:// link actually open the UPI app?
On a phone with at least one UPI app installed, yes. The OS presents an app chooser if multiple are installed. On desktop, the link has no handler — which is why desktop checkouts render a QR encoding the same string.
What's inside the upi://pay URL?
The parameters are standard NPCI spec: pa (merchant VPA), pn (payee name), am (amount), cu (currency, always INR), tn (transaction note / order ref). Some flows add tr for a unique transaction reference so the merchant can match the collect request.
How does the merchant know the payment succeeded?
Two signals, either of which is authoritative: (1) the merchant polls GET /v1/payments/{id} every 2-3 seconds, and (2) the UPI provider POSTs a signed webhook to the merchant endpoint when the bank confirms the debit. Polling fills the UX gap while the webhook is in flight.
Why does the UPI app pre-fill everything? Is the user typing a VPA?
No typing. The intent URL / QR carries all fields. That's the entire UX advantage of UPI Intent over "enter your VPA" flows — fewer fields means higher success rates, especially on mobile.
What happens if the user dismisses the UPI app?
Nothing debits; the collect request expires (typically 5 minutes). The merchant page shows a timeout state and offers a retry. Always treat the webhook — not the redirect — as truth for payment status.
Ready to ship UPI checkout on your site?
PayRemixLabs gives you UPI Intent, QR collect, and webhook infrastructure for high-risk iGaming, fantasy sports, and forex merchants in India.