99testsStart a job

Test case library · Payments

Test cases for UPI payment: PIN, intent and pending states

This flow covers sending money over UPI: choosing a payee, entering the UPI PIN and getting a clear final status, including when a merchant app hands off to a UPI app and back. In the field it rarely fails on the happy path. It fails in the gaps: a network drop just after the PIN, an app killed by a battery saver, or a screen that says Failed while the bank still holds the money.

40 test cases13 release-blocking (P1)13 need a real phoneUpdated 2026-10-29

From the reviews. 42 of the 317 malfunction reviews in our India App Quality Report describe a failed, stuck or double-debited payment. 34 of them are on apps other than UPI and banking apps, where paying is one step inside a booking, order, premium, top-up or repayment; 11 on travel apps alone.

category page · India App Quality Report

In scope

  • Paying a UPI ID, mobile number, contact or account with IFSC
  • UPI PIN entry and wrong PIN handling
  • Intent flow from a merchant app to a UPI app and back
  • Pending, deemed success and debited-not-credited states
  • Collect requests, history, receipts and notifications

Out of scope

  • Setting or resetting the UPI PIN with debit card details
  • AutoPay mandates and QR scanning, which have their own pages

Before you start

  • Two test phones with UPI set up, at least one a dual-SIM Android phone
  • Test bank accounts with known balances, including one with a low balance
  • A test merchant app that starts a UPI intent payment
  • Jio, Airtel or Vi SIMs and a spot with weak coverage such as a lift or basement
Show
Add to a test plan

Happy path9

UPI-01

Pay a UPI ID with the correct UPI PIN

P1functional
  1. Open Pay and enter a valid test UPI ID
  2. Check the payee's registered name shown below the ID
  3. Enter ₹10, add a note and tap Pay
  4. Enter the correct UPI PIN and submit

Expected: The success screen shows ₹10, the payee name, a UPI transaction ID and the IST date and time. The balance is ₹10 lower on the next balance check.

UPI-02

Pay a mobile number that is linked to UPI

P2functional
  1. Choose Pay to mobile number and enter a 10-digit test number
  2. Wait for the payee name to appear
  3. Enter an amount, tap Pay and enter the UPI PIN

Expected: The payee's bank-registered name appears before the PIN step. The receipt shows the payee's UPI ID or a masked mobile number, not the full number.

UPI-03

Pay a phone contact picked from the address book

P2functional
  1. Tap Pay contacts and allow the contacts permission when asked
  2. Search a contact by name and pick one shown as on UPI
  3. Pay ₹1 and enter the UPI PIN

Expected: Only contacts with a reachable UPI handle offer Pay. After the payment, the contact appears at the top of recent payees.

UPI-04

Pay a bank account using the account number and IFSC

P2functional
  1. Choose Pay to bank account
  2. Enter the account number twice, the IFSC and the holder's name
  3. Enter an amount, tap Pay and enter the UPI PIN

Expected: The bank and branch for the IFSC are shown before payment. The receipt shows a masked account number, the IFSC and the transaction ID.

UPI-05

Complete an intent payment from a merchant app and return

P1functionalreal phone
  1. In the test merchant app, choose UPI at checkout
  2. Pick the UPI app from the app chooser
  3. Check that the amount and merchant name are prefilled and locked
  4. Enter the UPI PIN and let the phone return to the merchant app

Expected: The merchant app shows the order as paid without a manual refresh. The UPI app history shows the same reference number as the merchant's order screen.

Why a real phone: Needs two real installed apps and an Android app switch and return.

UPI-06

Pay from a second linked bank account

P2functional
  1. Link two test bank accounts and set one as primary
  2. Start a payment and switch to the second account on the confirm screen
  3. Enter that account's UPI PIN

Expected: Money is debited from the selected account and the receipt names that bank with a masked account number. The primary account setting does not change.

UPI-07

Open history, view a receipt and share it

P2functional
  1. Open transaction history and filter to the last 7 days
  2. Open a successful payment
  3. Tap Share and send the receipt to a messaging app

Expected: The receipt shows the amount with lakh grouping, payee, bank, transaction ID and IST time. The shared image or PDF shows the same details with the account number masked.

UPI-08

Get a payment notification while the phone is locked

P2functionalreal phone
  1. Complete a payment and lock the phone at once
  2. Wait on the lock screen
  3. Tap the notification and unlock

Expected: A notification with the amount and payee arrives, and tapping it opens the receipt for that transaction.

