La risposta in breve
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).
| Gruppo | Elemento | Stato | Contenuto e lunghezza |
|---|---|---|---|
| Header | QRType | M | SPC (Swiss Payments Code), 3 caratteri |
| Version | M | 0200, 4 cifre. È accettata solo la versione principale 02 | |
| Coding | M | 1: UTF-8 limitato al set di caratteri latino | |
| CdtrInf | IBAN | M | IBAN o QR-IBAN, 21 caratteri senza spazi, solo CH o LI |
| Cdtr | AdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, Ctry | M / D | Creditore: S (indirizzo strutturato), nome 70 car., via 70, numero 16, codice postale 16 (senza codice paese), località 35, paese ISO 3166-1 |
| UltmtCdtr | 7 righe | X | Creditore finale: previsto a livello concettuale, non deve essere compilato (7 righe vuote) |
| CcyAmt | Amt | O | Importo da 0.01 a 999999999.99, punto decimale, due decimali, senza zeri iniziali, 12 posizioni max. |
| Ccy | M | CHF o EUR | |
| UltmtDbtr | AdrTp, Name, StrtNm, BldgNb, PstCd, TwnNm, Ctry | O / D | Debitore finale («Pagabile da»): stesse lunghezze del creditore; gruppo interamente vuoto se sconosciuto |
| RmtInf | Tp | M | QRR, SCOR o NON. QRR obbligatorio con un QR-IBAN |
| Ref | D | Riferimento QR 27 cifre, oppure Creditor Reference da 5 a 25 caratteri; vuoto per NON | |
| AddInf | Ustrd | O | Comunicazione non strutturata, 140 car. max., condivisi con StrdBkgInf |
| Trailer | M | EPD (End Payment Data), 3 caratteri | |
| StrdBkgInf | A | Informazioni di fatturazione (Swico S1), 140 car. max. condivisi | |
| AltPmtInf | AltPmt (× 2 max.) | A | Procedure 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
- SIX Interbank Clearing, Implementation Guidelines svizzere per la QR-fattura, versione 2.3, capitolo 4 «Gestione dei dati dello Swiss QR Code» e capitolo 6 «Parametri per la creazione dello Swiss QR Code». ↗
- SIX Interbank Clearing, Implementation Guidelines svizzere per la QR-fattura, versione 2.4, capitoli 3.5.5 (procedure alternative) e 3.8 (utilizzo online). ↗
- ISO/IEC 18004, Information technology — Automatic identification and data capture techniques — QR Code bar code symbology specification.
- SIX, Portale di validazione QR-fattura. ↗