Standards/swiss-qr-bill
Swiss QR-bill
Overview
The Swiss QR-bill (German: QR-Rechnung) is Switzerland's national invoice payment standard, operated by SIX Group [1, 2]. It replaced seven separate Swiss payment slip formats with a single standard that uses a qr-code symbol carrying ISO 20022 pain.001 payment-initiation data [3, ch-cro]. The standard was published in 2018, launched on 30 June 2020, and became mandatory on 1 October 2022 when all legacy payment slips were retired [3, 4]. The current revision is v2.3 (November 2025), with v2.4 in draft [2, 5].
Two features make Swiss QR-bill instantly recognisable: the mandatory Swiss cross logo in the centre of the QR (the only national payment QR with this feature), and the 27-digit QR Reference (QRR) number for domestic reference tracking [ch-cro, 3]. The standard also supports both CHF and EUR currencies, reflecting Switzerland's position outside the EU but inside the European payments network CH.
History
Swiss payment slips have a long history dating back to the early 20th century, and by 2018 there were seven different formats in concurrent use (red slip, orange slip with reference number, ESR, BVR, etc.) — a fragmentation problem that complicated bank operations and confused consumers [ch-cro, 3].
- 2017 — ISO 20022 Swiss Implementation Guidelines v1.7.1 published (07.08.2017) — the messaging foundation that QR-bill would later carry [6].
- September 2018 — Swico Syntax Definition (S1) published, defining structured billing-info fields for QR-bill payloads [5].
- 2018–2019 — QR-bill specification work led by SIX Interbank Clearing.
- September 2019 — Swiss Implementation Guidelines QR-bill v2.1 published [1].
- 30 June 2020 — QR-bill launched in Switzerland; parallel run with legacy formats begins [4].
- February 2021 — v2.2 published, replacing v2.1 [1].
- 1 October 2022 — Legacy Swiss payment slips definitively retired; QR-bill becomes the sole national format [3].
- November 2023 — v2.2 / partial v2.3 implementation begins in libraries [2].
- November 2025 — v2.3 published: structured addresses only (combined-address format deprecated), additional umlauts and special characters supported [5, ch-cro].
- (planned) v2.4 draft published in German [2].
Technical specification
A Swiss QR-bill is a printed payment slip (A6 landscape, 148 × 105 mm) containing a Payment Part and Receipt, with the QR code in the centre of the Payment Part [ch-cro, 2].
Physical specifications [ch-cro, 2]:
| Parameter | Value |
|---|---|
| Payment Part size | DIN A6 landscape (148 × 105 mm) |
| Components | Payment section + Receipt |
| QR code size | 46 × 46 mm (recommended) |
| Module size minimum | 0.4 mm |
| Swiss cross | Mandatory centre element |
QR code symbology CH:
| Parameter | Value |
|---|---|
| Symbology | qr-code (ISO/IEC 18004) |
| Error correction level | M |
| Encoding | UTF-8 |
| Line separator | CR+LF (0x0d 0x0a) |
Payload structure — the QR-bill payload is plain text with 31–34 line-separated fields in a specific order [ch-cro, 2]:
| Field | Description |
|---|---|
| QRType | Fixed identifier — always SPC (Swiss Payments Code) |
| Version | Format version, e.g. 0200 for v2.0+ |
| Coding | Character set — always 1 (UTF-8) |
| IBAN | Creditor account — Swiss/Liechtenstein IBAN or QR-IBAN |
| Address Type | S (Structured) — only option since v2.3; was K (Combined) in earlier versions |
| Creditor Name | up to 70 characters |
| Creditor Address | Street, number, postal code, city, country (structured) |
| Amount | 0.01 to 999 999 999.99 |
| Currency | CHF or EUR (3 chars) |
| Debtor Info | Optional payer details |
| Reference Type | QRR, SCOR, or NON |
| Reference | Per Reference Type (see below) |
| Additional Info | Unstructured message, up to 140 characters |
| Trailer | Always EPD (End of Payment Data) |
| Billing Info | Optional structured billing data (Swico S1 syntax) |
| AltPmt | Alternative payment procedures (up to 2) |
Reference types CH:
| Type | Format | Use |
|---|---|---|
| QRR (QR Reference) | 27 digits (27th = mod-10-recursive check digit) | Swiss domestic — requires QR-IBAN |
| SCOR (Creditor Reference) | RF + 2 check digits + up to 21 chars (ISO 11649) | International / EUR |
| NON | empty | Unstructured payments |
IBAN vs QR-IBAN CH:
- QR-IBAN uses a specific bank-code range (IID 30000–31999) and is required when the Reference Type is
QRR. - Standard IBAN is used with
SCORorNONreference types.
ISO 20022 integration: The QR-bill payload contains the data required to trigger an ISO 20022 pain.001 "Customer Credit Transfer Initiation" message, payment type D [5, 6]. The QR code is essentially a serialised payment-initiation request that the consumer's banking app translates into a SIC payment.
Sample payload (simplified):
SPC
0200
1
CH4431999123000889012
S
Robert Schneider AG
Rue du Lac
1268
Nyon
CH
3949.75
CHF
S
Pia Rutschmann
Marktgasse
28
9400
Rorschach
CH
QRR
210000000003139471430009017
Bill no. 3139 for gardening work
EPD
Use cases
The Swiss QR-bill is single-purpose by design: invoice payment. It is the canonical channel for any printed bill, payment request, or payment slip in Switzerland CH:
- Utility bills — electricity, water, telecom invoices.
- Insurance premiums — health, life, property insurance bills.
- Government and tax bills — federal and cantonal tax assessments, municipal fees.
- Donation requests — NGOs, churches, charities (zero-amount QR-bills where the payer fills in the donation amount).
- Rent and condominium fees — Nebenkostenabrechnungen, Hausverwaltung invoices.
- B2B invoices — supplier-to-buyer payment slips for commercial transactions, with structured billing-info Swico S1 data for ERP integration [5].
- Cross-border invoices in EUR — used by Swiss companies billing eurozone customers; the QR-bill supports CHF and EUR currencies natively, and the SCOR reference type provides ISO 11649 international creditor reference CH.
Critical Switzerland-specific property: the QR-bill is the only national payment format on a printed invoice since 1 October 2022 [3]. There is no fallback — invoices issued in Switzerland use QR-bill or they cannot be machine-paid.
Implementations
Swiss QR-bill has one of the strongest open-source library ecosystems of any national payment standard, reflecting (a) widespread enterprise demand for QR-bill generation from billing software, and (b) SIX Group's publication of comprehensive open specifications [2, 3].
Encoders / decoders:
- PHP — sprain/php-swiss-qr-bill — 329★, active 2026. Creates QR-bill payment parts as Swiss/Liechtenstein-compatible payment documents. The most-starred PHP library [7].
- TypeScript / Node.js + browser — schoero/swissqrbill — 235★, active 2026. Generates PDF or SVG; both standalone payment sections and complete invoices [8].
- Java — manuelbl/SwissQRBill — 179★, active 2026. Encoder and decoder; outputs PDF, SVG, PNG; multilingual support; validates payloads against the spec [9].
- C# / .NET — manuelbl/SwissQRBill.NET — sibling to the Java library by the same maintainer; .NET Standard / .NET Framework targets [10].
- Python — claudep/swiss-qr-bill — Python library for QR-bill payment slip generation [11].
- Go — stapelberg/qrbill — Go-language QR-bill implementation [12].
Bank apps (canonical production consumption) CH:
- UBS Mobile Banking — scans QR-bills and submits payment via SIC.
- ZKB Mobile (Zürcher Kantonalbank)
- Raiffeisen E-Banking
- PostFinance App
ERP / accounting software — all major Swiss ERP and accounting platforms (Abacus, SAP, Bexio, Banana Accounting, etc.) generate and consume QR-bills natively.
Hosted tools and SDKs from SIX Group — official SIX validation tools, implementation guidelines (German, French, Italian, English), and style guide are published at SIX Download Center [13].
Comparison
vs. hub3 (Croatia) — Both are national printed-payment-slip standards from small European banking communities, both with rich coverage in their respective country reports. Differences: Swiss QR-bill uses qr-code with ISO 20022 pain.001 payload; HUB3 uses pdf417 with a 14-field text payload. Swiss QR-bill carries the Swiss cross logo; HUB3 has no in-symbol branding. Swiss QR-bill is more recent (2020 vs 2012) and replaced 7 legacy formats; HUB3 replaced only HUB1 [hub3-ref, ch-cro].
vs. epc-qr (European SEPA standard) — Both are QR-on-invoice standards in central / western Europe. Differences:
| Dimension | Swiss QR-bill | EPC QR |
|---|---|---|
| Operator | SIX Group | European Payments Council |
| Format | SPC plain text (15+ fields, structured) | BCD plain text (11 fields) |
| Currencies | CHF + EUR | EUR (SEPA) |
| Region | CH + LI only | SEPA-wide |
| Settlement rail | SIC / SIC IP | SEPA Credit Transfer (incl. instant) |
| Mandatory? | Yes (since 1 Oct 2022) | No, country-specific adoption |
| Distinctive feature | Swiss cross in QR centre | No mandatory branding |
| QR-IBAN / reference | 27-digit QRR available | RF reference (ISO 11649) |
Switzerland deliberately did not adopt EPC QR — it built its own standard with the structured-data sophistication needed for Swiss invoice workflows (Swico S1 billing-info, QRR reference, dual-currency CHF/EUR) CH.
vs. EMVCo MPM family (sgqr, duitnow-qr, promptpay-qr, pix, qris) — Different lineage. EMVCo MPM is merchant-presented at point-of-sale; Swiss QR-bill is printed on invoices for asynchronous payment. Different design optimisations: EMVCo TLV is binary-compact for QR-byte budget; Swiss QR-bill is plain text optimised for human-readable structured data carried in a paper-based workflow.
vs. twint (Switzerland's TWINT mobile payment) — Complementary, not competing. Swiss QR-bill is for printed invoices paid via banking app; TWINT is for in-store P2P and POS mobile payments. Both are operated/co-owned by SIX Group ecosystem entities. A Swiss consumer uses TWINT for in-store payments and Swiss QR-bill for invoice payments CH.
Fun facts
The Swiss QR-bill is the only national payment QR with a mandatory logo in the centre of the QR symbol (the Swiss cross) [ch-cro, 2]. The QR specification allows for a centred logo by reserving a quiet zone area; SIX's implementation guidelines mandate the Swiss cross's exact dimensions and placement. This makes Swiss QR-bills instantly visually recognisable.
The QR-bill replaced seven separate Swiss payment slip formats in one consolidation step on 1 October 2022 [ch-cro, 3]. The pre-QR-bill landscape included orange ESR slips (Einzahlungsschein mit Referenznummer), red slips, BVR (Banque-Verseur-Récépissé) slips, and several legacy regional variants — fragmentation that Swiss banks had been trying to unify since the 1990s. The QR-bill finally accomplished it.
The 27-digit QR Reference (QRR) is unique to Switzerland and exists for a specific reason: Swiss banks historically used a long structured reference number on payment slips to enable invoice-to-payment matching for accounting purposes, and the QRR carries that exact 27-digit format forward into the QR-bill era CH. The 27th digit is a mod-10-recursive check digit (the same algorithm Switzerland used on legacy payment slips).
Dual-currency support (CHF + EUR) reflects Switzerland's position as non-EU but at the heart of European trade CH. A Swiss exporter can issue a QR-bill in EUR to a German customer; the German customer's banking app scans it and initiates a SEPA EUR transfer to the Swiss exporter's account. No other national QR payment standard officially supports two currencies in the same payload format.
The Swiss QR-bill's library ecosystem is unusually strong for a country of 9 million people — sprain/php-swiss-qr-bill at 329★ rivals national libraries from countries with 10–100× the population. The mandatory October 2022 cutover created instant universal demand from Swiss ERP and billing-software vendors, which drove open-source contribution.
Status
Active, mandatory, comprehensively documented and supported. Most recent metrics [ch-cro, 2]:
- Universal adoption — sole national payment-slip format since 1 October 2022
- Current version: v2.3 (November 2025)
- Next version: v2.4 in draft (German publication available) [2]
- SIC IP: Swiss instant payment platform (launched August 2024) — QR-bills now settle in seconds for ~95% of Swiss customer payments CH
- ECB TIPS link: feasibility study underway 2026, would enable cross-border EUR instant settlement of QR-bill EUR payments CH
- Used by all Swiss banks for invoice generation and consumption
- Open-source library coverage: PHP, TS/JS, Java, C#, Python, Go (all actively maintained)
No deprecation planned. The QR-bill is positioned as durable Swiss national payment infrastructure on the order of several decades, deliberately designed to outlast the legacy slip formats it replaced. SIX continues active spec evolution (v2.3 in 2025, v2.4 in draft) rather than treating QR-bill as a frozen standard.
Sources
- Swiss Implementation Guidelines QR-bill v2.2 — SIX
- QR-bill — Swiss Payment Standards (SIX)
- QR-bill launch — SIX media release, June 2020
- Implementation of new Swiss QR-Bill (2020) — Helpdesk Coresystems
- QR-bill v2.3 Delta Guide — SIX (November 2025)
- ISO 20022 Swiss Implementation Guidelines CT v1.7.1 — SIX (2017)
- sprain/php-swiss-qr-bill — GitHub
- schoero/swissqrbill — GitHub
- manuelbl/SwissQRBill — GitHub
- manuelbl/SwissQRBill.NET — GitHub
- claudep/swiss-qr-bill — GitHub
- stapelberg/qrbill — GitHub
- SIX Download Center — Payment Standards
- CH-switzerland.md
Deployments
Found in the following country reports (grep across reports/countries/):
- CH — CH-switzerland.md
- LI — LI-liechtenstein.md