UPI payment for events — the practical guide
UPI is now the default payment method for ticketed events in India. Cards are for corporate expense claims; UPI is for everyone else. This is what actually works — intent flow vs collect, GPay/PhonePe deep links, decline handling, reconciliation, and the mistakes that leak revenue.
Intent flow vs Collect flow — pick intent
Intent flow. Buyer taps "Pay via UPI." The site deep-links straight into their GPay/PhonePe/Paytm app with the amount pre-filled. They tap their PIN. Done. Conversion: 65-75%.
Collect flow. Buyer enters their UPI ID (name@bank). Your PSP sends a collect request to their PSP. Notification arrives on their phone 3-10 seconds later. They approve. Conversion: 40-55%.
The GPay / PhonePe / Paytm split
You don't need to build separate integrations. Any PSP (Razorpay, Cashfree, PhonePe Business, Paytm) exposes a single UPI API. The buyer picks which PSP app to open — GPay handles ~48%, PhonePe ~46%, Paytm and BHIM the rest.
On checkout, show three big buttons (Google Pay, PhonePe, Paytm) with their logos. On tap, deep-link into that specific app. This converts 5-8% higher than a generic "Pay via UPI" button because buyers trust the brand they use daily.
Desktop checkout — show a QR
Desktop buyers can't deep-link into a phone app. Two options:
- UPI QR on screen. Buyer opens their PSP app, scans the QR, approves. Works everywhere. Conversion: 45-55%.
- Phone-to-mobile handoff. Buyer enters their mobile number, gets an SMS with a checkout link, opens on phone and pays via intent. Conversion: 60-65%.
Do both. Default to QR, offer SMS handoff as a link below.
Handling declines — auto-retry, don't error out
UPI has a much higher decline rate than cards. Common causes:
- Bank daily UPI limit hit (₹1 lakh/day typical, resets midnight)
- Buyer momentarily off network (metro, elevator, patchy 4G)
- PSP timeout (buyer opened the app after 20 seconds; the payment request expired)
- Wrong PIN entered (buyer taps wrong number)
- Beneficiary bank momentarily down (RBI outages are real)
What to do:
- Never show a generic "Payment failed" error. Tell the buyer what actually happened where possible.
- Auto-offer retry with fresh transaction ID. Same order, new UPI attempt. Don't make them re-enter details.
- Fall back to alternate PSP. If GPay failed, offer PhonePe. If PhonePe failed, offer the QR fallback.
- Preserve the cart. Ticket type, quantity, promo code — all held. A failed UPI retry that loses the cart is a lost sale.
Reconciliation — T+1 settlement
Your PSP (Razorpay/Cashfree) settles collected UPI money to your bank T+1 (or T+2 for weekend/holiday transactions). Each settlement is a lump sum with a report attached listing every transaction that made up that sum.
Reconciliation workflow:
- Download the settlement report from your PSP dashboard each morning
- Match each transaction ID to a ticket order in your system
- Mark the order as "settled" once bank credit is confirmed
- Flag mismatches (usually settlement includes yesterday's late-night transactions)
Refunds — UPI is fast, but not instant
UPI refunds go back to the source account. Timing:
- Refund initiated same day as payment: 2-4 hours typical
- Refund initiated 1-7 days after payment: 24-48 hours
- Refund initiated more than 7 days after: 3-5 business days (funds have already settled to your bank; PSP needs to pull them back)
Tell attendees "refund will hit your original UPI account within 5 business days" — over-promise on speed at your peril.
Common mistakes
- Not offering intent flow on mobile. Losing 20-30% conversion by asking buyers to type UPI IDs.
- Erroring out on decline instead of retry. The buyer thinks their card was declined and goes elsewhere.
- No QR fallback on desktop. Desktop UPI buyers exist. Show them a QR.
- Charging Razorpay's fee on top of ticket price without saying so. Legally fine, ethically dodgy. Bake it into the ticket price or absorb it.
- Not reconciling settlements. Finance team will find the mismatch in month-end close. That's the wrong week to discover it.
Want UPI-first checkout that converts?
See the intent flow + reconciliation in a 20-minute demo.
Book a demo →