UPI QR Code for Payments: Setup, Testing and Printing Guide
A UPI QR code is a square code that holds a payment link. When a customer scans it with a UPI app, the app opens with your UPI ID already filled in, so they only confirm the amount and pay. You can make one for free with the UPI QR code generator, print it and put it on your counter, invoice or business card.
This guide explains what is inside the code, when to use an open amount and when to fix one, how to check your details before printing, and how to keep payments safe.
What a UPI QR code actually is
The code does not hold money, a bank account number or any login. It holds a short piece of text that starts with upi://pay. Phones and UPI apps are built to recognise that prefix, although behaviour can vary by device and app, so test on your own phone. The app reads your UPI ID (also called a VPA, virtual payment address), your name and any amount, and shows a payment screen.
This makes it a good fit for:
- Small shops, tea stalls and market vendors who take many small payments a day.
- Freelancers who want clients to pay from an invoice PDF.
- Event organizers collecting entry fees or donations at a desk.
- Home businesses and creators selling through social media.
The code is static. The data is written straight into the pattern, so it never expires and works without any server of ours. It also means it cannot be edited later. If you want the background on that, see static vs dynamic QR codes. UPI codes on GenerateQR.link are static only.
What is inside the upi://pay link
The link is a list of parameters. Here is the format:
upi://pay?pa=<UPI ID>&pn=<payee name>&am=<amount, optional>&cu=INR&tn=<note, optional>
| Parameter | Meaning | Needed |
|---|---|---|
| pa | Your UPI ID (VPA) | Yes |
| pn | Payee name, shown to the payer | Yes |
| am | Amount in rupees | No |
| cu | Currency, always INR | Added by the generator |
| tn | Short note or reference | No |
An example for a tea stall with an open amount:
upi://pay?pa=ravitea@examplebank&pn=Ravi%20Tea%20Stall&cu=INR
An example for a fixed amount with a note:
upi://pay?pa=ravitea@examplebank&pn=Ravi%20Tea%20Stall&am=499&cu=INR&tn=Invoice%20104
Spaces in names and notes are written as %20. You do not need to do this by hand: the generator builds and encodes the link from the fields you fill in. The UPI ID above is made up, so use your own.
Open amount or fixed amount
This is the main choice you make when creating the code.
Open amount
You leave the amount empty. The customer scans, types the amount and pays. Use this for:
- A shop counter where every bill is different.
- Tips and donations.
- Any case where you quote the price verbally or on a bill.
The risk is a typing mistake by the customer, so say the amount aloud and check your own app for the incoming payment before handing over goods.
Fixed amount
You enter an amount, and the app shows it when the code is scanned. Use this for:
- A single-price product, such as a workshop seat or a monthly plan.
- A one-time invoice, with the invoice number in the note.
- Event entry fees.
Because the code is static, a fixed amount is permanent. If the price changes, you have to make and print a new code. Also, how an app treats a pre-filled amount, for example whether the payer can edit it, depends on the app and its current version. Test with the apps your customers use.
A simple rule: if you sell many items at different prices, use open amount. If you sell one thing at one price, fixed amount saves customers a step.
Check your UPI ID before printing
A wrong character in the UPI ID sends the payment to someone else, or fails. Because you cannot edit a printed static code, spend two minutes on this before you print anything.
- Copy the ID from your UPI app. Open your payment app, find your profile or the screen that shows your UPI ID, and copy it instead of typing it from memory.
- Paste it into the generator. Compare it character by character with the app, including the part after the @ sign.
- Check the payee name. Use the name your customers will recognise, such as your shop name or your own name. Some apps may show a different name from the one you typed, for example the name registered with the bank. Check what your own app shows.
- Decide on the amount. Leave it empty for open amount, or enter a plain number for a fixed one.
- Generate the code and move to testing.
If you have more than one UPI ID, for example a personal one and a business one, pick the one linked to the account you actually want the money in.
Test with a real UPI app
Test every code before printing, as you would for any QR code. For UPI, a good test looks like this:
- Scan the code on your screen with a UPI app on a phone.
- Confirm the UPI ID and the payee name on the payment screen are correct.
- For a fixed amount, confirm the amount and the note are what you expect.
- Ask a friend or family member with a different UPI app to scan it too. Different apps may display the details a little differently.
- If you are comfortable doing so, ask a trusted person to send a small real payment, and confirm it arrives in the right account. Many UPI apps do not let you pay your own ID, so do not rely on paying yourself.
Test the printed version as well, not just the screen. Scan it from the distance a customer will use, in the lighting of your shop.
Printing tips for shop counters
A payment code gets scanned fast, in a hurry, often under bad light. Make it easy.
- Dark on light. Use a dark code on a white or light background. Avoid inverted codes (light on dark), which some scanners fail to read.
- Keep the quiet zone. Leave an empty margin around the code, about 4 modules wide. Do not crop it tight or place text right against it.
- Size for distance. About 2 x 2 cm is a common minimum for close scanning. A counter stand should be much larger, and a wall sign larger still.
- Use SVG for print. SVG stays sharp at any size, which suits stickers, standees and banners. PNG is fine for screens and small prints.
- Keep styling modest. The generator uses the highest error correction level (H), which lets a code stay readable even if about 30% is damaged or covered. Colours and a small logo are fine, but keep strong contrast and test again after styling.
- Add a short line of text. A frame with text such as "Scan to pay" tells customers what to do. You can add your shop name too.
- Protect it. Use a stand, a laminate or a clear cover so the code does not get scratched, creased or stained by tea and oil.
- Place it where light is even. Avoid glare from glass or glossy lamination directly under a bright bulb.
For more on getting a clean code out of a free tool, see how to create a QR code for free.
Safety: who actually gets the money
Payments go to whoever owns the UPI ID inside the code. The QR code itself carries no protection. That has a few practical consequences:
- Never let anyone swap your code. Stickers can be pasted over a real code. Check your counter code regularly, and fix it in a place you can watch.
- Verify payments in your own app. Do not rely on a customer showing a success screen. Look at your own account or notification before you hand over goods.
- Scan codes from others carefully. If you pay a vendor through a printed code, check the name shown in your app before you confirm.
- Do not share codes that you did not create. Only print a code if you control the UPI ID in it.
GenerateQR.link only creates the code. It does not process, hold or see any payments, and it is not affiliated with NPCI or any bank or payment app. Static QR data is generated in your browser and is not sent to our servers. Check the current rules and guidance from your bank or payment app for anything about limits, business accounts or merchant requirements.
Common mistakes and how to fix them
| Mistake | Fix |
|---|---|
| Typing the UPI ID by hand and getting it wrong | Copy it from your UPI app and compare it again after pasting |
| Printing before testing | Scan the screen version with two different apps first |
| Fixed amount on a shop counter with varied prices | Make an open amount code |
| Code printed too small or too close to text | Increase the size and keep a clear margin |
| Low contrast colours or a light code on a dark background | Use dark on light and retest |
| Expecting scan statistics | UPI codes are static, so scans are not tracked. Check your payment history in your bank or UPI app instead |
| Price changes after printing | Generate and print a new code, and remove the old one |
Make your code
Open the UPI QR code generator, enter your UPI ID and payee name, add an amount and note only if you need them, then download an SVG for print or a PNG for screens. No account is needed for static codes. If you also want a code for customer chat, a call or an email, the main QR code generator covers those types too, including dynamic codes with scan statistics for URL, WhatsApp, phone, SMS and email. Dynamic codes only need a free account.
Frequently asked questions
Can I change the UPI ID in a QR code after printing it?
No. UPI codes are static, so the ID is written into the pattern and cannot be edited. If something is wrong, create a new code and replace the printed one.
Does a UPI QR code expire?
The code itself does not expire, because it depends on no server of ours. It stops working only if the UPI ID is closed or changed in your bank or payment app.
Can I see how many people scanned my UPI QR code?
Not from the code. UPI codes are static and are not tracked, so the best record is the transaction history in your bank or UPI app.
Do I need a business account to use a UPI QR code?
The generator only needs a valid UPI ID. Whether your bank or app requires a business or merchant account for your kind of use is a question for them, so check their current rules.
Should I put a logo in the middle of my payment QR code?
You can, since the generator uses the highest error correction level. Keep the logo small, keep strong contrast, and test the final print with a real UPI app.