Create a payment QR code for payment slips and donation letters
The tool creates payment QR codes directly in your browser: the EPC QR code, often called GiroCode in Germany, for SEPA credit transfers in euros, and QR Platba for domestic koruna payments in Czechia. It checks the IBAN and reference, shows the code as plain text and sends nothing to a server.
A payment QR code holds the details of a credit transfer as text: payee, IBAN, amount and remittance information. The banking app reads them in, and the payer checks and confirms. This tool creates the code in your browser. What you enter is not sent to a server, not stored and not tracked.
Test with a banking app before printing. Mailingbid does not check accounts or payee names. The tool only checks format, lengths and check digits. Before approving the print, scan the finished code with a banking app and compare payee, IBAN, amount and remittance information. Do not submit the payment.
Payment details and print size
Code, content and print dimensions
Fill in the required fields and create the preview.
GiroCode and the EPC QR code: what it contains
The EPC QR code is based on guideline EPC069-12 of the European Payments Council (version 3.1 of 19 March 2024). It holds a SEPA credit transfer as plain text in fixed lines: service tag BCD, version, character set, SCT, BIC, payee, IBAN, amount, purpose code and either a reference or remittance text. Empty elements remain as empty lines; nothing follows the last populated line. The EPC describes the document as informative and optional for payment service providers. [1]
In Germany the code is often called GiroCode. The German banking industry's guideline for payment forms (Deutsche Kreditwirtschaft, DK) recommends it as an option and labels it “Zahlen mit Code”. Its rules are stricter than the EPC's. The amount has no trailing zeros: EUR12.3, not EUR12.30. [2] [4]
| Element | EPC069-12 | Germany (DK) | Austria (PSA) | This tool |
|---|---|---|---|---|
| Version | 001 or 002 | 002 | 001 or 002 | 002 |
| BIC | Optional in version 002, required outside the EEA | Only for countries outside the EU and EEA | Optional in version 002 | Required only for an IBAN outside the EU and EEA |
| Amount | EUR 0.01 to 999999999.99 | No trailing zeros | No trailing or leading zeros | No trailing zeros, e.g. EUR12.3 |
| Reference | Up to 35 characters, RF reference possible | RF reference with exactly 25 characters | Up to 35 characters | DE: RF with 25 characters; AT: RF or up to 35 digits |
| Remittance text | Up to 140 characters | Up to 70 characters | Up to 140 characters | Up to 70 characters |
| Note to the payer | Up to 70 characters | Recommended to leave empty | Up to 70 characters | Not offered |
For all of them: at most 331 bytes, at most QR version 13, error correction level M. The tool writes UTF-8 without a byte order mark, separates lines with a line feed and stores the text as a single byte-mode segment. [1] [4]
Austria: “Zahlen mit Code”
In Austria, Payment Services Austria (PSA) specifies the same EPC code under the name “Zahlen mit Code”. Payment reference and remittance text are always both present as lines, but only one of them is filled. For the amount, PSA says EUR3 is better than EUR3.00, and leading zeros are not allowed. PSA allows 140 characters of remittance text; the tool limits it to 70 so that the same code also meets the German rules. [4]
On 23.10.2026 the PSA specification (version 3.0 of 1 May 2021) was no longer available at its address; we read an archived copy from January 2026.
QR Platba in Czechia
QR Platba follows the Czech Banking Association (ČBA) standard for domestic koruna payments, version 1.2, effective since 1 January 2022. The code starts with SPD*1.0*, followed by key and value pairs separated by an asterisk. A value must not contain an asterisk itself. [5]
According to the standard, all banks process the account (ACC), amount (AM), currency (CC), due date (DT), message (MSG) and the variable, specific and constant symbols. Only some banks use the payee name (RN). For printed media the standard recommends error correction level M and, where possible, only capitals, digits and a few symbols. [5]
The tool does not convert a Czech account number (prefix-number/bank code) into an IBAN: the conversion is not part of the sources checked here. The “QR Platba” frame and label are described only in a graphics manual on the qr-platba.cz website, not in the ČBA standard. The tool therefore exports the code alone, without that label. [7]
On 23.10.2026 the file on the ČBA website could not be retrieved; we read the copy of the standard on qr-platba.cz. [6]
Slovakia: PAY by square is not supported
Slovakia uses PAY by square, the Slovak Banking Association's standard (specification 1.2.0 since 9 October 2025). It is a different format: the data is an XML data model compressed with LZMA and encoded in Base32hex. It cannot be read as plain text and is compatible with neither the EPC code nor QR Platba. This tool does not create PAY by square codes. [8] [9]
Where the code goes on a payment slip or donation letter
- Germany (DK guideline): 15 × 15 mm on the credit transfer or payment slip form, with at least 1 mm clearance above and at least 3 mm to the payee field. On an invoice or letter 25 × 25 mm, with a black border (at least 4 modules from the code) and the words “Zahlen mit Code” on the right-hand side in at least 7 pt sans serif, preferably in the top right corner. The plain-text details on the form take precedence over the code. [2]
- Austria (PSA): module size 15 to 20 mil, roughly 0.38 to 0.51 mm. On invoices at the bottom edge, far left or far right. On the payment order form, with a 0.4 mm module (± 5 %), bottom right, directly below the payment reference field. Border and “Zahlen mit Code” on the right, reading from bottom to top, with 4 modules of clearance and at least 7 pt. [4]
- Czechia: the ČBA standard does not specify a print size. Plan the size with your printer and test the print. [5]
The tool exports the code with its clear margin, without border or label. Besides the total size, the results list the size of the code without margin and the module size, so you can match both against these requirements.
Before approving the print
- Compare the content below the preview, element by element, with the account details, ideally with a second person.
- Place the file in the layout at its planned size, scan the proof with at least one banking app per target country, and check payee, IBAN, amount and remittance information in the app without submitting the payment.
- The tool creates one code for every copy. If each letter needs its own reference, the code is produced in variable data printing; agree this with your printer or lettershop.
- According to the DK's 2025 notice, the payee cannot require an instant transfer; the code cannot express it. [3]
Sources
All sources checked on 23.10.2026.
- European Payments Council: EPC069-12, Quick Response Code – Guidelines to Enable the Data Capture for the Initiation of an SCT, version 3.1 (PDF) — Line order, lengths, 331 bytes, version 13, error correction M, official examples
- Die Deutsche Kreditwirtschaft: Richtlinien für einheitliche Zahlungsverkehrsvordrucke (2016), annex 4 (PDF, German) — Version 002, amount format, 25-character RF reference, 70-character remittance text, character set, print size and placement
- Die Deutsche Kreditwirtschaft: Merkblatt 2025 on amendments to the guidelines (PDF, German) — Instant transfer cannot be expressed in the code
- Payment Services Austria: Verwendung von QR-Code zur Initiierung von Zahlungsaufträgen, version 3.0 (archived copy of 20.01.2026, German) — Zahlen mit Code, amount format, reference or text, printing and labelling
- Česká bankovní asociace: Formát pro sdílení platebních údajů v rámci tuzemského platebního styku v CZK prostřednictvím QR kódů, version 1.2 (PDF, copy on qr-platba.cz, Czech) — SPD*1.0* structure, keys and lengths, asterisk, error correction M, example
- Česká bankovní asociace: article on the standard (Czech) — Publisher's page, no download
- QR Platba: Grafický manuál (Czech) — Border and label, not part of the ČBA standard
- Slovenská banková asociácia: payment services projects (Slovak) — PAY by square, current specification 1.2.0
- Slovenská banková asociácia: PAY by square Specifications 1.2.0 (PDF) — XML data model, LZMA compression, Base32hex
Technology: qrcode (MIT license). Text and checks: Mailingbid. qrcode · License notices. QR Code is a registered trademark of DENSO WAVE INCORPORATED.