UPI is the lifeblood of Indian commerce in 2026 — 12+ billion transactions per month, used by everyone from your local kirana store to enterprise B2B. If you're building a product that handles money, UPI integration is non-optional.
This is the guide our Excellence Web Services team wishes existed when we built our first UPI integration in 2022.
The two paths: payment gateway vs direct PSP
Path 1: Through a payment gateway (Razorpay, Cashfree, PayU)
Easier, faster, slightly more expensive (gateway charges + payment-aggregator fees).
What you get: a simple "Pay with UPI" button. The gateway handles the PSP integration, settles money to your bank. You don't deal with NPCI rules directly.
Best for: 95% of startups. SaaS, e-commerce, marketplaces.
Path 2: Direct PSP integration
Direct partnership with a PSP (Payment Service Provider) bank — e.g., ICICI, Axis, HDFC, Yes Bank.
Cheaper at scale, more control. Required for things like custom collection flows, fintech products, or anything regulated by RBI's PA-PG framework.
Best for: lending platforms, neo-banks, large-scale e-commerce, B2B billing platforms.
Collect vs intent flows
Collect flow
You generate a payment request, customer receives a notification in their UPI app (GPay, PhonePe, Paytm), approves and pays.
Use case: recurring billing, B2B invoicing, "send me an invoice and I'll pay it" flows.
Downside: customer must have their UPI app set up correctly. Higher drop-off.
Intent flow
You generate a UPI deep-link or QR code. Customer scans/clicks and lands in their UPI app with payment details pre-filled.
Use case: e-commerce checkout, in-person QR payments, app-to-app.
Best practice for desktop: show a QR code. Best practice for mobile: trigger the intent URL.
The reconciliation problem
Every UPI payment has multiple status updates: initiated, sent to bank, sent to NPCI, success/failure, settlement to your bank account.
Reconciling these correctly — especially at scale — is the single biggest engineering challenge in UPI. Common pitfalls:
- Treating "initiated" as "paid". You'll deliver goods before money arrives.
- Not handling delayed-success. UPI payments can take 24+ hours to confirm in edge cases.
- Not handling refunds correctly. The reverse leg has its own status flow.
- Not handling deduplication. Customers can retry, generating multiple transactions.
The compliance basics
- Settlement must go to a bank account in the business's legal name. No shortcuts.
- KYC of merchants is mandated by RBI — your gateway/PSP will do this.
- For high-value transactions (₹2L+), additional KYC may be required of the customer.
- Recurring payments via UPI use UPI AutoPay — a separate flow with its own mandate registration.
UX best practices for India
- Show UPI as the first payment option. It's what 70%+ of users will pick.
- Don't make users type a UPI ID — use intent flow.
- Display the merchant name clearly in the UPI app (this is configured during merchant onboarding).
- Handle "payment failed" gracefully with a clear next step.
- For B2B, support showing a static QR + amount.
Edge cases that will bite you
- Bank server downtime — UPI fails when the customer's bank's server is down. Show a clear message.
- Daily transaction limits — UPI has per-user daily limits that vary by bank.
- App version mismatches — older versions of UPI apps handle deep-links differently.
- NRI accounts — UPI rules for NRIs are different and tricky.
What we charge to integrate UPI
At Excellence, basic UPI integration via Razorpay/Cashfree: ₹15,000–₹40,000. Custom UPI flows with intent generation, reconciliation logic, and refund handling: ₹80,000–₹3,00,000.
If you're building anything that touches UPI, talk to our fintech team. Even if you don't hire us, we'll point you at the right pitfalls to avoid.
