La risposta in breve

Lo Swiss QR Code è un codice QR ISO 18004 generato con il livello di correzione degli errori M, di al massimo 997 caratteri (versione 25, 117 × 117 moduli al massimo), stampato a 46 × 46 mm con una croce svizzera di 7 mm al centro. I suoi dati sono una sequenza di righe in un ordine fisso: intestazione (SPC, 0200, 1), creditore, importo e valuta, debitore, tipo di riferimento e riferimento, informazioni supplementari, trailer EPD, poi informazioni di fatturazione e procedure alternative facoltative.

Cosa distingue lo Swiss QR Code da un codice QR ordinario

Tecnicamente, lo Swiss QR Code è un codice QR conforme alla norma ISO 18004. Due cose lo rendono unico. Innanzitutto il suo contenuto, una struttura di dati fissa definita da SIX, che le applicazioni bancarie riconoscono grazie alle prime tre righe. Poi il suo marchio: una croce bianca su quadrato nero, circondata da una cornice bianca, apposta al centro del codice. Questa immagine è protetta da SIX Interbank Clearing SA e segnala a chi paga che ha in mano una QR-fattura e non un link a un sito.

La croce copre una parte dei moduli del codice. È il livello di correzione degli errori che permette comunque una lettura affidabile.

I parametri di generazione

Parametro Valore imposto Perché
Livello di correzione degli errori M (circa 15 % di ridondanza) Compensa la croce svizzera e i difetti di stampa
Dimensione massima dei dati 997 caratteri, separatori inclusi Corrisponde alla versione 25 del codice QR in codifica binaria
Versione massima del codice 25, ossia 117 × 117 moduli Deriva dalla dimensione dei dati e dal livello M
Dimensione dei moduli 0,4 mm al minimo in stampa Lettura sicura da scanner e fotocamera
Dimensione stampata 46 × 46 mm, senza il margine, sempre Indipendente dalla versione: il codice è generato nella versione più piccola e poi ridimensionato
Formato dell’immagine Vettoriale Conserva la nitidezza a qualsiasi risoluzione
Margine 4 moduli (≥ 1,6 mm) secondo ISO 18004, portato a 5 mm dallo standard Zona di silenzio per il lettore
Croce svizzera 7 × 7 mm al centro Marchio distintivo obbligatorio

La struttura dei dati, riga per riga

I dati dello Swiss QR Code formano una sequenza di valori separati da ritorni a capo, in un ordine fisso. Un valore assente è rappresentato da una riga vuota, mai da una riga eliminata. La tabella segue l’ordine delle Implementation Guidelines (versione 2.3, solo indirizzi strutturati).

GruppoElementoStatoContenuto e lunghezza
HeaderQRTypeMSPC (Swiss Payments Code), 3 caratteri
VersionM0200, 4 cifre. È accettata solo la versione principale 02
CodingM1: UTF-8 limitato al set di caratteri latino
CdtrInfIBANMIBAN o QR-IBAN, 21 caratteri senza spazi, solo CH o LI
CdtrAdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, CtryM / DCreditore: S (indirizzo strutturato), nome 70 car., via 70, numero 16, codice postale 16 (senza codice paese), località 35, paese ISO 3166-1
UltmtCdtr7 righeXCreditore finale: previsto a livello concettuale, non deve essere compilato (7 righe vuote)
CcyAmtAmtOImporto da 0.01 a 999999999.99, punto decimale, due decimali, senza zeri iniziali, 12 posizioni max.
CcyMCHF o EUR
UltmtDbtrAdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, CtryO / DDebitore finale («Pagabile da»): stesse lunghezze del creditore; gruppo interamente vuoto se sconosciuto
RmtInfTpMQRR, SCOR o NON. QRR obbligatorio con un QR-IBAN
RefDRiferimento QR 27 cifre, oppure Creditor Reference da 5 a 25 caratteri; vuoto per NON
AddInfUstrdOComunicazione non strutturata, 140 car. max., condivisi con StrdBkgInf
TrailerMEPD (End Payment Data), 3 caratteri
StrdBkgInfAInformazioni di fatturazione (Swico S1), 140 car. max. condivisi
AltPmtInfAltPmt (× 2 max.)AProcedure alternative, 100 car. ciascuna

Stati: M obbligatorio, D dipendente (obbligatorio se il gruppo è compilato), O opzionale, A aggiuntivo, X non utilizzato.

Un esempio completo

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

Le sette righe vuote dopo il paese del creditore corrispondono al gruppo «Creditore finale», che non deve essere compilato. L’importo si scrive 1949.75 nel codice e 1 949.75 in stampa. Il riferimento è codificato senza spazi.

Set di caratteri e indirizzi strutturati

Il codice utilizza la codifica UTF-8, limitata a un set di caratteri latino definito al capitolo 4.1.1 delle Implementation Guidelines. La versione 2.3 ha precisato ed esteso questo set, in particolare per le dieresi e i caratteri accentati correnti nelle quattro lingue nazionali. I caratteri fuori set devono essere sostituiti prima della generazione; il portale di validazione li segnala.

Da novembre 2025 è ammesso solo il tipo di indirizzo S (strutturato): via, numero, codice postale e località in campi distinti. Il vecchio tipo K, che accettava due righe libere, è scomparso dalla struttura dei dati. Un software che codifica ancora K produce un codice rifiutato.

Le procedure alternative: eBill e TWINT

Le ultime due righe facoltative del codice permettono di indicare fino a due procedure alternative, di 100 caratteri ciascuna. Ogni riga inizia con il nome abbreviato della procedura, poi un separatore e i dati propri del fornitore del servizio: per esempio eBill/B/… o twint/…. Le procedure registrate presso SIX sono eBill (SIX) e TWINT (TWINT SA).

Questi dati vengono interpretati solo dalla procedura interessata; la banca non li elabora. Sulla sezione pagamento si stampano in basso, in 7 pt, con il nome della procedura in grassetto, troncati con «…» se superano la riga. La versione 2.4 ne ha spostato la descrizione nel capitolo 3.5.5 e ha eliminato il vecchio capitolo 4.3.4, senza modificare la sintassi.

Lo Swiss QR Code sullo schermo

Il capitolo 3.8 delle Implementation Guidelines, entrato in vigore il 1° gennaio 2024, disciplina la visualizzazione di una QR-fattura in un canale online (portale clienti, pagina di pagamento). In questo caso viene visualizzata solo la sezione pagamento, senza ricevuta, con tutte le sue indicazioni leggibili anche su smartphone. Il cliente deve poter ottenere la QR-fattura completa per pagare allo sportello o con un ordine di pagamento, ed essere informato che il codice visualizzato non costituisce una fattura cartacea.

Generare e validare uno Swiss QR Code

Tre approcci a seconda delle dimensioni dell’azienda:

  • un software di fatturazione o un ERP svizzero, che genera il codice e l’impaginazione;
  • una libreria open source (Java, .NET, PHP, Python, JavaScript, Go, LaTeX, Typst) per i team che sviluppano la propria fatturazione;
  • il generatore online della banca, per qualche fattura occasionale.

Validate i dati dello Swiss QR Code con gli strumenti SIX nei formati accettati. Controllate separatamente PDF definitivo e foglio stampato con lo Style Guide, poi testate il trattamento bancario e la riconciliazione.

Fonti e riferimenti