About qrcode4payment
qrcode4payment is a small, single-page tool that generates valid Swiss QR-bill payment QR codes directly in your browser. There is no backend, no account, no analytics; nothing you enter on the form is sent anywhere.
What is a Swiss QR-bill?
The QR-bill is the Swiss payment slip that replaced the orange and red slips in 2020. It contains all the information a payer needs (account, amount, reference, message) inside a single QR code with a distinctive Swiss-cross overlay. Every Swiss eBanking app can read it; scan the code and the payment form is pre-filled.
Which standard does this site implement?
The site follows the Swiss Implementation Guidelines QR-bill v2.3 published by SIX Interbank Clearing. The payload is the Swiss Payments Code (SPC): a UTF-8 string with a fixed line order, embedded in a Model-2 QR symbol with error-correction level M and a centered Swiss cross.
For the field-level reference used by the site's validators, see docs/SWISS_QR_SPEC.md in the repository.
What does it validate?
- IBAN — structure, country (CH/LI only), and ISO 13616 mod-97 check.
- QR-IBAN — automatically detected; required when the reference type is QRR.
- QR-Reference — 27 digits with Modulo-10 recursive check digit.
- Creditor Reference — ISO 11649 (
RF+ 2-digit mod-97-10 check). - Amount — 0.01–999 999 999.99, two decimals, CHF or EUR.
- Field lengths — every text field is capped to the spec's maximum.
- Character set — characters outside the QR-bill Latin subset are stripped.
Privacy
The page is a static HTML/CSS/JS bundle hosted on Cloudflare Pages. Once the page has loaded, the QR is generated entirely client-side and is never transmitted. There is no telemetry, no cookies, and no third-party scripts other than the QR-code library loaded from a public CDN. We do not store your IBAN, debtor information, or any other field.
Limitations & disclaimer
This is a community tool. It produces payloads that conform to the public Swiss QR-bill specification, but no warranty is given that a specific eBanking app will accept a specific payload. Always scan a new code with your own bank before sharing it widely. The site does not process or settle any payments — it only encodes the data into the standard QR format.
Source code
The full source is on GitHub. Contributions, bug reports, and example payloads are welcome.