UPI processes more transactions than every other Indian payment rail combined. For a Shopify D2C, UPI is 60-75 percent of revenue. For a SaaS, it's 40-60 percent. For B2B + invoiced businesses, it's growing year-on-year as enterprise UPI adoption matures.
The integration architecture under that volume determines whether your checkout converts cleanly, your reconciliation is sane, and your dispute resolution doesn't consume the finance team. This is the reference architecture we apply on UPI engagements at meaningful scale.
What UPI actually is (and isn't) in 2026
UPI (Unified Payments Interface) is NPCI's instant payment rail. Not a payment processor, not a wallet, not a card network. It's a thin layer on top of bank accounts that lets value move in real-time between any two UPI-enabled accounts.
For merchants, three integration patterns dominate:
| Pattern | What it means | When to use |
|---|---|---|
| UPI Collect | Customer enters UPI ID; you push a collect request to their PSP app | Lowest-friction; rare in 2026 (one-time-charge use cases) |
| UPI Intent | Your checkout deep-links to the customer's UPI app; they approve | Most common; mobile-only |
| UPI AutoPay | Customer sets up a mandate; you can charge per the mandate terms | Subscriptions, recurring payments, EMI |
In 2026, UPI Intent + UPI AutoPay cover ~95 percent of D2C payment volume. The legacy UPI Collect flow is increasingly rare.
PSP selection: who you actually integrate with
You don't integrate with NPCI directly. You integrate with a Payment Service Provider that handles the UPI plumbing + the merchant-facing API. The choice matters more than most teams realise.
The 2026 PSP landscape for India
| PSP | Strengths | Trade-offs | Right for |
|---|---|---|---|
| Razorpay | Largest market share, deepest documentation, strong Shopify integration, multiple payment methods | Settlement T+1 standard; T+0 costs extra | Most D2C + SaaS at any scale |
| PhonePe Payment Gateway | Strong UPI conversion (PhonePe is the leading consumer UPI app), competitive pricing | Smaller integration ecosystem than Razorpay | UPI-heavy traffic; Shopify with PhonePe app |
| Cashfree | Strong B2B + payouts, instant settlement options | Smaller merchant base than Razorpay | B2B + marketplace platforms |
| PayU | Older, enterprise-credible, multi-method | UX feels dated; ecosystem smaller in 2026 | Enterprise + regulated industries |
| Juspay | Best-in-class for routing + observability | Higher implementation complexity | Marketplaces + cross-border; high-volume |
| BillDesk | Strong utility + recurring billing | Less D2C focused | Recurring billing + utility-style businesses |
How to evaluate PSPs
Beyond pricing, the criteria that matter:
- UPI success rate. what percentage of attempted UPI transactions succeed. Industry average is 75-85 percent; the best PSPs hit 88-92 percent. A 5 percent difference compounds.
- Settlement velocity. when does money hit your bank. T+0 vs T+1 vs T+2 affects working-capital cost.
- Refund processing. instant refund support + reliability of refund SLAs.
- Dispute handling. chargeback + dispute workflow quality + first-line resolution rate.
- API + SDK quality. error messages, idempotency support, sandbox parity.
- Settlement reconciliation tools. daily settlement reports + bank reconciliation support.
- Multi-bank settlement. can you split settlement across multiple bank accounts (useful for marketplaces + multi-entity businesses).
Most Indian D2C brands at Rs 10-100 crore ARR run with Razorpay as the primary PSP. Larger or specialised needs add a second PSP for redundancy + specific use cases.
UPI Intent: the dominant checkout flow
For mobile checkouts (where 80+ percent of Indian D2C traffic lives), UPI Intent is the default flow.
How the flow works
- Customer reaches checkout + selects UPI as the payment method
- Customer picks their preferred UPI app (PhonePe, Google Pay, Paytm, BHIM, BHIM SBI Pay, Amazon Pay)
- Your checkout generates a deep link to that app (UPI Intent URL with merchant code + amount + transaction reference)
- Customer's UPI app opens with pre-filled payment details
- Customer approves with UPI PIN
- UPI app pushes payment to NPCI
- NPCI confirms to your PSP
- PSP confirms to your checkout
- Checkout shows success + the order ships
Architecture decisions per step
Step 2 (app selection): Show the customer a smart pre-selection based on user-agent or last-used. Auto-detecting + presenting their preferred app reduces taps + lifts conversion.
Step 3 (intent URL generation): Use the PSP's SDK; don't build the URL yourself. The deep-link format has small per-bank-app variations that the SDK handles.
Step 4-8 (the payment flow): Out of your control; the customer's UPI app + NPCI + the PSP own these. Failure modes here are external; your job is to handle them gracefully.
Step 9 (success handling): This is where many integrations break. The payment may be successful on UPI but your callback hasn't arrived yet. Your checkout needs to handle the "pending" state correctly.
The pending-transaction problem
The customer approves the payment on their UPI app, sees "Success" in their app, but your checkout still shows "Processing" because the webhook hasn't arrived.
Three causes:
- Webhook delay. NPCI to PSP to your server can take 2-30 seconds. Most webhooks arrive in 3-8 seconds; tail latency can be longer.
- Webhook failure. your endpoint was unreachable; the PSP retries on its own schedule.
- State synchronisation gap. the customer's app reports success based on local state; the actual settlement may still be propagating.
Your checkout MUST handle the pending state explicitly:
- Show a clear "Confirming payment" UI for up to 60 seconds
- Poll your server (or your PSP) for status periodically during the wait
- If still pending at 60s, show "We're still confirming your payment; you'll receive an email when complete"
- Background process to reconcile webhook events that arrive late
UPI AutoPay: the subscription pattern
For subscription D2C + SaaS recurring billing, UPI AutoPay is the right primitive in 2026.
How AutoPay works
- Customer sets up a mandate via their UPI app (authorising you to debit up to N rupees per Y days for Z duration)
- The mandate is stored on UPI infrastructure
- On each charge cycle, you submit a debit request via your PSP
- NPCI executes the debit per the mandate terms
- Customer receives a notification (post-debit, no approval required for amounts within mandate limits)
Mandate parameters
The mandate locks:
- Maximum amount per debit. set this above your typical charge but not excessively (it builds customer trust)
- Debit frequency. weekly / monthly / quarterly / annually
- Mandate validity. until-cancelled (one-time setup) or fixed-duration (3 / 6 / 12 months)
- Verification step. set to "as-presented" for most subscription flows (no per-debit OTP)
Failure modes specific to AutoPay
- Mandate revoked. customer cancels the mandate in their UPI app without telling you. Your debit attempt fails. Handle by detecting the mandate-revoked status code + initiating cancellation flow.
- Insufficient funds. most common failure. UPI doesn't have a "retry tomorrow" built-in like card networks; you re-submit + count on the customer adding funds.
- Mandate expiry. if you set a fixed duration, the mandate dies at expiry. Renew before expiry; don't surprise the customer with a failed charge.
Mandate management API
Every PSP exposes mandate-management endpoints: - Create mandate (called when customer subscribes) - Check mandate status (used to validate before each debit) - Cancel mandate (used when customer cancels subscription) - Update mandate (rare; most PSPs require cancel + create for material changes)
Reconciliation: where the finance team lives
Without clean reconciliation, you don't know your real revenue.
The three reconciliation pairs
| Pair | Frequency | Owner |
|---|---|---|
| Shopify orders vs PSP transaction log | Daily | Operations |
| PSP settlement vs bank account credit | Daily | Finance |
| Refunds processed vs PSP refund settlement | Weekly | Finance |
Discrepancies above a threshold (typically 1 percent on weekly volume) trigger investigation within 48 hours.
The hidden reconciliation challenge
UPI transactions often span multiple data sources:
- Customer's bank statement (what they paid)
- Customer's UPI app history (what their app shows)
- Your PSP transaction log (what your PSP received)
- Your PSP settlement file (what your PSP paid out)
- Your bank statement (what your bank credited)
- Your Shopify orders (what your storefront recorded)
Six data sources for one transaction. Mismatches anywhere create disputes.
Practical reconciliation tools
- PSP-side settlement reports. pulled daily, ingested into your warehouse or accounting system
- Shopify Reports. daily order export, joined with PSP data
- Bank statement API. most banks now offer API access; pulled daily + reconciled with PSP settlement
- Dispute tracking. every dispute logged with cause + resolution + days-to-resolve
The end goal: a finance team that knows by end-of-week whether last week's revenue ties out to the rupee.
Cost structure
UPI itself is free at the customer level. Merchant-side, the cost lines:
| Component | Typical cost |
|---|---|
| PSP commission on UPI | 0 (zero MDR mandated for UPI in 2026) OR small platform fee for value-added services |
| Settlement fees | T+1 standard free; T+0 typically Rs 50 per settlement |
| Refund processing fees | Vary; some PSPs charge per refund |
| Mandate management (AutoPay) | Small monthly per active mandate or per debit |
| Failed-transaction surcharges | Some PSPs charge for excessive failure rates |
UPI is by far the cheapest payment method in India. Optimising customers toward UPI vs cards saves 2-3 percent of revenue in payment processing costs.
Multi-bank settlement (advanced)
For brands with multiple business entities (Indian Pvt Ltd for India operations + GCC entity for UAE operations + UK Ltd for UK), the settlement-routing pattern matters.
Multi-bank PSPs (Razorpay, Cashfree, Juspay) let you:
- Route Indian transactions to the Indian Pvt Ltd bank account
- Route international card transactions (via separate flow) to entity-appropriate accounts
- Split settlement across multiple bank accounts for risk diversification
- Reconcile entity-wise without manual sorting
The architecture decision: one PSP for everything + use their routing OR one PSP per entity. The first is operationally simpler; the second gives more isolation.
Production checklist
For an enterprise UPI integration at Rs 25 crore+ India ARR:
- PSP selected against criteria above (default Razorpay + redundancy with Cashfree or PhonePe)
- UPI Intent flow live with proper app pre-selection
- UPI AutoPay live for subscription products
- Pending-transaction handling correct (60s grace + background reconciliation)
- Webhook signing validated + idempotent
- Mandate management API integrated for subscription workflows
- Reconciliation pairs running daily (Shopify x PSP, PSP x bank, refunds)
- Dispute tracking + resolution workflow
- Cost monitoring + monthly settlement review
- PCI scope minimisation (you should NOT touch raw card data; PSP handles it)
- DPDP-compliant data handling on customer + transaction metadata
- Quarterly governance review with CFO + finance lead
References + linked context
- Dcrayons glossary: oms, dunning
- Dcrayons reference architectures: Enterprise D2C on Shopify, Enterprise D2C Subscription Architecture, GST Billing Automation for Shopify D2C
UPI is the payment rail under everything else in Indian D2C. If your integration has hit a success-rate plateau, an AutoPay implementation gap, or a reconciliation pain, reach out via the contact form for a 30-minute review.



