November 3, 2026 · BY RAJ · MOBILE APP DEVELOPMENT

UPI Payment Integration in Apps: Intent, QR and AutoPay

Build app checkout on the UPI intent flow, use dynamic QR for desktop and counters, AutoPay for subscriptions, and confirm every payment server-side.

← All posts

Topics: Custom software & SaaS, Mobile apps

Want this done for your business? Get a fixed quote or book a free 30-minute call.

Quick answer: Build mobile checkout around the UPI intent flow, which opens the customer's UPI app with the amount already filled in, and use dynamic QR codes for desktop, kiosk and counter payments. Use UPI AutoPay mandates for recurring charges. Whatever the flow, mark an order paid only after your server confirms it through a webhook or status API, never on the app's callback alone.

Indian customers judge your checkout against the smoothest UPI payment they have ever made: tap, pick an app, enter the PIN, done. Matching that inside your own app means choosing the right flow for each screen, handling the awkward cases and never taking the phone's word that money moved. If you have not yet picked a provider, our guide to choosing a payment gateway in India covers that decision; this one is about the build.

Which UPI flows can an app use?

Four flows matter for apps: intent, dynamic QR, merchant collect and AutoPay. Most apps need intent plus QR, and AutoPay only if they bill on a schedule.

FlowHow it worksBest forWatch out for
IntentYour app opens a UPI app with payee, amount and reference prefilled; the customer approves with their PINPayments on the same phone as your appBehaves differently on iOS
Dynamic QRA one-time QR code tied to one order is shown on a screen and scanned with a phoneDesktop checkout, kiosks, counters, delivery staffNeeds live status updates on the screen
Collect (merchant)The customer types their UPI ID and approves a request in their UPI appA fallback onlyMore steps and more drop-off
AutoPayThe customer approves a mandate once; you debit on scheduleSubscriptions, memberships, instalmentsDebit limits and pre-debit notices

Per NPCI's July 2025 circular, person-to-person collect requests were withdrawn from 1 October 2025. Merchant collect still exists, but the direction of travel is clear: design around intent and QR.

How does the UPI intent flow work on Android and iOS?

On both platforms, your server creates the order first and the app only hands off the payment. The sequence:

  1. Your server creates an order with the amount and a unique reference, through your gateway.
  2. The app receives either a UPI intent link or a list of supported UPI apps from the gateway SDK.
  3. The customer picks an app, sees the amount and merchant name, and approves with their PIN.
  4. Control returns to your app, which shows a "confirming payment" state rather than success.
  5. Your server receives the gateway's webhook or checks the status API, then marks the order paid.
  6. The app shows the result your server reports.

Android handles this neatly. A upi://pay intent opens a chooser of installed UPI apps, or you can show your own list of detected apps. From Android 11, apps must declare which other apps they query, so the manifest needs the right entries.

iOS has no system chooser for this. Several UPI apps register the same generic link, and iOS decides which one opens, so you cannot rely on it. Apps instead check for specific UPI apps by their own link schemes and show a list of those installed. Gateway SDKs maintain that list for you. Returning to your app is also less predictable on iPhone, so check payment status every time the app comes back to the foreground.

Always offer a fallback when no UPI app is found, such as on an iPad or a new phone: a QR code, card or netbanking.

When should you use a dynamic QR instead?

Use QR whenever the customer pays on a different device from the one showing the bill. That covers desktop web checkout, self-order tablets in restaurants, billing counters, TV apps and delivery staff collecting at the door.

Rules for a QR flow that reconciles cleanly:

  • Generate a fresh QR for each order, tied to one amount and one order reference
  • Set an expiry and regenerate if the customer is slow
  • Show the amount and your business name beside the code
  • Update the screen automatically when payment lands, by polling your server or using a live connection
  • Never print one static QR for every order if you need to match payments to orders automatically

On mobile web, detect the device and offer intent on phones and QR on desktops.

How do you set up UPI AutoPay for subscriptions?

The customer approves a mandate once in their UPI app, setting a maximum amount, frequency and validity, and you debit within those limits. It suits tiffin services, gym memberships, coaching fees, SaaS and instalment plans.

The rules you design around:

  • Authentication limits. Under RBI's e-mandate framework, recurring debits up to ₹15,000 go through without the customer entering their PIN each time. Certain categories, including mutual fund investments, insurance premiums and credit card bill payments, have a higher limit of ₹1 lakh. Above the limit, the customer authenticates each debit.
  • Pre-debit notification. The customer must be told before each debit, so build that message into your billing job.
  • Customer control. Customers can pause or revoke a mandate from their UPI app, so handle those webhook events and stop service gracefully.
  • Price changes. A new price above the mandate's maximum needs a new mandate.
  • Failed debits. Plan retries, reminders and a grace period.

