About qrcode4payments
qrcode4payments is a small, free tool for generating Swiss QR-bills — the QR codes that have replaced the orange and red payment slips in Switzerland since 2020. Scan one with any Swiss eBanking app and the payment is pre-filled: IBAN, name, amount, and reference, ready to confirm.
Why a static site?
A QR-bill encodes payment information that is, by definition, sensitive. The simplest way to convince you (and us) that the tool is not phoning home with your bank details is to make the site entirely static: just HTML, CSS, and JavaScript shipped from Cloudflare Pages, running in your browser. There is no backend. There are no analytics. There is nothing to leak.
What it generates
The output is a QR code containing a Swiss Payments Code (SPC) payload conforming to the SIX Group Schweizer Implementation Guidelines QR-Rechnung (v2.x). The generated QR includes the Swiss-flag overlay required by the Style Guide so that Swiss banking apps recognise it as a QR-bill.
Currently the tool emits just the QR symbol. The full A6 payment-slip layout (the "Payment part" and "Receipt" you would see on a printed invoice) is on the roadmap — see the implementation plan.
What it validates
- IBAN format and mod-97 checksum (Swiss CH and Liechtenstein LI only — the QR-bill spec doesn't allow others).
- QR-IBAN detection (IID 30000–31999), and the corresponding constraint that the reference must be a QR reference (QRR).
- QR reference: 27 digits with the Swiss mod-10 recursive check digit.
- Creditor Reference (SCOR / ISO 11649): starts with RF, 2 check digits, ≤21 alphanumeric, mod-97 check.
- Amount range and 2-decimal format.
- Per-field length limits and the QR-bill character set (Latin-1 subset).
Known limitations
- UI is English only for now. Translations (DE / FR / IT) are planned.
- The QR encoding library is loaded from a CDN; vendoring it locally so the tool runs fully offline is on the plan.
- No full payment-slip PDF generation yet — only the QR itself.
Disclaimer
This project is independent and not affiliated with SIX Group or any Swiss bank. The generated QR codes are checked client-side against the published specification, but you should always make a small real-world test payment before using a generated QR-bill for production invoicing.
Source & licence
Source code is on GitHub. Licence: to be confirmed by the project owner.