TL;DR — Pick the right UPI flow
- Intent flow (mobile apps): user picks UPI app, completes in-app. Best UX, ~92% success.
- Collect flow (web + mobile): user enters UPI ID, gets push to their app. Slowest, ~75% success.
- AutoPay (mandates): subscription billing. ~85% success on month 1, drops over time.
- QR (in-store / desktop): scan-and-pay. Best for offline-to-online. ~88% success.
The 4 UPI flows
1. Intent flow (the one you should default to on mobile)
User taps "Pay with UPI" → OS opens UPI app picker (PhonePe / Google Pay / Paytm / BHIM) → user confirms in their app → returns to your app with success/failure.
Why it wins: No typing UPI IDs (huge drop-off source). User's UPI app remembers their PIN. ~92% completion rate in 2026.
Implementation: Razorpay/Cashfree SDKs handle it via deep links. ~1 day to integrate cleanly. The gotcha is handling the return: if the user's UPI app crashes mid-payment, you might get a stuck transaction. Always poll for status post-redirect.
2. Collect flow (web checkout default)
User types their UPI ID (yourname@okhdfcbank) → bank pushes a payment request to their UPI app → user approves there → callback fires.
Why it loses: Typing is friction. Mistyped IDs waste time. Push notifications get missed. ~75% success in 2026 — meaningfully worse than Intent.
When you must use it: Desktop web (no Intent flow possible without QR). Even there, QR is usually better than Collect.
3. AutoPay (mandates) — for subscriptions
NPCI's UPI AutoPay lets you charge a user repeatedly with their one-time consent. Maximum ₹15,000 per debit (raised from ₹5,000 in 2024). Used for SaaS, OTT, EMI, insurance.
Setup flow:
- User completes initial subscription mandate (one-time UPI auth)
- You raise debit requests through the gateway (Razorpay / Cashfree / Juspay)
- NPCI pre-debit notification sent 24h before
- Auto-debit attempts; user can cancel via UPI app
Reality check: First-month success ~85%. By month 6, drops to 60–70% as users delete UPI apps, change banks, hit balance shortfalls. Always have a fallback (card-on-file or "tap to renew" reminder flow).
4. QR code
Best for desktop web (where deep links don't work) and offline (counter / table payment). User scans QR with their UPI app, sees pre-filled amount, confirms.
Two flavours:
- Static QR (your account, no amount) — user enters amount manually. Use for kirana / single-vendor with no integration.
- Dynamic QR (per-transaction, pre-filled amount) — generated server-side, has TTL, links to specific order. Use this for any e-commerce checkout.
Common gotchas (we've hit all of these)
- Status polling races: User completes payment in UPI app, but your webhook fires before your DB update. Always idempotent + use webhook reconciliation, not just front-end success.
- Stuck transactions: User's UPI app crashes. Money debited but no callback. Run a reconciliation job every 15 min for "pending" transactions older than 5 minutes.
- Refund timing: UPI refunds are not instant. T+0 to T+3 typically. Set user expectations in the refund email.
- Bank-side failures: Some banks' UPI infrastructure is flaky on Sundays. Your conversion rate has weekly cycles. Track by bank in analytics.
- Above-₹1L transactions: UPI per-transaction limit is ₹1L (₹5L for some categories). Build card fallback for high-value orders.
For Indian e-commerce / SaaS: Intent-first on mobile, QR on desktop, Collect as last fallback only. Always with reconciliation jobs and status polling. See our gateway comparison →
FAQ
Can I integrate UPI directly with NPCI without a gateway?
Technically yes via the Aggregator licence path. Practically: don't, unless you're a fintech with compliance team. ~95% of Indian SMBs and SaaS go through Razorpay / Cashfree / Juspay. Cost is sub-2% per txn — well worth not building reconciliation infra yourself.
What about UPI Lite for small payments?
UPI Lite is for <₹500 transactions, no PIN required, debits from a Lite balance the user pre-loads. Fast UX. Adoption is still <10% of overall UPI volume in 2026 — not worth building special-case logic for unless your average ticket is <₹200.
Last reviewed: 19 April 2026.
Want this built for you?
Talk to Kashvi — 30-min call, honest assessment, no pitch deck.