What is a UPI payment?
UPI — the Unified Payments Interface — is India's real-time payment system, run by the National Payments Corporation of India (NPCI). A payer approves a payment in a UPI app with their UPI PIN, money moves directly between bank accounts within seconds, and every transaction gets a reference number banks and gateways use to trace it. A business receives UPI payments at a virtual payment address (a UPI ID such as shop@bank) provided by its bank or payment gateway.
A WhatsApp chat can start a UPI payment in four ways. In India, Meta's Payments API sends an order details message (order_details), an itemised bill; when the customer taps to pay, they choose WhatsApp's own UPI or any other UPI app installed on the phone. A UPI intent — a upi://pay?… string carrying the payee address, name, merchant category and a transaction reference — can be attached to that bill or opened from a gateway's payment page. A dynamic QR code generated for one order suits customers chatting on WhatsApp Web or a laptop. And a gateway payment link offers UPI alongside other methods.
However it starts, the payment completes in the customer's UPI app and the bank system, not inside the chat — so the business must learn the outcome from its payment gateway and Meta's payment lookup API (in Deep Integration mode WhatsApp also sends a payment webhook), then tell the customer. That is the difference from WhatsApp Payments as a whole, which also covers cards, netbanking and wallets: a UPI payment is always approved with a UPI PIN in the customer's chosen UPI app (which may be WhatsApp's own) and settled between banks, while the chat carries the request and the receipt.
Key takeaways
- A UPI payment moves money bank to bank within seconds over NPCI's network, approved by the payer with a UPI PIN in a UPI app.
- From WhatsApp it starts four ways: an order details bill, a UPI intent, a one-time QR code or a gateway payment link.
- The payment completes outside the chat, so confirm it with your gateway or Meta's lookup API, never from a screenshot.
- Give every request a unique reference; in UPI Intent mode, reuse the order or transaction ID behind the gateway's intent as the bill's reference_id.
- Send an order status update with the same reference_id, or the customer's bill keeps showing pending.
Follow one UPI payment from bill to receipt
- CustomerWhatsApp chat
- WhatsAppCloud API
- Your backend
- Payment gatewaymerchant VPA
- UPI app + banksNPCI network
Step 9 of 9Event
WhatsAppCustomer
Bill shows the order as complete
- Request — solid arrow — a call that expects an answer
- Response — dashed arrow — the answer coming back
- Event — dotted arrow — something happened and is pushed out
Step 9 of 9: WhatsApp to Customer — Bill shows the order as complete
Why does a UPI payment matter?
UPI is how most Indian customers prefer to pay, so making it a tap away from the chat removes the last excuse to drop off — no card to find, no netbanking login. But because the payment happens outside WhatsApp, the business side is where things go wrong: unreferenced payments that cannot be matched to an order, screenshots treated as proof, or bills left showing pending. Getting the reference and the confirmation path right is what makes UPI on WhatsApp dependable.
How does a UPI payment work?
Create a referenced payment request
Your gateway creates the order and a dynamic UPI intent or QR whose transaction reference (
tr) is unique to it. In UPI Intent mode, use the same order or transaction ID as the bill'sreference_idso the gateway's status and the chat bill line up. Never ask customers to pay a bare UPI ID with no reference.Put it in the chat
Send an
order_detailsbill with aupi_intent_linkor gateway payment setting, a payment link in a button, or a QR image for customers on desktop.The customer approves in a UPI app
They choose WhatsApp or another UPI app, check the payee name and amount, and enter their UPI PIN. Funds move between banks over NPCI's network, usually within seconds.
Confirmation reaches you
Your gateway sends a webhook with the result and the bank reference; in Deep Integration mode WhatsApp also sends a
statuseswebhook of typepayment. Verify by your reference before fulfilling.Update the customer
Send an order status update (
order_status) with the samereference_idso the bill in the chat moves from pending to processing or completed, then the receipt or e-ticket.
Example: A pottery workshop in Bengaluru
A Bengaluru pottery studio sells Saturday workshop seats on WhatsApp. A customer books one seat and receives an order_details bill for 1,180 rupees (1,000 plus 18% GST) with a UPI intent from the studio's gateway. She taps Pay, picks her usual UPI app and enters her PIN. Seconds later the gateway's webhook reports success with the bank reference; the studio's backend checks the status by reference, marks the seat sold and sends order_status: completed. A customer who asks from a laptop gets a one-time QR code instead.
A UPI payment in code
{"messaging_product": "whatsapp","recipient_type": "individual","to": "919812345678","type": "interactive","interactive": {"type": "order_details","body": { "text": "Pottery workshop, Sat 25 Oct, 11 am. Pay to confirm your seat." },"action": {"name": "review_and_pay","parameters": {"reference_id": "POT-1025-0042","type": "digital-goods","payment_settings": [{"type": "upi_intent_link","upi_intent_link": {"link": "upi://pay?pa={MERCHANT_VPA}&pn=Clay%20Studio&mc={MCC}&purpose={PURPOSE_CODE}&tr=POT-1025-0042"}}],"currency": "INR","total_amount": { "value": 118000, "offset": 100 },"order": {"status": "pending","items": [{ "name": "Workshop seat", "amount": { "value": 100000, "offset": 100 }, "quantity": 1 }],"subtotal": { "value": 100000, "offset": 100 },"tax": { "value": 18000, "offset": 100, "description": "GST 18%" }}}}}}
UPI Intent mode, sent to /{PHONE_NUMBER_ID}/messages. The intent comes from your gateway and may carry only pa, pn, mc, purpose and tr; here reference_id reuses the tr value. Amounts are in paise (offset 100).
Key facts at a glance
A UPI payment: key facts and limits
- Operator
- NPCI (National Payments Corporation of India)
- Payer approves with
- UPI PIN (4 or 6 digits) in a UPI app
- Payee address
- UPI ID / VPA, e.g. shop@bank
- Bank reference
- 12-digit UTR (RRN) per transaction
- Intent fields used by WhatsApp
- pa, pn, mc, purpose, tr
- reference_id (UPI Intent mode)
- Your order or transaction ID behind the intent; up to 35 characters
- Amounts in order_details
- value + offset 100 (paise), INR only
- Per-transaction limit
- Commonly one lakh rupees; higher for some merchant categories
Common wrong turns
Common mistakes with a UPI payment
Accepting screenshots as proof
A screenshot can be edited or show a payment that later failed. Fulfil only when your gateway or Meta's payment lookup API confirms the payment for that reference.
Static UPI IDs and QR codes
Asking customers to pay a fixed UPI ID leaves you matching amounts and names by hand. Use a dynamic intent or QR with a unique transaction reference for every order.
Sending UPI intents to desktop users
A
upi://intent needs a UPI app on the same device, and raw intent strings are not reliably tappable in chat. Offer a QR code or a payment link to customers on WhatsApp Web or a laptop.Giving up on pending payments
UPI transactions can sit pending and settle minutes later. Do not cancel the order or ask the customer to pay again on the first non-success; wait for the final status.
Good practice
Best practices for a UPI payment
- Show the payee name the customer will see in their UPI app, so they recognise it at the PIN screen.
- Store the gateway transaction ID and the bank UTR with each order — support and refunds will ask for both.
- Set an expiry on bills for perishable stock such as seats or slots, at least five minutes ahead.
- Since NPCI lifted the cap on WhatsApp's UPI user base at the end of 2024, many customers can pay with WhatsApp's own UPI; never assume they will, and let them choose their app.
- On cash-on-delivery orders, a UPI request sent before dispatch is the usual route for COD-to-prepaid conversion.
UPI FAQs
Does my customer need WhatsApp's own UPI to pay me?+
How do I know a UPI payment really succeeded?+
Can customers pay by UPI on WhatsApp Web?+
What does it cost to send a UPI bill on WhatsApp?+
* Per-message rates for India, ex-GST: marketing, utility and authentication effective 1 July 2026; service messages ₹0.145 since 1 October 2026 (they were ₹0 until 30 September 2026). Volume commitments earn discounts — final rate is confirmed on your account; applicable GST extra. Rates for other countries differ (see the international rate table on /pricing).