Why a real phone: Delivery depends on real push channels and OEM battery savers on Xiaomi, Vivo, Oppo.

UPI-09

Approve a collect request from a known contact

P2functional
  1. From a second test account, send a collect request for ₹5
  2. On the payer phone, open the request from the pending list
  3. Check the requester name, amount and expiry, then tap Pay and enter the PIN

Expected: The request shows Paid on both phones and leaves the pending list. The debit matches the requested amount exactly.

Validation & negative7

UPI-10

Enter a wrong UPI PIN once

P1negative
  1. Start a ₹1 payment to a saved payee
  2. Enter an incorrect UPI PIN and submit
  3. Open the transaction in history

Expected: The app shows an incorrect PIN message and no money is debited. History lists the attempt as Failed, never Pending.

UPI-11

Reach the bank's limit for wrong PIN attempts

P2negative
  1. Enter a wrong UPI PIN repeatedly until the bank stops accepting attempts
  2. Try a new payment with the correct PIN

Expected: The app shows the bank's block message and explains how to reset the PIN. Later attempts show the same block message, not a generic error.

UPI-12

Pay more than the account balance

P2negative
  1. Choose an account whose balance is below the amount
  2. Enter the amount, tap Pay and enter the correct PIN

Expected: The insufficient balance reason is shown in plain words and no money moves. The user can retry with another linked account without re-entering the payee.

UPI-13

Reject badly formed or unknown UPI IDs

P2negative
  1. Enter a UPI ID without the @ part
  2. Enter one with spaces or an emoji
  3. Enter a well-formed ID that does not exist

Expected: Malformed IDs show an inline format error. The non-existent ID shows a not-found message, and Pay stays disabled in all three cases.

UPI-14

Enforce the amount field rules

P2negative
  1. Enter 0, then 10.555, then paste text containing letters
  2. Enter 100000 and look at the displayed amount

Expected: Zero, three decimal places and letters are rejected inline. 100000 displays as ₹1,00,000.

UPI-15

Stop a payment with a wrong or malformed IFSC

P2negative
  1. In Pay to bank account, enter an IFSC with the wrong length
  2. Enter a correctly formatted IFSC that does not exist

Expected: The wrong length is rejected inline. The unknown IFSC shows an error with no bank name, and the PIN screen does not open.

UPI-16

Decline a collect request

P3negative
  1. Receive a collect request from a second test account
  2. Open it and tap Decline
  3. Check the request on the requester's phone

Expected: Both phones show Declined, no PIN screen opens and no money moves.

Edge cases6

UPI-17

Pending payment resolves to success without a second debit

P1edge
  1. Use a test setup where the bank's response is delayed
  2. Pay and stay on the result screen
  3. Wait, then pull to refresh

Expected: The screen shows Pending with advice not to pay again. It changes to Success on its own or on refresh, with only one debit.

UPI-18

Deemed success is explained and does not invite a retry

P1edge
  1. Use a test case where the payee bank's confirmation times out after the debit
  2. Open the result screen and then history

Expected: The status uses the app's deemed or under-confirmation wording and says the money is debited and will settle or be reversed. No Pay again button is offered.

UPI-19

Check the status of money debited but not credited

P1edge
  1. Open a transaction where the payer was debited but the payee got nothing
  2. Tap Check status
  3. If still unresolved, raise a complaint from the same screen

Expected: The status check shows the latest bank status with a time. The complaint returns a reference number that stays visible on that transaction.

UPI-20

Show an auto-reversal on a failed payment

P2edge
  1. Use a failed transaction whose debit has been reversed by the bank
  2. Open it in history and check the balance

Expected: The transaction shows Failed with a reversed note and the reversal time. The balance includes the refunded amount.

UPI-21

Double-tap Pay on the confirmation screen

P1edge
  1. Fill in the payee and amount
  2. Tap Pay twice very quickly
  3. Enter the UPI PIN

Expected: Only one PIN screen opens and only one debit happens. History shows a single transaction.

UPI-22

Pay exactly the configured per-transaction limit

P2edge
  1. Enter an amount equal to the configured limit and pay
  2. Start another payment one rupee above the limit

Expected: The exact limit goes through to the PIN screen. One rupee more is blocked with the limit message before the PIN screen.

Interruptions & network6

UPI-23

Network drops right after the UPI PIN is submitted

P1interruptionreal phone
  1. Enter the UPI PIN and submit
  2. Turn on airplane mode within a second
  3. Wait a minute, turn the network back on and open history
  4. Repeat, submitting just as you walk into a lift or basement

