Die Antwort in Kürze

Der Swiss QR Code ist ein QR-Code nach ISO 18004, erzeugt mit der Fehlerkorrekturstufe M, mit höchstens 997 Zeichen (Version 25, maximal 117 × 117 Module), gedruckt in 46 × 46 mm mit einem Schweizer Kreuz von 7 mm in der Mitte. Seine Daten sind eine Folge von Zeilen in fester Reihenfolge: Header (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).

GruppeElementStatusInhalt und Länge
HeaderQRTypeMSPC (Swiss Payments Code), 3 Zeichen
VersionM0200, 4 Ziffern. Nur die Hauptversion 02 wird akzeptiert
CodingM1: UTF-8, beschränkt auf den lateinischen Zeichensatz
CdtrInfIBANMIBAN oder QR-IBAN, 21 Zeichen ohne Leerzeichen, nur CH oder LI
CdtrAdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, CtryM / DZahlungsempfänger: S (strukturierte Adresse), Name 70 Zeichen, Strasse 70, Hausnummer 16, Postleitzahl 16 (ohne Ländercode), Ort 35, Land ISO 3166-1
UltmtCdtr7 ZeilenXEndgültiger Zahlungsempfänger: konzeptionell vorgesehen, darf nicht befüllt werden (7 leere Zeilen)
CcyAmtAmtOBetrag 0.01 bis 999999999.99, Dezimalpunkt, zwei Dezimalstellen, ohne führende Nullen, max. 12 Positionen
CcyMCHF oder EUR
UltmtDbtrAdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, CtryO / DEndgültiger Zahlungspflichtiger («Zahlbar durch»): gleiche Längen wie beim Zahlungsempfänger; ganze Gruppe leer, wenn unbekannt
RmtInfTpMQRR, SCOR oder NON. QRR obligatorisch mit einer QR-IBAN
RefDQR-Referenz 27 Stellen oder Creditor Reference 5 bis 25 Zeichen; leer bei NON
AddInfUstrdOUnstrukturierte Mitteilung, max. 140 Zeichen, geteilt mit StrdBkgInf
TrailerMEPD (End Payment Data), 3 Zeichen
StrdBkgInfARechnungsinformationen (Swico S1), max. 140 geteilte Zeichen
AltPmtInfAltPmt (× 2 max.)AAlternative 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