Swiss QR-bill

The Swiss QR-bill replaced the Swiss orange and red inpayment slips in July 2020. It's an ISO 20022 Customer Credit Transfer Initiation (pain.001) payload rendered as a QR with a mandatory Swiss-cross overlay in the centre. Every Swiss bank accepts it; no Swiss bank accepts anything else.

Canonical spec: SIX Swiss Implementation Guidelines for the QR-bill v2.3 (2024-04).
ISO basis: ISO 20022 pain.001 Customer Credit Transfer Initiation.
Mandatory since: 1 July 2020. Legacy orange/red inpayment slips phased out 30 September 2022.

What it is

The payload is a newline-separated (CRLF) list of 32 fields arranged in seven blocks:

QRType         → Always "SPC"
Version        → 0200 (v2.3)
Coding         → 1 (Latin-1)
[Creditor Information]         ← 7 fields (IBAN + address)
[Ultimate Creditor]            ← 7 fields (optional, usually empty)
[Payment Amount Information]   ← 3 fields (amount, currency, due date)
[Ultimate Debtor]              ← 7 fields (optional)
[Payment Reference]            ← 2 fields (reference type + reference)
[Additional Information]       ← 2 fields (unstructured message + bill info)
[Alternative Procedures]       ← 2 fields (optional, rarely used)

The resulting QR sits inside a "Payment part" block on the bottom third of the invoice. Every Swiss banking app (UBS, ZKB, PostFinance, Raiffeisen, Neon, Yuh, Revolut CH) reads it natively.

QR-IBAN vs regular IBAN

A "QR-IBAN" is a special Swiss IBAN where the 5-digit bank code range is 30000–31999. QR-IBANs require a structured QR reference (QRR, 27 digits, mod-10 check). Regular Swiss IBANs accept creditor reference (SCOR, RFC 8905) or no reference.

Creditor IBAN typeValid reference typesNotes
QR-IBAN (bank code 30000–31999)QRR (27-digit, mod-10)Required. SCOR and NON are invalid.
Regular IBAN (CH or LI)SCOR or NONQRR is invalid — QR-IBAN only.

Canonical test vectors

CaseInputsReference type
Minimal (regular IBAN, no amount, no reference)iban=CH9300762011623852957
name=Acme AG
street=Bahnhofstrasse 1
postal=8001
city=Zürich
country=CH
NON
Regular IBAN with amount + unstructured message(same as above)
amount=100.00
message=Invoice 1234
NON
QR-IBAN with QRR referenceiban=CH4431999123000889012
name=Acme AG
street=Bahnhofstrasse 1
postal=8001
city=Zürich
country=CH
amount=250.00
reference=210000000003139471430009017
QRR
Liechtenstein IBANiban=LI0508800000021904015
name=Beispiel AG
city=Vaduz
country=LI
NON

Live Swiss IBAN validator

The validator below checks the three Swiss-specific rules: (1) country code is CH or LI, (2) length is exactly 21, (3) ISO 7064 mod-97 checksum passes. Pasted input is normalised (case, spaces stripped).

Enter a CH or LI IBAN to validate.

Common pitfalls

Scanner compatibility

ReaderSupportNotes
UBS Mobile / PostFinance / ZKB appNativeEvery Swiss banking app reads QR-bills natively.
Neon / Yuh / Revolut CHNativeNeobanks handle the full pain.001 payload.
iOS CameraNoiOS treats a QR-bill as a raw string — no parsing. User must open a banking app.
Android Camera / Google LensNoSame — no native parsing.
Commercial OCR (e.g. bill-pay services)YesBanking-grade OCR tooling reads QR-bills into AP/AR pipelines.

See also

Spec version verified 2026-04-18 (SIX v2.3, published 2024-04). Next review: 2026-07-18.