Die Antwort in Kürze
SPC, 0200, 1), Zahlungsempfänger, Betrag und Währung, Zahlungspflichtiger, Referenztyp und Referenz, zusätzliche Informationen, Trailer EPD, dann fakultativ Rechnungsinformationen und alternative Verfahren.Was den Swiss QR Code von einem gewöhnlichen QR-Code unterscheidet
Technisch ist der Swiss QR Code ein QR-Code nach der Norm ISO 18004. Zwei Dinge machen ihn einzigartig. Zunächst sein Inhalt, eine von SIX definierte feste Datenstruktur, die Banking-Apps anhand der ersten drei Zeilen erkennen. Dann sein Markenzeichen: ein weisses Kreuz auf schwarzem Quadrat, umgeben von einem weissen Rahmen, in der Mitte des Codes. Dieses Bild ist von SIX Interbank Clearing AG geschützt und signalisiert dem Zahler, dass er eine QR-Rechnung in der Hand hält und keinen Link auf eine Website.
Das Kreuz überdeckt einen Teil der Module des Codes. Die Fehlerkorrekturstufe ermöglicht trotzdem ein zuverlässiges Lesen.
Die Erzeugungsparameter
| Parameter | Vorgegebener Wert | Warum |
|---|---|---|
| Fehlerkorrekturstufe | M (rund 15 % Redundanz) | Kompensiert das Schweizer Kreuz und Druckmängel |
| Maximale Datengrösse | 997 Zeichen, Trennzeichen inbegriffen | Entspricht der Version 25 des QR-Codes in binärer Codierung |
| Maximale Version des Codes | 25, also 117 × 117 Module | Ergibt sich aus der Datengrösse und der Stufe M |
| Modulgrösse | mindestens 0,4 mm im Druck | Sicheres Lesen durch Scanner und Kamera |
| Gedruckte Abmessung | 46 × 46 mm, ohne Rand, immer | Unabhängig von der Version: Der Code wird in der kleinsten Version erzeugt und dann skaliert |
| Bildformat | Vektor | Bewahrt die Schärfe bei jeder Auflösung |
| Rand | 4 Module (≥ 1,6 mm) nach ISO 18004, vom Standard auf 5 mm erhöht | Ruhezone für den Leser |
| Schweizer Kreuz | 7 × 7 mm in der Mitte | Obligatorisches Erkennungszeichen |
Die Datenstruktur, Zeile für Zeile
Die Daten des Swiss QR Code bilden eine Folge von Werten, getrennt durch Zeilenumbrüche, in fester Reihenfolge. Ein fehlender Wert wird durch eine leere Zeile dargestellt, nie durch eine gelöschte Zeile. Die Tabelle folgt der Reihenfolge der Implementation Guidelines (Version 2.3, nur strukturierte Adressen).
| Gruppe | Element | Status | Inhalt und Länge |
|---|---|---|---|
| Header | QRType | M | SPC (Swiss Payments Code), 3 Zeichen |
| Version | M | 0200, 4 Ziffern. Nur die Hauptversion 02 wird akzeptiert | |
| Coding | M | 1: UTF-8, beschränkt auf den lateinischen Zeichensatz | |
| CdtrInf | IBAN | M | IBAN oder QR-IBAN, 21 Zeichen ohne Leerzeichen, nur CH oder LI |
| Cdtr | AdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, Ctry | M / D | Zahlungsempfänger: S (strukturierte Adresse), Name 70 Zeichen, Strasse 70, Hausnummer 16, Postleitzahl 16 (ohne Ländercode), Ort 35, Land ISO 3166-1 |
| UltmtCdtr | 7 Zeilen | X | Endgültiger Zahlungsempfänger: konzeptionell vorgesehen, darf nicht befüllt werden (7 leere Zeilen) |
| CcyAmt | Amt | O | Betrag 0.01 bis 999999999.99, Dezimalpunkt, zwei Dezimalstellen, ohne führende Nullen, max. 12 Positionen |
| Ccy | M | CHF oder EUR | |
| UltmtDbtr | AdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, Ctry | O / D | Endgültiger Zahlungspflichtiger («Zahlbar durch»): gleiche Längen wie beim Zahlungsempfänger; ganze Gruppe leer, wenn unbekannt |
| RmtInf | Tp | M | QRR, SCOR oder NON. QRR obligatorisch mit einer QR-IBAN |
| Ref | D | QR-Referenz 27 Stellen oder Creditor Reference 5 bis 25 Zeichen; leer bei NON | |
| AddInf | Ustrd | O | Unstrukturierte Mitteilung, max. 140 Zeichen, geteilt mit StrdBkgInf |
| Trailer | M | EPD (End Payment Data), 3 Zeichen | |
| StrdBkgInf | A | Rechnungsinformationen (Swico S1), max. 140 geteilte Zeichen | |
| AltPmtInf | AltPmt (× 2 max.) | A | Alternative Verfahren, je 100 Zeichen |
Status: M obligatorisch, D abhängig (obligatorisch, wenn die Gruppe befüllt ist), O optional, A zusätzlich, X nicht verwendet.
Ein vollständiges Beispiel
SPC
0200
1
CH4431999123000889012
S
Robert Schneider AG
Rue du Lac
1268
2501
Biel
CH
1949.75
CHF
S
Pia-Maria Rutschmann-Schnyder
Grosse Marktgasse
28
9400
Rorschach
CH
QRR
210000000003139471430009017
Commande du 15 septembre 2026
EPD
//S1/10/10201409/11/260915/30/106017086/32/8.1/40/0:30
Die sieben leeren Zeilen nach dem Land des Zahlungsempfängers entsprechen der Gruppe «Endgültiger Zahlungsempfänger», die nicht befüllt werden darf. Der Betrag wird im Code als 1949.75 und im Druck als 1 949.75 geschrieben. Die Referenz wird ohne Leerzeichen codiert.
Zeichensatz und strukturierte Adressen
Der Code verwendet die Codierung UTF-8, beschränkt auf einen lateinischen Zeichensatz, der in Kapitel 4.1.1 der Implementation Guidelines definiert ist. Die Version 2.3 hat diesen Zeichensatz präzisiert und erweitert, insbesondere um die in den vier Landessprachen üblichen Umlaute und Akzentzeichen. Zeichen ausserhalb des Zeichensatzes müssen vor der Erzeugung ersetzt werden; das Validierungsportal weist auf sie hin.
Seit November 2025 ist nur noch der Adresstyp S (strukturiert) zugelassen: Strasse, Hausnummer, Postleitzahl und Ort in getrennten Feldern. Der alte Typ K, der zwei freie Zeilen akzeptierte, ist aus der Datenstruktur verschwunden. Eine Software, die noch K codiert, erzeugt einen Code, der zurückgewiesen wird.
Die alternativen Verfahren: eBill und TWINT
Die letzten beiden fakultativen Zeilen des Codes erlauben es, bis zu zwei alternative Verfahren mit je 100 Zeichen anzugeben. Jede Zeile beginnt mit dem Kurznamen des Verfahrens, dann folgen ein Trennzeichen und die anbieterspezifischen Daten: zum Beispiel eBill/B/… oder twint/…. Die bei SIX registrierten Verfahren sind eBill (SIX) und TWINT (TWINT AG).
Diese Daten werden nur vom betreffenden Verfahren interpretiert; die Bank verarbeitet sie nicht. Auf dem Zahlteil werden sie unten in 7 pt gedruckt, mit dem Namen des Verfahrens in Fettschrift, und mit «…» gekürzt, wenn sie über die Zeile hinausgehen. Die Version 2.4 hat ihre Beschreibung in Kapitel 3.5.5 verschoben und das alte Kapitel 4.3.4 gestrichen, ohne die Syntax zu ändern.
Der Swiss QR Code am Bildschirm
Kapitel 3.8 der Implementation Guidelines, in Kraft seit dem 1. Januar 2024, regelt die Anzeige einer QR-Rechnung in einem Online-Kanal (Kundenportal, Zahlungsseite). In diesem Fall wird nur der Zahlteil angezeigt, ohne Empfangsschein, mit allen Angaben auch auf dem Smartphone lesbar. Der Kunde muss die vollständige QR-Rechnung erhalten können, um am Schalter oder per Zahlungsauftrag zu bezahlen, und darüber informiert werden, dass der angezeigte Code keine Papierrechnung darstellt.
Einen Swiss QR Code erzeugen und validieren
Drei Ansätze je nach Grösse des Unternehmens:
- eine Fakturierungssoftware oder ein Schweizer ERP, das den Code und das Layout erzeugt;
- eine Open-Source-Bibliothek (Java, .NET, PHP, Python, JavaScript, Go, LaTeX, Typst) für Teams, die ihre eigene Fakturierung entwickeln;
- der Online-Generator der Bank für einige punktuelle Rechnungen.
Validieren Sie Swiss-QR-Code-Daten mit SIX-Werkzeugen in den unterstützten Formaten. Prüfen Sie das endgültige PDF und den Ausdruck separat anhand des Style Guides und testen Sie anschliessend Bankverarbeitung und Abgleich.
Quellen und Referenzen
- SIX Interbank Clearing, Schweizer Implementation Guidelines QR-Rechnung, Version 2.3, Kapitel 4 «Datenhaltung des Swiss QR Code» und Kapitel 6 «Parameter für die Erzeugung des Swiss QR Code». ↗
- SIX Interbank Clearing, Schweizer Implementation Guidelines QR-Rechnung, Version 2.4, Kapitel 3.5.5 (alternative Verfahren) und 3.8 (Online-Verwendung). ↗
- ISO/IEC 18004, Information technology — Automatic identification and data capture techniques — QR Code bar code symbology specification.
- SIX, Validierungsportal QR-Rechnung. ↗