Payment

UPI QR code generator

A UPI QR code lets a customer pay you by pointing a phone at a square. It carries a payment request — your UPI ID, and optionally an amount and a note — and their app does the rest. This page explains what goes in the code, why a wrong ID fails late rather than early, and the one check that protects a customer from the oldest trick against payment codes.

Last reviewed

An instruction, not a payment

A UPI QR code does not transfer money. It contains a request to pay: your UPI ID, and optionally a name, an amount and a short note. The customer scans it, their UPI app opens with those details already filled in, and they approve the payment in the app with their own PIN or biometric.

That distinction matters for two reasons. First, it is why a QR code is safe to print and stick on a counter: it carries no secret, and it cannot move money on its own. Anyone who photographs it learns your UPI ID, which is public information — it is the address people send money to, not a credential. Second, it is why the code is not a payment terminal: nothing in it settles anything, and the transaction happens entirely between the customer's app and the banks.

UPI is an Indian instant-payment system, so amounts are in rupees and the code carries cu=INR. If your customers are not paying in rupees, this is not the type you want — see the other payment methods the generator offers.

What the code contains

The payload is a UPI intent link — a custom URI scheme, not a website. The shortest useful form carries only the ID:

upi://pay?pa=priya@okhdfcbank&cu=INR

With a name, an amount and a note it becomes:

upi://pay?pa=priya@okhdfcbank&pn=Priya Sharma&am=250.50&tn=Table 4&cu=INR
ParameterMeaningRequired
pa The payee's UPI ID, or VPA — the name@bank address money is sent to. Yes
pn The payee's name, shown to the payer as a hint. No
am The amount, with at most two decimal places. No
tn A short note, such as an invoice or table number. No
cu The currency. Always INR for UPI. Yes

Leave the optional fields out and the app simply asks the payer for them. That is often what you want: a code with no amount works for every sale you will ever make, where a code with an amount works for exactly one.

The UPI ID, and how it fails

The UPI ID — also called a VPA, a virtual payment address — is the only required piece of information. It looks like an email address and behaves like an account number: name@bank, where the part after the @ identifies the payment provider rather than a mail server.

The generator checks the shape of what you type: something before the @, something alphabetic after it, and no spaces. That catches a pasted email address, a missing @, or a stray character.

What it cannot check is whether the ID exists — and that is the thing to understand about payment codes. There is no lookup that happens when the code is scanned. The app opens with the ID filled in, and the ID is only resolved when the payer actually attempts the payment. So a mistake surfaces late, in one of two ways:

Which is why the one test worth doing before you print anything is to scan your own code and pay yourself a small amount — a rupee is enough. It proves the ID resolves, that the name is right and that the code scans. No amount of proofreading gives you the same certainty.

Fixed amount or open amount

The am parameter sets the amount the app fills in. Whether to use it depends on whether your prices are fixed:

UseAmountWhy
A single product, a fixed fee, a standard ticket Set it One less thing for the customer to type, and no argument about what the price was.
A shop counter, a service bill, a donation Leave it open The total varies per customer, and the payer enters it. One code covers every sale.

Two things to keep in mind about a set amount. It is pre-filled, not charged — in most apps the payer can still edit it before confirming, so it is a convenience rather than a control. And the amount must be a plain number with at most two decimal places; 250.50 is valid, 250.555 and Rs 250 are not, because the app expects a number it can send to the bank unchanged.

If you genuinely need to collect an exact amount that cannot be changed, that belongs in a payment system that creates an invoice, not in a QR code.

The payee name is exactly what you type

The optional pn field is a small detail with a deliberate rule behind it: the generator passes your name through exactly as you typed it, and does not tidy it up.

That is unusual, because most forms would helpfully capitalise a name. Here it would be wrong. On a payment screen, showing a payer a name that differs from the one the payee entered is the single most dangerous thing the interface could do — it is precisely the discrepancy the payer is being asked to notice. So the name goes through untouched, and if it looks wrong the right fix is to correct it at the source rather than for us to guess.

Worth knowing what this field is not: it is a hint to the payer's app. Most UPI apps resolve the ID and display the name registered to it at the bank, which is authoritative, and the name in the code may not be shown at all. That is a feature rather than a limitation, and it leads directly to the next section.

Check the name before you pay

If you take one thing from this page, take this — and it applies whether you are reading it as a merchant or as a customer.

The oldest fraud against payment codes is a sticker. A criminal prints their own QR code onto a label and sticks it over the real one on a counter, a wall, or a parking meter. The code on top is a perfectly valid UPI code, for a different account. Nothing about the sticker looks broken: it scans, the app opens, the payment goes through. The first sign of trouble is that the money never arrives.

