Europe has no single payment QR code. The euro area shares one standard, the EPC QR code, and several countries have a national code that their own banking apps read best: UPN QR in Slovenia, HUB3 in Croatia, QR Platba in Czechia, PAY by square in Slovakia, ZBP in Poland and MNB QR in Hungary. Which one a shop needs depends on where its customers bank, not where the shop is.
The seven standards at a glance
Every standard carries the same core: who is paid, into which account, how much, and with which reference. They differ in format, currency and who defines them.
| Standard | Country | Currency | Code | Defined by |
|---|---|---|---|---|
| UPN QR | Slovenia | EUR | QR code, version 15, ISO 8859-2 text | Bank Association of Slovenia |
| HUB3 | Croatia | EUR | PDF417 barcode, UTF-8 text | Croatian Banking Association (HUB) |
| QR Platba | Czechia | CZK, EUR also allowed | QR code | Czech Banking Association |
| PAY by square | Slovakia | EUR | QR code, compressed text | Slovak Banking Association |
| ZBP | Poland | PLN | QR code | Polish Bank Association |
| MNB QR | Hungary | HUF | QR code, UTF-8 text | Hungarian National Bank |
| EPC QR | Euro area (SEPA) | EUR | QR code, at most 331 bytes | European Payments Council |
What they have in common
All seven work the same way for the payer. The customer scans the code in their banking app, the app fills in the payment, and the customer checks it and confirms. The code never moves money: it only saves typing. Every one holds the recipient, the account, the amount and a reference or purpose, so the payment can be matched to the order afterwards.
Where they differ
The barcode itself
Six of the seven are QR codes. HUB3 is a PDF417 barcode, a wide rectangle, so a QR code that holds the same text will not necessarily be read by a Croatian banking app.
How the text is encoded
UPN QR uses ISO 8859-2, so that č, š and ž survive, and ends with a control number the bank app uses to spot a damaged code. HUB3, MNB QR and EPC QR use UTF-8. PAY by square is the odd one out: its content is compressed and encoded, so you cannot read it as text.
Currency
EPC QR is for euro only. The Czech, Polish and Hungarian codes are built around koruna, zloty and forint, so a shop selling there normally has an account in that currency.
Field lengths and limits
Each standard caps its fields. UPN QR allows 33 characters for the recipient’s name, HUB3 allows 25, and EPC QR allows 70. EPC QR also limits the whole text to 331 bytes. Text over a limit is cut off or makes the code invalid, so a long shop name or a long order description needs care.
References
The reference is what lets you match a payment to an order. Slovenia and Croatia use a model such as SI00 or HR00 followed by a number, Czechia uses symbols such as the variable symbol, and EPC QR uses a free remittance text of up to 140 characters.
Which code does your shop need?
Choose by the customer’s bank, not by yours.
- Selling in your own country only: use your country’s national standard if it has one.
- Selling across several countries: use the national code of each customer’s country where it exists. A customer in Croatia reads HUB3 best, a customer in Slovakia reads PAY by square.
- Selling to other euro countries: use EPC QR as the fallback. Many European banking apps read it.
- Selling in koruna, zloty or forint: use the national code of that country, with an account in that currency.
Scanay does this choice for you. It looks at the shipping country of each order, builds the matching code and prints the account for that country next to it, so the code and the printed details always agree.
Mistakes that break a payment code
- Wrong text encoding. UPN QR text in UTF-8 instead of ISO 8859-2 turns č, š and ž into garbage.
- The wrong barcode. A QR code where HUB3 expects PDF417.
- A badly formatted amount. UPN QR and HUB3 write the amount without a decimal point, so one missing zero changes the amount tenfold.
- Fields over their limit. A long name that is silently cut off.
- Never scanning it. The only real test is a real banking app. Scan every new code with the app your customers use.
Make a test code
Each standard above has its own page that explains it in detail. Start with the one your customers use, then scan a test code with a banking app before you rely on it.
Questions
Is there one QR code for all of Europe?
For euro payments, the EPC QR code comes closest. It is defined by the European Payments Council for SEPA credit transfers, and many banking apps in the euro area read it. For other currencies, and in countries where banks prefer their own standard, you need the national code.
Is a GiroCode the same as an EPC QR code?
Yes. GiroCode is the German name for the same SEPA payment QR code.
Is HUB3 a QR code?
No. It is a PDF417 barcode. Croatian banking apps read both the printed barcode and the image on a screen.
Can a Slovenian UPN QR code be read by a foreign bank?
A foreign banking app will usually not read it. For payers in other euro countries, use the EPC QR code.