Expected: While offline the app shows Pending or Checking, not Failed. Once online it shows the final status and does not ask to pay again.

Why a real phone: Real dead zones lose packets slowly; an emulator's network cut is instant and clean.

UPI-24

Wi-Fi switches to mobile data mid-payment

P2interruptionreal phone
  1. Start a payment on Wi-Fi
  2. On the confirmation screen, turn Wi-Fi off so the phone moves to mobile data
  3. Tap Pay and enter the PIN

Expected: The payment completes or shows Pending with a status check. There is no session-expired loop and no duplicate debit.

Why a real phone: Wi-Fi to mobile data handover needs a real SIM on Jio, Airtel or Vi.

UPI-25

Incoming call while the PIN screen is open

P2interruptionreal phone
  1. Open the UPI PIN screen and type two digits
  2. Answer an incoming call
  3. End the call and return to the app

Expected: The partial PIN is cleared, and the app either cancels safely or shows an empty PIN screen. No payment goes through without a fresh PIN.

Why a real phone: Needs a real incoming SIM call to interrupt the secure PIN screen.

UPI-26

Merchant app is killed while the user is in the UPI app

P1interruptionreal phone
  1. On a 3–4 GB RAM phone, start an intent payment from the merchant app
  2. Before entering the PIN, open a few heavy apps, then return to the UPI app
  3. Enter the PIN and reopen the merchant app from the launcher

Expected: The merchant app checks the status on reopening and shows the order as paid. It does not ask for payment again for the same order.

Why a real phone: Low-RAM phones and OEM memory managers kill background apps during app switching.

UPI-27

Press back in the UPI app during an intent payment

P2interruptionreal phone
  1. Start an intent payment from the merchant app
  2. In the UPI app, press back before entering the PIN

Expected: The merchant app shows the payment as not completed and offers a retry. The order is not marked as paid or left stuck in Pending.

Why a real phone: The return path between two installed apps depends on real app switching and gesture navigation.

UPI-28

App backgrounded or screen locked right after PIN submit

P2interruptionreal phone
  1. Submit the UPI PIN
  2. Press home or lock the screen at once
  3. Return to the app after a minute

Expected: The app opens on the final status of that payment, not a blank screen or a fresh payment form.

Why a real phone: OEM battery savers on Xiaomi, Vivo and Oppo freeze or kill backgrounded apps.

Device & OS4

UPI-29

Bind the device with the right SIM on a dual-SIM phone

P1compatibilityreal phone
  1. On a dual-SIM phone, start UPI onboarding
  2. Choose the SIM whose number is registered with the bank
  3. Let the app send the verification SMS

Expected: The app names the SIM slot it will use, sends the SMS from it and lists the bank accounts linked to that number.

Why a real phone: Device binding SMS is sent from a physical SIM slot over the carrier network.

UPI-30

Remove or swap the SIM after onboarding

P1securityreal phone
  1. Complete onboarding with SIM 1
  2. Power off, remove SIM 1 or swap the slots, and restart
  3. Open the app and try to pay

Expected: The app detects the change and asks to verify the device again before any payment. No payment is sent on the old binding.

Why a real phone: SIM removal and slot swap detection needs physical SIMs in a real phone.

UPI-31

Pay on a small screen with an older Android version

P2compatibility
  1. Use a 5-inch phone on the oldest Android version the app supports
  2. Make a payment with the keyboard open on the amount field

Expected: The Pay button stays reachable above the keyboard and the PIN screen renders in full.

UPI-32

Return to the merchant app on an iPhone

P2compatibilityreal phone
  1. On an iPhone, start a UPI payment in a merchant app
  2. Pick a UPI app from the list the merchant app shows
  3. Pay, then return using the app switcher instead of the automatic return

Expected: The merchant app checks the status when it comes back to the foreground and shows the correct result.

Why a real phone: Switching between real installed iOS apps cannot be reproduced in a simulator.

Security & privacy5

UPI-33

Block screenshots and screen recording on the PIN screen

P1securityreal phone
  1. Open the UPI PIN screen
  2. Try the phone's screenshot buttons and gesture
  3. Start a screen recording and type a PIN

Expected: Screenshots are blocked or come out black, and the recording shows the PIN area blank.

Why a real phone: OEM screenshot gestures and recorders on Android skins must respect the secure flag.

UPI-34

Hide sensitive details in lock-screen notifications

P2securityreal phone
  1. Set the phone to show notification content on the lock screen
  2. Receive a payment and look at the locked screen

