🔳 QR Codes

Payment QR Code Generator

Quick answer: Make a static payment QR code for UPI, a SEPA transfer, a crypto wallet or PayPal. Your payment address goes straight into the pattern, so the code never expires and no service sits in the middle. An IBAN is checked against its own check digits and every finished code is decoded and compared to what you typed — because this is the one kind of QR code where a wrong character costs money.

A payment QR code holds a payment address as text — a UPI ID, an IBAN, a wallet address, a PayPal name. Nothing is charged when it is made and no money moves through this page; the code simply saves the payer from typing an address by hand. That is worth stating because the typing is the part that goes wrong.

UPI → SEPA / GiroCode → Crypto → PayPal →

The one place a QR code really can cost you money

Everywhere else on this site, a QR code that does not scan is an inconvenience. On a payment code, a wrong character is money going to the wrong account, and there is no undo. So this is the one kind of code worth checking twice, and two of those checks can be done by a machine.

An IBAN checks itself. Every IBAN carries two check digits: move the first four characters to the end, turn letters into numbers, and the whole thing modulo 97 must equal 1. That catches a transposed pair of digits — by far the commonest typo — before anything is printed. This tool runs it as you type and refuses a code whose IBAN does not add up.

And the finished code is decoded. After the pattern is drawn, it is read back with a decoder and compared to your text character for character. It is the difference between believing the address is right and having seen it come back out.

UPI: what actually goes in the code

India's UPI codes follow NPCI's linking specification. The code is a URI, and only two parts are required — the payment address and the payee name:

upi://pay?pa=jane@okhdfcbank&pn=Jane%20Doe&cu=INR

The currency is always INR. An amount is optional, and leaving it out is usually right: with no amount, the payer types what they owe, which is what a counter sticker or a poster needs. Fix an amount and every scan pre-fills that figure, which suits a single-price item and nothing else.

We cannot tell you whether a UPI ID exists — nobody can without asking a bank — so the tool checks only the shape, name@handle, and says as much rather than implying more.

Europe: EPC, also called GiroCode

The euro-area equivalent is defined by the European Payments Council in EPC069-12, and it is a stricter format than most people expect. There are no field names: the payload is a list of lines, and the position of a line is the field. Line 6 is the beneficiary, line 7 the IBAN. Put one in the wrong place and it is a different, wrong instruction.

Two constraints come from the standard rather than from anyone's preference, and this tool holds you to both:

Which format does the payer’s app actually read?

There is no worldwide payment QR standard. There are several regional ones, and a code in the wrong format is not a bad code — it is simply not one that the phone in front of you recognises. Pick by where your payers are, not by what sounds most official.

FormatWhere it worksWhat the payer sees
UPIIndia — GPay, PhonePe, Paytm, BHIM and every UPI bank appThe payment screen opens with your ID and name filled in. The amount stays editable unless their app locks it.
EPC / GiroCodeThe euro area — most German, Austrian and Dutch banking apps; support elsewhere in the SEPA zone is patchierA prepared transfer with the beneficiary, IBAN, amount and reference filled in, to confirm.
PayPalAnywhere PayPal operatesA PayPal.me web page. It is an ordinary link, not a banking standard.
CryptoAny wallet that understands the coin’s URI schemeThe send screen with your address and, if you set one, the amount.

If your payers are in more than one of those places, print more than one code and label them. A single code cannot serve a UPI app and a German banking app, and there is no format that quietly does both.

The sticker on the counter — the risk that is specific to money

A QR code is unreadable to a person, which is the whole appeal and, on a payment code, the whole problem. Nothing about the pattern says whose account it pays. That has made printed payment codes a standard target: someone puts their own sticker over yours, on a market stall, a car park meter, a charity collection tin or a restaurant table, and the payments go to them until somebody notices. It is common enough to have a name — quishing — and the people it works on are the ones being careful in every other way.

Three habits cover most of it, and none of them need any technology:

Our QR code scanner reads a code out of a photograph and shows the payment details as text, so you can compare a picture of the sign on the wall with what it should say. That is also worth doing before you pay a code you did not print.