One caution for apps: if the subscription unlocks digital content inside the app, check Apple's and Google's billing rules first, because store billing may be required. Our overviews of subscription billing options and app monetisation models cover that trade-off.

How do you confirm a payment really succeeded?

Trust only your server, and only after the gateway confirms. The response a UPI app passes back to your app can be missing, delayed or tampered with, and customers sometimes close the app mid-payment.

StatusWhat the app showsWhat the server does
Initiated"Complete the payment in your UPI app"Order reserved, awaiting confirmation
Pending"We're confirming with your bank. Don't pay again."Polls the status API on a schedule up to a cut-off
Success (verified)Order confirmationMarks paid once, triggers fulfilment
FailedRetry optionsReleases the reservation
Late success after expiryMessage and refund noticeRefunds automatically or fulfils if stock allows

Three engineering rules make this robust:

  1. Verify webhook signatures with the gateway's secret, held on your server and never inside the app.
  2. Make fulfilment idempotent. Duplicate webhooks happen, so use the order ID to make sure an order is fulfilled only once.
  3. Reconcile daily against the gateway's settlement report, so stray pending payments are caught.

Keeping secrets off the device is one of several mobile app security basics that apply directly to payments.

Should you use a gateway SDK or integrate with a bank directly?

Most businesses should use a payment aggregator's SDK. It handles UPI app detection, intent links, QR, AutoPay mandates, webhooks, refunds and settlement, and also gives you cards, netbanking and wallets through one integration and one onboarding.

Direct integration with a bank or payment service provider makes sense only at high volumes, when lower processing costs justify bank onboarding, more compliance work and building reconciliation yourself. Even then, many businesses keep a gateway as a fallback.

When comparing gateways for an app, check the quality of the Android, iOS and cross-platform SDKs, AutoPay support, webhook reliability, refund handling and settlement timing, not just headline pricing.

What should you test before launch?

Test the failure paths harder than the happy path. A checklist for your QA team:

  • [ ] Customer backs out of the UPI app without paying
  • [ ] App killed mid-payment, then reopened later
  • [ ] Wrong PIN, insufficient balance, daily limit reached
  • [ ] Payment pending for several minutes, then succeeding
  • [ ] Webhook delayed, and webhook delivered twice
  • [ ] Customer double-taps Pay
  • [ ] No UPI app installed; one UPI app; several UPI apps
  • [ ] iPhone and Android, including older OS versions you support
  • [ ] Full and partial refunds, and how they appear to the customer
  • [ ] AutoPay approve, pause, revoke, failed debit and amount above the mandate
  • [ ] Network drop between each step
  • [ ] Reconciliation against the settlement report

Our mobile app development guide explains where payment testing fits in the wider build and release plan.

Frequently asked questions

What is the UPI intent flow?

It is a hand-off from your app to the customer's UPI app, with payee, amount and order reference already filled in. The customer approves with their UPI PIN and returns to your app. It is the quickest UPI checkout on a phone because nothing needs typing.

Does UPI intent work on iPhone?

Yes, but differently. iOS has no chooser for UPI apps, so apps check which supported UPI apps are installed and let the customer pick one. Gateway SDKs handle that list, and your app should re-check payment status when the customer switches back.

Can an app accept UPI without a payment gateway?

A plain UPI link to your UPI ID can move money, but you get no reliable server-side confirmation, no automatic reconciliation and no clean refunds. For a business app, use a gateway or a direct bank integration with status APIs and webhooks.

How does UPI AutoPay work for subscriptions?

The customer approves a mandate once in their UPI app, setting a maximum amount and frequency. You then debit on schedule after notifying them, without a PIN for debits up to ₹15,000 in most categories under RBI's framework. Customers can pause or cancel from their UPI app.

Why do some UPI payments stay pending?

Pending usually means the bank has not yet confirmed the final status, often because of a timeout between banks or the network. Most resolve within minutes, but some take longer. Tell the customer not to pay again, keep polling and refund automatically if money arrives after the order has expired.

Build a checkout that confirms itself

We build Android, iOS and cross-platform apps for Indian businesses, with payment flows tested against the messy cases above. Explore our mobile app development work, or share your checkout plans and get a fixed quote after a free call.

Get a fixed quoteWhatsApp