# Swiss QR-bill

> Source: https://docs.barcoder.ai/docs/standards/swiss-qr-bill
> research date 2026-05-28 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [Swiss Implementation Guidelines QR-bill v2.3 — SIX Group (Nov 2025)](https://www.six-group.com/dam/download/banking-services/standardization/qr-bill/ig-qr-bill-delta-guide-v2.3-en.pdf)
- [QR-bill — Swiss Payment Standards (SIX)](https://www.six-group.com/en/products-services/banking-services/payment-standardization/standards/qr-bill.html)

## Overview

The Swiss QR-bill (German: *QR-Rechnung*) is **Switzerland's national invoice payment standard**, operated by [SIX Group](https://www.six-group.com/) <sup>[1][1], [2][2]</sup>. It replaced **seven separate Swiss payment slip formats** with a single standard that uses a [QR Code](https://docs.barcoder.ai/docs/standards/qr-code) symbol carrying ISO 20022 pain.001 payment-initiation data <sup>[3][3], [Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>. 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 <sup>[3][3], [4][4]</sup>. The current revision is **v2.3 (November 2025)**, with v2.4 in draft <sup>[2][2], [5][5]</sup>.

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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [3][3]</sup>. The standard also supports both CHF and EUR currencies, reflecting Switzerland's position outside the EU but inside the European payments network <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>.

## 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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [3][3]</sup>.

**Timeline** <sup>[3][3], [4][4], [Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>:

- **2017** — ISO 20022 Swiss Implementation Guidelines v1.7.1 published (07.08.2017) — the messaging foundation that QR-bill would later carry <sup>[6][6]</sup>.
- **September 2018** — Swico Syntax Definition (S1) published, defining structured billing-info fields for QR-bill payloads <sup>[5][5]</sup>.
- **2018–2019** — QR-bill specification work led by SIX Interbank Clearing.
- **September 2019** — Swiss Implementation Guidelines QR-bill v2.1 published <sup>[1][1]</sup>.
- **30 June 2020** — **QR-bill launched** in Switzerland; parallel run with legacy formats begins <sup>[4][4]</sup>.
- **February 2021** — v2.2 published, replacing v2.1 <sup>[1][1]</sup>.
- **1 October 2022** — Legacy Swiss payment slips definitively retired; QR-bill becomes the sole national format <sup>[3][3]</sup>.
- **November 2023** — v2.2 / partial v2.3 implementation begins in libraries <sup>[2][2]</sup>.
- **November 2025** — **v2.3 published**: structured addresses only (combined-address format deprecated), additional umlauts and special characters supported <sup>[5][5], [Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>.
- **(planned)** v2.4 draft published in German <sup>[2][2]</sup>.

## 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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [2][2]</sup>.

**Physical specifications** <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [2][2]</sup>:

| 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** <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>:

| Parameter | Value |
|---|---|
| Symbology | [QR Code](https://docs.barcoder.ai/docs/standards/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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [2][2]</sup>:

| 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** <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>:

| 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** <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>:
- **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 `SCOR` or `NON` reference 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** <sup>[5][5], [6][6]</sup>. 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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>:

- **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 <sup>[5][5]</sup>.
- **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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>.

**Critical Switzerland-specific property**: the QR-bill is the **only national payment format on a printed invoice** since 1 October 2022 <sup>[3][3]</sup>. 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 <sup>[2][2], [3][3]</sup>.

**Encoders / decoders:**

- **PHP** — [sprain/php-swiss-qr-bill][7] — **329★**, active 2026. Creates QR-bill payment parts as Swiss/Liechtenstein-compatible payment documents. The most-starred PHP library <sup>[7][7]</sup>.
- **TypeScript / Node.js + browser** — [schoero/swissqrbill][8] — **235★**, active 2026. Generates PDF or SVG; both standalone payment sections and complete invoices <sup>[8][8]</sup>.
- **Java** — [manuelbl/SwissQRBill][9] — **179★**, active 2026. Encoder and decoder; outputs PDF, SVG, PNG; multilingual support; validates payloads against the spec <sup>[9][9]</sup>.
- **C# / .NET** — [manuelbl/SwissQRBill.NET][10] — sibling to the Java library by the same maintainer; .NET Standard / .NET Framework targets <sup>[10][10]</sup>.
- **Python** — [claudep/swiss-qr-bill][11] — Python library for QR-bill payment slip generation <sup>[11][11]</sup>.
- **Go** — [stapelberg/qrbill][12] — Go-language QR-bill implementation <sup>[12][12]</sup>.

**Bank apps** (canonical production consumption) <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>:
- **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] <sup>[13][13]</sup>.

## Comparison

**vs. [HUB3](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/qr-code) with ISO 20022 pain.001 payload; HUB3 uses [PDF417](https://docs.barcoder.ai/docs/standards/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 <sup>[hub3-ref], [Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>.

**vs. [EPC QR / Stuzza](https://docs.barcoder.ai/docs/standards/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) <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>.

**vs. EMVCo MPM family ([SGQR](https://docs.barcoder.ai/docs/standards/sgqr), [DuitNow QR](https://docs.barcoder.ai/docs/standards/duitnow-qr), [PromptPay QR](https://docs.barcoder.ai/docs/standards/promptpay-qr), [Pix](https://docs.barcoder.ai/docs/standards/pix), [QRIS](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>.

## 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) <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [2][2]</sup>. 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** <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [3][3]</sup>. 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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>. 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** <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>. 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 <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH), [2][2]</sup>:

- **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) <sup>[2][2]</sup>
- **SIC IP**: Swiss instant payment platform (launched August 2024) — QR-bills now settle in seconds for ~95% of Swiss customer payments <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>
- **ECB TIPS link**: feasibility study underway 2026, would enable cross-border EUR instant settlement of QR-bill EUR payments <sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>
- **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

[1]: https://www.six-group.com/dam/download/banking-services/standardization/qr-bill/ig-qr-bill-v2.2-en.pdf
[2]: https://www.six-group.com/en/products-services/banking-services/payment-standardization/standards/qr-bill.html
[3]: https://www.six-group.com/en/newsroom/media-releases/2020/20200609-qr-bill-launch.html
[4]: https://helpdesk.coresystems.ch/hc/en-us/articles/360014205080-Implementation-of-the-new-Swiss-QR-Bill-2020
[5]: https://www.six-group.com/dam/download/banking-services/standardization/qr-bill/ig-qr-bill-delta-guide-v2.3-en.pdf
[6]: https://www.six-group.com/dam/download/banking-services/interbank-clearing/en/standardization/iso/swiss-recommendations/archives/implementation-guidelines-ct/implementation-guidelines-ct_v1_7_1.pdf
[7]: https://github.com/sprain/php-swiss-qr-bill
[8]: https://github.com/schoero/swissqrbill
[9]: https://github.com/manuelbl/SwissQRBill
[10]: https://github.com/manuelbl/SwissQRBill.NET
[11]: https://github.com/claudep/swiss-qr-bill
[12]: https://github.com/stapelberg/qrbill
[13]: https://www.six-group.com/en/products-services/banking-services/payment-standardization/downloads-faq/download-center.html
[ch-cro]: https://docs.barcoder.ai/docs/payments/CH
[hub3-ref]: https://docs.barcoder.ai/source/standards/hub3

1. [Swiss Implementation Guidelines QR-bill v2.2 — SIX][1]
2. [QR-bill — Swiss Payment Standards (SIX)][2]
3. [QR-bill launch — SIX media release, June 2020][3]
4. [Implementation of new Swiss QR-Bill (2020) — Helpdesk Coresystems][4]
5. [QR-bill v2.3 Delta Guide — SIX (November 2025)][5]
6. [ISO 20022 Swiss Implementation Guidelines CT v1.7.1 — SIX (2017)][6]
7. [sprain/php-swiss-qr-bill — GitHub][7]
8. [schoero/swissqrbill — GitHub][8]
9. [manuelbl/SwissQRBill — GitHub][9]
10. [manuelbl/SwissQRBill.NET — GitHub][10]
11. [claudep/swiss-qr-bill — GitHub][11]
12. [stapelberg/qrbill — GitHub][12]
13. [SIX Download Center — Payment Standards][13]
14. [CH-switzerland.md]<sup>[Switzerland report](https://docs.barcoder.ai/docs/payments/CH)</sup>

## Deployments

Found in the following country reports (grep across `reports/countries/`):

- **CH** — [CH-switzerland.md](https://docs.barcoder.ai/docs/payments/CH)
- **LI** — [LI-liechtenstein.md](https://docs.barcoder.ai/docs/payments/LI)
