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.

VT VyaparGateway Team UPI Merchant Operations 3 min read
How to Accept UPI Payments on Your Website Without Paying 2% Gateway Fees guide
accept UPI payments zero fee payment gateway UPI checkout website reduce payment 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:

  1. Order Creation: Your backend generates a unique transaction reference and order amount.
  2. Dynamic QR / Intent Generation: A compliant UPI link (upi://pay?pa=merchant@bank&pn=MerchantName&am=1499&tr=ORDER123) is displayed to the user.
  3. Direct Transfer: The customer completes payment inside GPay, PhonePe, or Paytm. Funds go directly to your merchant bank account.
  4. 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

FeatureStatic QR CodeDynamic QR Code (Recommended)
Amount EnforcementCustomer enters amount manuallyAmount is locked into the QR code
Order MatchingManual verification neededAutomatic matching via transaction ID
AutomationHigh risk of errors & fraud100% automated via webhooks
User ExperienceClunky & prone to typo mistakesSeamless, 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.