The defence is built into the apps, and it takes two seconds: read the name the app shows before you confirm. After scanning, most UPI apps display the name registered to that UPI ID at the bank. It is not the name in the code — it is the name the bank has. If it does not match the shop you are standing in, stop, and tell someone.

As a merchant, that gives you a maintenance job rather than a one-off task: look at the code on your counter every so often and compare it with your own app. A sticker over yours is exactly the kind of thing that survives for weeks because nobody looks.

It only works on a phone

A UPI code carries a upi:// link, which is an intent that only a phone with a UPI app can handle. Scan it with a desktop webcam and nothing useful happens: the browser has no application registered for the scheme, and the scan either fails or offers to search the web for the string.

That is not a defect to work around — it is the nature of an app-to-app payment, and it tells you where the code belongs. Print it where people pay with a phone in their hand: at the till, on the table, on the delivery bag, on the invoice beside a total. Do not put it in an email footer or on a desktop checkout page and expect it to be useful there.

If you need to take payment on a website, a UPI QR code is the wrong instrument. That needs a payment gateway, which is a different thing with a different set of obligations.

Printing and placing it

Payment codes are read at close range by someone who is already at the counter, so size is rarely the problem — legibility and placement are.

Put it flat and steady. A code taped to a curved surface, or printed on something that flaps, is harder to scan than one lying flat, and at a busy counter every failed scan is a customer who gives up and pays cash. Matte material beats glossy, because a laminated code catches the counter lights and the reflection lands exactly where the camera is looking.

Label it with the business name, not just the code. "Pay ₹ to Sharma General Store" tells the customer which name they should see in their app, which turns the name check from a habit into an obvious comparison. That is the rare case where a label does real security work rather than decoration.

And leave the quiet-zone margin alone. The generator includes the border the format requires; cropping it to fit a layout is the standard way to break a code that worked on screen. The size calculator will confirm a minimum print size if you are placing it further away than a counter's width.

We never hold the money

This site generates the code and nothing else. No payment passes through it, no card or bank details are collected, and there is no account with us involved in receiving money. The code is a string of text in a picture, and the transaction happens between the payer's app and the banks.

That is also why there is no fee here and no dashboard showing your settlements — we are not a party to the payment, so we have nothing to settle and nothing to take a cut of. Your UPI ID is the same one you would put on a printed card; it works with or without this site.

Make one in the generator

The generator has a payment type with a live preview. Choose UPI, enter your UPI ID, and add a name, an amount or a note if they help. It validates the ID shape and the amount, leaves your name exactly as you typed it, and shows the exact link it will encode. Download it as PNG or SVG. Codes are free, carry no watermark and never expire.

The same type also covers PayPal and crypto addresses if your customers are not paying in rupees.

Open the UPI QR code generator

Tip: scan the finished code and pay yourself one rupee before you print it. It is the only test that proves the ID resolves, the amount is right and the name is what you expect — and it costs you nothing but the round trip.

Frequently asked questions

What is a UPI QR code?

It is a QR code containing a UPI payment request: the payee's UPI ID, optionally a name, an amount and a note. Scanning it opens the customer's UPI app with those details filled in, and they confirm the payment there. The code itself moves no money; it is an instruction that the app acts on.

Does a UPI QR code work on a computer?

No, and that is expected rather than a fault. The payload is a upi:// intent link, which only a phone with a UPI app installed can handle. A desktop browser has nothing to open it with. Put a UPI code where phones are: a counter, a till, a delivery bag.

What happens if the UPI ID is wrong?

Usually nothing at the moment of scanning, which is the problem. The code opens an app with the ID filled in, and the mistake only surfaces when the payment is attempted. If the ID belongs to nobody the app reports an invalid ID; if it belongs to somebody else, you are about to pay a stranger. Test the code with a small payment before you print it.

Should I set a fixed amount on the code?

Set one for a fixed price, such as a single item or a standard fee. Leave it open where the total varies, such as a shop counter or a service bill. A fixed amount is pre-filled for the customer rather than charged, and in most apps they can still change it before confirming.

How do I check that a UPI QR code is safe to pay?

Look at the name the app shows after you scan and before you confirm. Most UPI apps display the name registered to that ID at the bank, and that name is the real check: if it does not match the business you think you are paying, stop. This matters because the common fraud against payment codes is a sticker placed over the original one.

Does QR Studio process or hold the payment?

No. The code contains a payment instruction and nothing else. No money passes through this site, no card or bank details are collected, and no account is needed with us to receive a payment. The transaction happens entirely between the payer's app and the banks.

Does a UPI QR code expire?

No. The UPI ID is encoded directly in the code, so it works with no server involved and never expires. It stays correct as long as the ID does.

Ready to make one?

Enter your UPI ID, add an amount if your prices are fixed, and download the code as PNG or SVG. Free, no watermark, and it never expires.

Open the UPI QR code generator