Interactive Demo · UPI Checkout

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.

Flow 1

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.

Flow 2

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

UPI · NPCI
Amount to pay
₹499

One-time payment · No hidden charges

Order WW-2024-8831

Choose UPI app

PhonePe

PhonePe

UPI · linked account

Google Pay

Google Pay

UPI · Tez enabled

Paytm

Paytm

UPI · wallet linked

BHIM

BHIM

NPCI · all banks

Bank-level security RBI regulated

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.

@payremixlabs_chat