high intent
How to Accept UPI Payments on Your Website Without Paying 2% Gateway Fees
Discover how online stores, SaaS platforms, and digital sellers accept instant UPI payments via dynamic QR and Intent links while avoiding 2% gateway fees.
Accepting online payments in India is vital for every digital business, eCommerce store, and SaaS product. However, standard payment aggregators charge a 2% transaction fee plus 18% GST on that fee, which quickly eats into profit margins as your sales grow.
If your business processes ₹5,000,000 annually, a 2.36% effective fee means handing over ₹1,18,000 every year just for payment processing.
In this guide, we break down how direct-to-bank UPI payments work, how dynamic QR and intent buttons remove transaction fees, and how to integrate zero-fee UPI checkout into your website.
The 2% Fee Trap on Indian Online Sales
When you sign up with conventional payment gateways, they charge a percentage fee per transaction across all payment modes:
- UPI Payments: 2% + 18% GST (Effective 2.36%)
- Credit Cards / Net Banking: 2% – 3% + 18% GST
- Settlement Cycles: T+1 to T+3 business days holding periods
Although NPCI mandated 0% MDR on consumer UPI payments, aggregators justify their 2% charge as a “technology platform fee” or “convenience fee”. For high-volume businesses selling subscriptions, courses, or physical goods, these charges accumulate rapidly.
How Direct UPI Checkout Bypasses Aggregator Markups
Direct UPI integration eliminates middleman markups by connecting your checkout directly to NPCI’s UPI protocol:
- Order Creation: Your backend generates a unique transaction reference and order amount.
- Dynamic QR / Intent Generation: A compliant UPI link (
upi://pay?pa=merchant@bank&pn=MerchantName&am=1499&tr=ORDER123) is displayed to the user. - Direct Transfer: The customer completes payment inside GPay, PhonePe, or Paytm. Funds go directly to your merchant bank account.
- Server-Side Verification: A signed HMAC webhook or real-time polling mechanism validates the transaction and marks the order as paid.
Because the funds move directly into your bank account over NPCI rails, there are no percentage transaction fees and zero settlement holding delays.
Dynamic QR vs Static QR for Website Checkout
| Feature | Static QR Code | Dynamic QR Code (Recommended) |
|---|---|---|
| Amount Enforcement | Customer enters amount manually | Amount is locked into the QR code |
| Order Matching | Manual verification needed | Automatic matching via transaction ID |
| Automation | High risk of errors & fraud | 100% automated via webhooks |
| User Experience | Clunky & prone to typo mistakes | Seamless, single-scan payment |
A static QR code printed on a website leads to order delays because customers frequently enter incorrect amounts or forget to share reference numbers. Dynamic QR codes solve this completely by hardcoding the exact order total and transaction ID directly into the payment payload.
Step-by-Step Integration Guide
Integrating zero-fee UPI checkout into your React, Next.js, Node, or Python website takes only a few simple steps:
1. Generate Order Payload
Your server calls the creation endpoint to get an order ID and dynamic UPI string:
{
"order_id": "ORD_987654321",
"amount": 499.00,
"currency": "INR",
"upi_string": "upi://pay?pa=vyapar@hdfcbank&pn=MyBrand&am=499.00&tr=ORD_987654321&cu=INR"
}
2. Render Dynamic QR & UPI Intent Buttons
On mobile browsers, render a direct “Pay via UPI App” button. On desktop browsers, display a QR code generated from upi_string.
Verifying Payments Safely with Webhooks
Never rely on client-side success callbacks or browser redirects to mark an order as fulfilled. Always verify payments on your backend server:
// Node.js Webhook Signature Verification
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}
By implementing server-side HMAC signature checks, your system remains protected against forged requests while providing instant, 0% fee payment confirmation for your customers.
Direct answers
Frequently asked questions
- Why do traditional payment gateways charge 2% on UPI transactions?
- Traditional payment aggregators bundle credit card, net banking, and UPI processing while adding markups, settlement reserves, and handling fees. Direct-to-bank UPI tools bypass aggregator markup by leveraging direct NPCI UPI rails.
- How does dynamic QR code checkout prevent customer input errors?
- A dynamic QR code embeds the exact payment amount and unique order ID into the UPI URI specification. When scanned using GPay, PhonePe, or Paytm, the customer cannot alter the amount or recipient.
- Is direct UPI checkout compliant with RBI and NPCI guidelines?
- Yes. Direct UPI transactions use official NPCI UPI specifications (upi://pay) and route funds directly to the merchant's linked bank account without holding money in an unauthorized escrow pool.
- How fast are funds settled with direct UPI payments?
- Since funds move directly from the customer's bank account to your merchant bank account over NPCI rails, settlement is instantaneous (T+0) with zero T+1 or T+2 holding delays.
Build your payment flow
Explore the API and browser-only merchant tools.
Create UPI checkout orders, verify signed events, or test the free calculators and generators without exposing credentials.