UPI QR Code Generator — Create Static UPI Payment QR for Any VPA

By the Taxestool Editorial Team Last reviewed Editorial standards

Generate a UPI payment QR code for any Indian VPA — Paytm, PhonePe, Google Pay, BHIM, or any bank UPI ID. Optional amount, note, and transaction reference. The QR follows the official NPCI deep-link spec, so it works with every UPI app. Free, private, and instant — nothing is sent to our servers.

Format: name@bank — e.g. priya@paytm, 9876543210@oksbi.

Per-transaction cap: ₹1 lakh (personal) / ₹2 lakh (verified merchant).

Advanced settings

Higher levels survive smudges and damage but make the QR denser.

🔒 Your VPA, amount and note never leave your browser. Open DevTools → Network to verify — this page makes no requests when you generate a QR.

Enter a valid UPI ID to generate a QR code

Scan with any UPI app to pay

📱 Open app

"Open app" launches your installed UPI app on mobile.

UPI deep-link URI

How a UPI QR code works

A UPI QR code encodes a upi://pay?... deep link that describes a payment intent — who to pay, how much, and what for. When you scan the QR with any UPI app, the app reads the deep link, fills in the payment details, and asks you to confirm with your UPI PIN. Behind the scenes, NPCI routes the transfer between the payer's bank and the payee's bank using the VPA to identify accounts.

The deep link itself is just a URL with the upi:// scheme. The encoded fields:

FieldWhat it means
paPayee VPA (UPI ID) — required
pnPayee name — shown to the payer in their UPI app
amAmount in INR (optional — omit to let payer enter)
cuCurrency — always "INR"
tnTransaction note (optional, ≤80 chars)
trTransaction reference for reconciliation (optional)
mcMerchant Category Code (optional, ISO 18245)

Static vs dynamic UPI QR

A static QR (what this tool generates) is one fixed image you print once and reuse for every payment. Same payee, fixed or variable amount. Perfect for personal use, small shops, and one-time invoices.

A dynamic QR is generated fresh for each transaction with a unique amount and reference. Used by payment aggregators (Razorpay, PayU) and large merchants — every customer scans a different QR linked to a specific invoice. Lets the merchant reconcile payments automatically and reject duplicates.

For 95% of use cases — your personal QR, a small shop counter, a freelancer's payment link — a static QR is exactly what you want.

Is it safe to share your VPA publicly?

Yes — a VPA is designed to be shared. Think of it like an email address for money: people need it to send you payments. The VPA alone gives nobody the ability to take money from your account. The risk is social engineering — scammers may message claiming "I sent ₹X by mistake, please refund" and try to trick you into authorising a payment out of your account. Standard advice: never share your UPI PIN, never approve a "collect request" you didn't initiate, and double-check the payee name before confirming any outgoing payment.

Tips for printing the QR for a shop

  • Download the PNG at 1024×1024 for crisp print quality, or the SVG for arbitrary scaling.
  • Switch error-correction level to Q (25%) or H (30%) in Advanced settings — the QR will survive smudges, dust, and partial damage.
  • Laminate the printout — Indian retail counters get dusty and wet.
  • Include the payee name in large text below the QR — customers verify the name in their UPI app before paying, and seeing it printed too builds trust.
  • If you accept variable amounts, leave the Amount field blank — customers will enter their own amount, which is friendlier for retail.

Sources

Related tools

Frequently Asked Questions

What is a VPA / UPI ID?
A Virtual Payment Address (VPA) — sometimes called a UPI ID — is your unique handle for sending and receiving money on UPI. Format: name@bank, e.g. priya@paytm, 9876543210@oksbi, shopname@ybl. You set one up inside any UPI app (Paytm, PhonePe, Google Pay, BHIM, your bank app). The handle after the @ identifies which bank routes the payment — common ones: paytm, oksbi (SBI), ybl (PhonePe/Yes Bank), okhdfcbank, okaxis, okicici.
Is my VPA stored anywhere?
No. Everything runs entirely in your browser using client-side JavaScript — the QR is generated locally and your VPA, amount, and note never reach a server. You can verify this yourself: open DevTools → Network tab, then change inputs and confirm that no network requests are made. We have no database, no analytics on form data, no logging.
Can I use this QR for my business?
Yes. Static UPI QR codes are perfectly legal and widely used by kirana stores, restaurants, cabs, freelancers, and small businesses. You can print this QR, laminate it, and stick it at your shop counter. For very high volumes (₹2 lakh+ per transaction, or thousands of transactions per day) you may want to upgrade to a merchant UPI account with a payment aggregator (Razorpay, PayU, Cashfree, etc.), which adds features like dynamic QRs, automated invoicing, and consolidated settlement reports.
Does this QR work with every UPI app?
Yes. The QR follows the official NPCI UPI deep-link spec (upi:// scheme), so it scans in every UPI-compatible app: Paytm, PhonePe, Google Pay (GPay), BHIM, Amazon Pay, WhatsApp Pay, Cred, Jupiter, Fi, Slice, and the UPI feature inside every Indian bank app (SBI YONO, HDFC PayZapp, ICICI iMobile, Axis Mobile, etc.).
Should I include the amount or leave it blank?
Both work. Including the amount is best when you know the exact payment (invoice, fixed-price item, settled bill). Leaving it blank is best for shops where customers pay variable amounts — they enter the amount themselves after scanning. Most retail shops use the blank-amount option: one QR taped to the counter, customers type their own amount.
What's the maximum amount I can request?
Per NPCI rules, a single UPI transaction is capped at ₹1 lakh for personal accounts and ₹2 lakh for verified merchants. Some categories (capital markets, insurance, education) allow up to ₹5 lakh. The cap is enforced by the payer's bank/app, not by the QR code itself — if you encode ₹5 lakh into the QR but the payer's bank caps personal UPI at ₹1 lakh, their app will reject the transaction.
Why isn't my QR scanning?
Three common causes: (1) The VPA is wrong — re-check the spelling and the bank handle. (2) Print quality is too low — use the 1024×1024 PNG download or SVG for printing; don't screenshot. (3) The QR is too small or damaged — for printed shop QRs, switch error-correction level to Q or H (Advanced settings), which keeps the QR scannable even with smudges or partial damage.
Is this the same as a Bharat QR?
Different but related. Bharat QR is a separate NPCI spec that supports UPI plus card networks (Visa, Mastercard, RuPay, Amex). It's targeted at merchants who want to accept both UPI and card payments via a single QR. UPI QR (what we generate) is UPI-only and works with every UPI app — for the vast majority of personal and small-merchant use cases, this is what you want.

Related tools