Worth saying plainly, because the marketing around payment codes rarely does: the code is not a security feature. It is a faster way to type an account number, and it carries exactly the protection that typing one would — which is why the beneficiary name on the payer’s confirmation screen is doing more work than the pattern is.

Static codes, and why that is the right answer for money

A dynamic QR code does not contain your payment address at all. It contains a link to the generator's server, which redirects and counts the scan — that is what makes it editable and trackable. For a marketing poster that trade can be worth it. For a payment code it means the address someone pays is one you do not control, on a service that can change its pricing, go down, or disappear, after the sticker is on the counter.

Everything here is static. Your address is inside the pattern, so a scan goes straight to you, there is no service in the middle, nothing expires, and there is no account to keep paying for. The cost is the honest one: to change the address you print a new code.

Printing it for a counter

A payment code is short, so it stays small — a UPI code with a name and no amount is usually about 29 modules across. At 30 mm wide that puts each module near 0.73 mm, comfortably above the 0.4 mm floor, and it scans from about 30 cm. For a counter sticker read at arm's length, 40–50 mm is the easier size.

Take the PDF or EPS to a printer. Both are true vectors, so the code stays exact at any size, and neither depends on a screenshot surviving a resize. Do check the printed sticker with a phone before you order five hundred of them — a software decoder agreeing is strong evidence, but a camera under shop lighting is the test that counts.

What this tool will not do

It will not upload anything, which is the reason it cannot offer some things you will see elsewhere. A payment address is not especially secret, but it is yours, and there is no reason for it to travel to a third party to be turned into a square. Nothing here leaves the browser.

It also cannot verify that an address is real, that a wallet belongs to you, or that a UPI ID is active. No generator can. If you see one claiming otherwise, it is checking the shape of the string exactly as this one does.

Frequently Asked Questions

Choose UPI, enter your UPI ID and the payee name, and leave the amount blank unless every payment really is the same figure. NPCI's specification requires only those two fields, and the currency is always INR. The code is made in your browser, so your payment address is never sent anywhere.
Usually not. With no amount, the payer types what they owe, which is what a counter sticker, a poster or a shared bill needs. Fixing an amount means every single scan pre-fills that figure, which only suits a single-price item. You can always make a second code with an amount for a specific product.
Partly, and the honest answer differs by format. An IBAN carries its own check digits, so a mistyped one can be detected mathematically and this tool rejects it — that catches the commonest error, a transposed pair of digits. A UPI ID has no checksum, so only its shape can be checked, name@handle. Nobody can confirm an address exists without asking the bank.
The European Payments Council's standard for a SEPA credit transfer, used across the euro area and often called a GiroCode. The payload is a list of lines with no field names, so the order is the format: line 6 is the beneficiary and line 7 the IBAN. The standard also fixes error correction at M and caps the whole code at 331 bytes.
Because the limit is 331 bytes and not 331 characters. An accented or non-Latin letter costs two bytes in UTF-8, so a beneficiary name and reference that look well inside the 70 and 140 character field limits can still exceed the payload cap. Shorten the reference — it is the field with the most room in it.
Not the ones made here. Your address is encoded directly into the pattern, so there is no link, redirect or account behind it. A dynamic code from a subscription service does expire in practice: it points at that company's server, and it stops working if the service changes, lapses or shuts down — after the sticker is already on your counter.
It depends entirely on where the code is made. Here it is made in your browser: your UPI ID, IBAN or wallet address is never transmitted, so there is nothing to intercept or store. A generator that builds the image on its server has your payment address on it. Neither is dangerous in the way a password would be, but there is no reason to hand it over.
You can, and it is worth being careful. A logo covers real data, and in our testing the largest one that still read back covered 15.2% of a code's area at the highest error-correction level — far less than the 30% that level is named for. On a payment code the tool decodes the result and tells you whether your address came back intact before you download it.
A UPI or SEPA code is short, usually around 29 modules across, so at 30 mm wide each module is about 0.73 mm — above the practical 0.4 mm floor and readable from roughly 30 cm. For a counter sticker read at arm's length, 40–50 mm is easier. Print from the PDF or EPS, both of which are true vectors.

Related tools