Valider une QR-facture, élément par élément
En bref
Collez le texte que rend votre lecteur de code QR — celui qui commence par SPC — et cette page le décode élément par élément : valeurs fixes, longueurs, clé de contrôle de l’IBAN, clé de la référence, et la combinaison du compte avec le type de référence. Chaque verdict porte le chapitre des Implementation Guidelines qui le fonde.
Rien ne part : tout le contrôle se fait sur votre appareil, et aucune donnée collée n’entre dans l’adresse de la page, dans son historique ni dans le stockage du navigateur.
Le contrôle
Collez la charge utile, elle est décodée ici.
Charger un exemple de SIX
Verdict
Ce que dit cette charge utile
- Compte
- CH44 3199 9123 0008 8901 2
- Type de compte
- QR-IBAN
- Montant
- 1949.75 CHF
- Référence
- QRR · 210000000003139471430009017
- Créancier
- Max Muster & Söhne
- Débiteur
- Simon Muster
Élément par élément
En-tête
00
Type de code QRType · Obligatoire
SPC
01
Version de la spécification Version · Obligatoire
0200
02
Code du jeu de caractères Coding · Obligatoire
1
Créancier — Compte / Payable à
03
IBAN ou QR-IBAN du créancier IBAN · Obligatoire
CH4431999123000889012
04
Type d’adresse du créancier AdrTp · Obligatoire
S
05
Nom du créancier Name · Obligatoire
Max Muster & Söhne
06
Rue ou case postale du créancier StrtNmOrAdrLine1 · Livré, peut être vide
Musterstrasse
07
Numéro de l’adresse du créancier BldgNbOrAdrLine2 · Livré, peut être vide
123
08
Numéro postal d’acheminement du créancier PstCd · Obligatoire si le groupe est rempli
8000
09
Localité du créancier TwnNm · Obligatoire si le groupe est rempli
Seldwyla
10
Pays du créancier Ctry · Obligatoire
CH
Créancier final — En faveur de
11
Type d’adresse du créancier final AdrTp · Ne pas renseigner
12
Nom du créancier final Name · Ne pas renseigner
13
Rue du créancier final StrtNmOrAdrLine1 · Ne pas renseigner
14
Numéro de l’adresse du créancier final BldgNbOrAdrLine2 · Ne pas renseigner
15
NPA du créancier final PstCd · Ne pas renseigner
16
Localité du créancier final TwnNm · Ne pas renseigner
17
Pays du créancier final Ctry · Ne pas renseigner
Montant du paiement
18
Montant du paiement Amt · Livré, peut être vide
1949.75
19
Monnaie Ccy · Obligatoire
CHF
Débiteur final — Payable par
20
Type d’adresse du débiteur final AdrTp · Obligatoire si le groupe est rempli
S
21
Nom du débiteur final Name · Obligatoire si le groupe est rempli
Simon Muster
22
Rue ou case postale du débiteur final StrtNmOrAdrLine1 · Livré, peut être vide
Musterstrasse
23
Numéro de l’adresse du débiteur final BldgNbOrAdrLine2 · Livré, peut être vide
1
24
Numéro postal d’acheminement du débiteur final PstCd · Obligatoire si le groupe est rempli
8000
25
Localité du débiteur final TwnNm · Obligatoire si le groupe est rempli
Seldwyla
26
Pays du débiteur final Ctry · Obligatoire si le groupe est rempli
CH
Référence de paiement
27
Type de référence Tp · Obligatoire
QRR
28
Référence Ref · Obligatoire si le groupe est rempli
210000000003139471430009017
Informations supplémentaires
29
Communication non structurée Ustrd · Livré, peut être vide
Ordre du 15.10.2020
30
Fin de la charge utile Trailer · Obligatoire
EPD
31
Informations de facture StrdBkgInf · Facultatif, peut manquer
//S1/10/1234/11/201021/30/102673386/32/7.7/40/0:30
Procédures alternatives
32
Procédure alternative 1 AltPmt · Facultatif, peut manquer
eBill/B/simon.muster@example.com
33
Procédure alternative 2 AltPmt · Facultatif, peut manquer
Ce que ce contrôle ne dit pas
1 sur 5
Comment une charge utile Swiss QR Code est-elle structurée ?
En huit groupes de données et une trentaine d’éléments, dans un ordre fixe, séparés par des retours chariot. Ce n’est pas du JSON ni du XML : c’est une suite de lignes, et la position d’une ligne EST son sens. C’est ce qui rend le format si facile à casser — une ligne oubliée décale tout ce qui suit, et le logiciel de la banque lit alors la localité là où il attend une monnaie.
| Groupe de données | Lignes | Statut | Ce qu’il porte |
|---|---|---|---|
| En-tête | 00 à 02 | Obligatoire | Le type de code, la version de la norme et le jeu de caractères. |
| Créancier — Compte / Payable à | 03 à 10 | Obligatoire | Le compte à créditer et l’adresse structurée de son titulaire. |
| Créancier final — En faveur de | 11 à 17 | Ne pas renseigner | Réservé à un usage futur — sept lignes qui se livrent vides. |
| Montant du paiement | 18 à 19 | Obligatoire | Le montant, qui peut rester libre, et la monnaie. |
| Débiteur final — Payable par | 20 à 26 | Obligatoire si le groupe est rempli | Qui paie. Le groupe entier est facultatif, mais pas à moitié rempli. |
| Référence de paiement | 27 à 28 | Obligatoire | Le type de référence et la référence elle-même, clé de contrôle comprise. |
| Informations supplémentaires | 29 à 31 | Obligatoire | La communication en clair, la fin de charge utile, les informations de facture. |
| Procédures alternatives | 32 à 33 | Facultatif, peut manquer | Jusqu’à deux procédures, eBill par exemple. |
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 4.2.2. Document relevé le 30.07.2026.
Les éléments sont séparés par un retour chariot — CR + LF, ou LF seul, mais le même dans tout le document. Tous les éléments doivent exister : un élément sans contenu se réduit à son retour chariot.
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 4.1.4. Document relevé le 30.07.2026.
2 sur 5
Quelles fautes empêchent une QR-facture d’être traitée ?
Six, presque toujours les mêmes. La liste ci-dessous n’est pas écrite à la main : chaque entrée est le verdict que le validateur de cette page rend sur une charge utile officielle de SIX dans laquelle une seule ligne a été abîmée. Ce que vous lisez est donc exactement ce que l’outil vous dira.
- Élément 27, Tp — Référence QR sur un IBAN ordinaire. La référence QR suppose un QR-IBAN — un compte dont l’identifiant d’institution est compris entre 30000 et 31999. Sur ce compte, la référence attendue est une Creditor Reference (SCOR), ou aucune (NON).
- Élément 28, Ref — Référence QR : la clé de contrôle vaut 8 alors que le calcul en modulo 10 récursif sur les 26 premiers chiffres donne 7. Un chiffre a été retapé.
- Élément 04, AdrTp — Type d’adresse du créancier : type « K » (adresse combinée). Seule l’adresse structurée « S » est admise depuis le 22.11.2025 : rue, numéro, NPA, localité et pays dans des champs séparés.
- Élément 08, PstCd — Numéro postal d’acheminement du créancier : « CH-8000 » porte le code pays. Le NPA s’écrit seul — le pays a son propre élément.
- Élément 18, Amt — Montant : la virgule n’est pas admise comme séparateur décimal. Seul le point l’est, avec exactement deux décimales.
- Élément 12, Name — Nom du créancier final : « Max Muster & Söhne » alors que le groupe « En faveur de » se livre vide. Il est réservé à un usage futur.
Verdicts produits au build par le validateur de cette page, sur les charges utiles de l’annexe A des Implementation Guidelines 2.3.
3 sur 5
Comment se calcule la clé de contrôle d’une référence QR ?
Le calcul se fait de gauche à droite, en partant d’un report nul. À chaque chiffre, le report courant et le chiffre lu désignent une case de la matrice de SIX, dont la valeur devient le report suivant. La clé est le complément à 10 du dernier report.
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 2.12.1. Document relevé le 30.07.2026.
4 sur 5
L’exemple de Creditor Reference de l’annexe A est-il juste ?
Non, et cela se vérifie en une ligne. La Creditor Reference publiée à l’annexe A des Implementation Guidelines, dans le tableau 20, ne passe pas le contrôle mod-97-10 de l’ISO 11649 : le reste vaut 49 au lieu de 1, et les chiffres de contrôle corrects seraient « RF24 » et non « RF72 ».
PUBLIÉ — annexe A, tableau 20 RF720191230100405JSH0438 reste mod-97-10 ..... 49 (attendu : 1) clé lue ............. 72 clé calculée ........ 24 TÉMOIN — même document, tableaux 21 et 22 RF18539007547034 reste mod-97-10 ..... 1 conforme
Cela compte si vous écrivez du code : une implémentation correcte rejettera cet exemple, et vous chercherez votre erreur là où elle n’est pas. Le même document contient un exemple valide, « RF18539007547034 » (tableaux 21 et 22) : c’est celui à employer comme vecteur d’essai.
Constat établi le 30.07.2026 par quatre implémentations arithmétiques indépendantes, avec l’exemple valide du même document comme témoin, et la chaîne relue dans le PDF officiel, éditions française et anglaise. La version 2.4 des Implementation Guidelines, publiée le 24.02.2026, porte la même chaîne.
Si SIX publie un erratum ou corrige l’exemple, cette page est mise à jour et le signalement retiré. Notre suite de tests fige les deux références : elle nous préviendra avant nos lecteurs.
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 2.12.2. Document relevé le 30.07.2026. Exemple relevé à l’annexe A, tableau 20, le 30.07.2026.
5 sur 5
Que fait ce validateur, et que ne fait-il pas ?
- 01Il décode la charge utile et affiche les 34 éléments avec leur statut et leur règle.
- 02Il contrôle les valeurs fixes, les longueurs, le jeu de caractères, la clé de l’IBAN, celle de la référence, et la combinaison du compte avec le type de référence.
- 03Il nomme chaque faute, dit quoi corriger, et cite le chapitre des Implementation Guidelines qui la fonde.
- Il ne lit pas d’image : collez le texte que rend votre lecteur de code QR, pas une capture d’écran.
- Il ne juge pas la mise en page de la section paiement — les millimètres, les polices et la croix suisse relèvent du chapitre 3 des Implementation Guidelines, pas de la charge utile.
- Il ne parle pas au nom de votre banque. Un essai réel avec votre application bancaire reste la seule vérification qui vaille avant d’envoyer une première facture.
La section paiement est conforme à la spécification SIX — Swiss QR Code version 0200, Implementation Guidelines QR-facture 2.3, la version en vigueur depuis le 21.11.2025. Les adresses sont structurées (type S), la référence est contrôlée par son algorithme officiel, et chaque build vérifie tout cela en décodant réellement le QR produit. Ce que nous ne pouvons pas encore affirmer : que vos factures ont été scannées par chaque banque suisse. Nous n’avons pas fait cette campagne de tests. Contrôlez votre première facture avec l’application de votre banque avant de l’envoyer.
Récapitulatif
Les douze contrôles que cette page applique
| Contrôle | Ce qui est vérifié | Renvoi |
|---|---|---|
| Taille | 997 caractères au maximum, séparateurs d’éléments compris. | IG 2.3, § 6.2 |
| Structure | 31 à 34 éléments, tous présents, séparés par le même retour chariot. | IG 2.3, § 4.1.4 |
| Jeu de caractères | Latin de base, supplément latin-1, latin étendu A, Ș ș Ț ț et le signe €. | IG 2.3, § 4.1.1 |
| Valeurs fixes | SPC en tête, 0200 comme version, 1 comme codage, EPD en fin de charge utile. | IG 2.3, § 4.2.2 |
| Compte | 21 caractères sans espace, pays CH ou LI, clé de contrôle en modulo 97. | IG 2.3, § 2.9 |
| Adresses | Type structuré, nom, NPA sans code pays, localité et pays sur deux lettres. | IG 2.3, § 4.3.1 |
| Créancier final | Les sept lignes du groupe réservé sont livrées vides. | IG 2.3, § 4.2.2 |
| Montant | Point décimal, deux décimales, aucun zéro de tête, bornes 0.01 à 999 999 999.99. | IG 2.3, § 4.2.2 |
| Monnaie | CHF ou EUR, et rien d’autre. | IG 2.3, § 4.2.2 |
| Référence | 27 chiffres et clé en modulo 10 récursif, ou RF et clé en modulo 97-10. | IG 2.3, § 2.12.1 |
| Combinaison | QR-IBAN avec QRR seulement ; IBAN ordinaire avec SCOR ou NON. | IG 2.3, § 7.1 |
| Longueurs | Chaque élément dans sa borne, et 140 caractères pour la communication et les informations de facture ENSEMBLE. | IG 2.3, § 4.3.3 |
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 4.2.2, 4.1.1, 4.1.4, 4.3.1, 4.3.3, 6.2, 7.1. Document relevé le 30.07.2026.
Questions fréquentes
Ma charge utile part-elle sur un serveur ?
Non. Tout le décodage et tous les contrôles se font dans cette page, en JavaScript, sur votre appareil. Il n’y a pas de serveur à qui l’envoyer : le site est un export statique, sans base de données ni compte. Rien de ce que vous collez n’entre non plus dans l’adresse de la page, dans son historique ni dans le stockage du navigateur — c’est vérifié par un test à chaque build, pas seulement promis.
https://github.com/projetlockin/manifestation, tests/quality.spec.ts et tests/fuite.spec.ts.
Où trouver la charge utile de ma QR-facture ?
Scannez le Swiss QR Code avec n’importe quel lecteur de code QR : il rendra un texte brut qui commence par SPC. C’est lui qu’on colle ici. Une application bancaire, elle, interprète le code au lieu d’en montrer le texte — elle ne convient donc pas pour ça.
Quelle version de la norme ce validateur applique-t-il ?
Les Implementation Guidelines 2.3, en vigueur depuis le 21.11.2025. La version 2.4 existe, mais elle n’entre en vigueur que le 14.11.2026 : contrôler aujourd’hui une facture contre elle produirait des verdicts faux. La version employée est écrite dans les repères en tête de page.
SIX, « Implementation Guidelines suisses pour QR-facture », version 2.3, valable à partir du 21 novembre 2025
Le type d’adresse combinée est-il encore accepté ?
Depuis le 22 novembre 2025, seule l’adresse structurée (type « S ») est admise dans le Swiss QR Code : rue, numéro, NPA, localité et pays dans des champs séparés. L’adresse combinée (type « K ») n’est plus émise. (SIX, factsheet « QR-facture : période transitoire 2025-2026 », 19.08.2025.)
Le montant peut-il rester vide ?
Oui, et c’est licite : c’est le cas du don, ou de la facture dont le payeur inscrit lui-même la somme. L’élément « montant » doit exister dans la charge utile — son retour chariot suffit — mais il peut ne rien contenir. Quand il contient une valeur, la forme est stricte : un point décimal, deux décimales, aucun zéro de tête.
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 4.2.2. Document relevé le 30.07.2026.
Pourquoi ma référence de 27 chiffres est-elle refusée sur mon IBAN ?
Parce que la référence QR suppose un QR-IBAN, c’est-à-dire un compte dont l’identifiant d’institution est compris entre 30000 et 31999. Les deux valeurs sont correctes prises séparément ; c’est leur combinaison qui ne l’est pas. Sur un IBAN ordinaire, la référence attendue est une Creditor Reference — ou aucune.
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 7.1. Document relevé le 30.07.2026.
L’exemple de Creditor Reference des Implementation Guidelines est-il valide ?
Celui du tableau 20 de l’annexe A, non : RF720191230100405JSH0438 donne un reste de 49 au contrôle mod-97-10, là où l’ISO 11649 attend 1 — les chiffres de contrôle corrects seraient « RF24 ». La règle du chapitre 2.12.2, elle, est juste : c’est l’exemple qui ne la respecte pas. Le même document en contient un valide, RF18539007547034 (tableaux 21 et 22) : c’est celui à employer comme vecteur d’essai. Le détail et la méthode de vérification sont plus haut dans la page.
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 2.12.2. Document relevé le 30.07.2026. Exemple relevé à l’annexe A, tableau 20, le 30.07.2026.
Une charge utile conforme garantit-elle que la facture sera payée ?
Non, et c’est la limite honnête de cet outil. Il contrôle la charge utile, donc ce que le scanner lit. Il ne dit rien de la mise en page de votre section paiement, de la qualité d’impression du code, ni du traitement que votre établissement financier appliquera. Contrôlez votre première facture avec l’application de votre banque avant de l’envoyer.
Peut-on valider une QR-facture en euros ?
Oui. La norme admet deux monnaies, CHF et EUR, et ce validateur accepte les deux. À noter : les Implementation Guidelines signalent qu’une communication en clair accompagnant une référence structurée n’est pas garantie d’être transmise au créancier dans tous les cas — c’est une réserve du chapitre 4.3.3, pas un refus de la charge utile.
SIX, Implementation Guidelines suisses pour QR-facture, version 2.3 (valable dès le 21.11.2025), § 4.3.3. Document relevé le 30.07.2026.