Expected: The notification shows the amount and payee only, with no balance or full account number.

Why a real phone: Lock-screen notification display differs across OEM skins and their privacy settings.

UPI-35

Ask for the app lock after the inactivity timeout

P2security
  1. Open the app and send it to the background
  2. Wait longer than the configured inactivity time
  3. Reopen the app from recent apps

Expected: The app asks for its lock before showing balance, history or payees. The recent apps thumbnail does not show account details.

UPI-36

Warn clearly on a collect request from an unknown sender

P1security
  1. Send a collect request from an account not in the payer's contacts
  2. Open it on the payer's phone

Expected: The screen says plainly that approving will debit money from the payer, shows the requester's verified name and marks the sender as unknown.

UPI-37

Clear data on logout or deregistration

P2security
  1. Log out or deregister UPI from the app settings
  2. Reopen the app

Expected: Linked accounts, payees and history are no longer visible. Paying again requires a fresh device verification.

Accessibility & language3

UPI-38

Move through the payment flow with TalkBack

P2accessibility
  1. Turn on TalkBack
  2. Move through payee, amount, account picker and Pay
  3. Listen to the result screen

Expected: Every control is announced with its purpose, the amount is read in rupees, and the result is announced as success, pending or failed.

UPI-39

Use the app in Hindi with a Hindi or Hinglish note

P2localization
  1. Switch the app language to Hindi
  2. Pay with a note typed on a Hindi keyboard, then one in Hinglish
  3. Open the receipt and history

Expected: Labels, errors and statuses, including Pending, appear in Hindi with no English leftovers. Both notes display correctly in the receipt and history.

UPI-40

Pay with the largest font and display size

P2accessibility
  1. Set font size and display size to the maximum
  2. Make a payment and look at the confirmation and result screens

Expected: The amount, payee name and Pay button stay fully visible with no cut-off text. The transaction ID stays readable and can be copied.

In the field

Where UPI payment breaks on real phones

  • On Xiaomi, Vivo, Oppo and Realme phones with 3–4 GB RAM, the merchant app is killed while the user is in the UPI app, so the order shows unpaid even though the account was debited.
  • On dual-SIM phones the bank-registered number is often in slot 2 while data runs on slot 1; device binding picks the wrong slot, or the SMS never leaves a SIM without an SMS pack.
  • Weak Jio, Airtel and Vi coverage in lifts, basements and metro stations, or 4G falling back to 2G, leaves payments in Pending, and apps that show Failed too early push users to pay a second time.
  • Collect requests worded like a refund or a prize get approved by users who believe a PIN is needed to receive money; screens that do not state the debit plainly lead to losses.
  • Status words such as Pending, Deemed and Under process are left in English or translated literally in Hindi builds, so users cannot tell whether to wait or retry.
  • A back press or swipe during the intent flow returns a cancelled result while the bank is still processing, and the merchant cancels an order that later turns out to be paid.

Run these 40 cases on real phones

They fit the Standard package: 10 × 45-minute sessions on 4 phones or browsers of your choice, up to ~50 cases, ₹18,999 + GST ($249), verified report in 3 business days. The 13 P1 cases alone fit Starter (₹9,999 + GST).

Download the CSV, pick the package at checkout and upload the file with your build. Testers run them on their own phones, on Jio, Airtel and Vi.

Questions

About testing UPI payment

What is the difference between Pending and deemed success when testing UPI?

Pending means the app does not yet have a final answer from the bank or the switch. Deemed success is used when the payer is debited but the payee bank's confirmation arrives late; the payment is expected to settle, or to be reversed if it does not. Test that both states discourage a retry and update on their own once the final status arrives.

Can UPI payments be tested on an emulator?

Parts of it can. Field validation, amount formatting, history screens and copy behave the same on an emulator against a test environment. Device binding needs a real SIM to send the verification SMS, and the intent flow, notifications and network handovers depend on real installed apps, OEM battery savers and carrier networks, so run those on real phones.

How should a tester check a money debited but not credited case?

Note the UPI transaction ID in the app and compare the payer's bank statement with the payee's credit. Use the app's status check and confirm the transaction ends in a clear state, settled or reversed, and that any complaint raised gets a reference number. A retry is never the fix, because it creates a second debit.

Related flows

Test these next

Your AI wrote the test cases. Run them on real phones.

99tests runs your cases, AI-generated ones included, on the phones, laptops and browsers your users own. Every finding is verified, serious bugs come with a screen recording, and each case comes back pass, fail, blocked or not run.