Aller au contenu
FactureQRCréer ma facture

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.

Le texte brut que rend un lecteur de code QR. Il commence par SPC et compte une trentaine de lignes.

Charger un exemple de SIX

Trois charges utiles de l’annexe A des Implementation Guidelines, reproduites champ par champ.

Verdict

Charge utile conforme.

0 erreurs · 0 réserves · 295 caractères · 33 éléments lus

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

Les 34 éléments de la structure, dans l’ordre. Un élément vide est licite quand son statut l’autorise ; un élément absent apparaît en dernier.

En-tête

  1. 00

    Type de code QRType · Obligatoire

    SPC

    Valeur fixe « SPC » (Swiss Payments Code). Trois positions alphanumériques.

  2. 01

    Version de la spécification Version · Obligatoire

    0200

    Valeur fixe « 0200 ». SIX a décidé, avec la place financière, de n’accepter que « 0200 » dans la version principale 02. Quatre positions numériques.

  3. 02

    Code du jeu de caractères Coding · Obligatoire

    1

    Valeur fixe « 1 », qui identifie UTF-8 limité au jeu de caractères latin.

Créancier — Compte / Payable à

  1. 03

    IBAN ou QR-IBAN du créancier IBAN · Obligatoire

    CH4431999123000889012

    Longueur fixe de 21 caractères alphanumériques, aucun espace admis. Seuls les IBAN de code pays CH ou LI sont acceptés.

  2. 04

    Type d’adresse du créancier AdrTp · Obligatoire

    S

    Un seul code est défini : « S » — adresse structurée.

  3. 05

    Nom du créancier Name · Obligatoire

    Max Muster & Söhne

    Nom ou entreprise du créancier selon la désignation de compte — il correspond toujours au titulaire du compte. 70 caractères au maximum.

  4. 06

    Rue ou case postale du créancier StrtNmOrAdrLine1 · Livré, peut être vide

    Musterstrasse

    70 caractères au maximum.

  5. 07

    Numéro de l’adresse du créancier BldgNbOrAdrLine2 · Livré, peut être vide

    123

    16 caractères au maximum. Jusqu’à nouvel ordre, le numéro peut aussi être écrit dans l’élément « Rue » sans que l’ordre soit refusé.

  6. 08

    Numéro postal d’acheminement du créancier PstCd · Obligatoire si le groupe est rempli

    8000

    16 caractères au maximum. Le code postal est toujours à indiquer sans code de pays de tête : « 1950 », jamais « CH-1950 ».

  7. 09

    Localité du créancier TwnNm · Obligatoire si le groupe est rempli

    Seldwyla

    35 caractères au maximum.

  8. 10

    Pays du créancier Ctry · Obligatoire

    CH

    Code de pays à deux positions selon ISO 3166-1.

Créancier final — En faveur de

Le groupe de données entier ne doit pas être renseigné : il est réservé à un usage futur, et ses sept lignes se livrent vides.

  1. 11

    Type d’adresse du créancier final AdrTp · Ne pas renseigner

    vide

  2. 12

    Nom du créancier final Name · Ne pas renseigner

    vide

  3. 13

    Rue du créancier final StrtNmOrAdrLine1 · Ne pas renseigner

    vide

  4. 14

    Numéro de l’adresse du créancier final BldgNbOrAdrLine2 · Ne pas renseigner

    vide

  5. 15

    NPA du créancier final PstCd · Ne pas renseigner

    vide

  6. 16

    Localité du créancier final TwnNm · Ne pas renseigner

    vide

  7. 17

    Pays du créancier final Ctry · Ne pas renseigner

    vide

Montant du paiement

  1. 18

    Montant du paiement Amt · Livré, peut être vide

    1949.75

    Décimal, 12 positions au maximum, séparateur compris. Seul le point est admis comme séparateur décimal, deux décimales sont exigées, et le montant s’écrit sans zéro de tête. Il est compris entre 0.01 et 999 999 999.99. Un montant vide est licite : c’est le débiteur qui inscrit la somme.

  2. 19

    Monnaie Ccy · Obligatoire

    CHF

    Code à trois positions selon ISO 4217. Seuls CHF et EUR sont admis.

Débiteur final — Payable par

  1. 20

    Type d’adresse du débiteur final AdrTp · Obligatoire si le groupe est rempli

    S

    Groupe de données optionnel : on peut n’en livrer aucune valeur. Mais dès qu’une ligne du groupe est remplie, un seul code est défini — « S ».

  2. 21

    Nom du débiteur final Name · Obligatoire si le groupe est rempli

    Simon Muster

    70 caractères au maximum.

  3. 22

    Rue ou case postale du débiteur final StrtNmOrAdrLine1 · Livré, peut être vide

    Musterstrasse

    70 caractères au maximum.

  4. 23

    Numéro de l’adresse du débiteur final BldgNbOrAdrLine2 · Livré, peut être vide

    1

    16 caractères au maximum.

  5. 24

    Numéro postal d’acheminement du débiteur final PstCd · Obligatoire si le groupe est rempli

    8000

    16 caractères au maximum, sans code de pays de tête. Les IG insistent sur ce groupe : l’adresse du débiteur doit être complète et lisible, faute de quoi le versement en espèces au guichet peut être refusé.

  6. 25

    Localité du débiteur final TwnNm · Obligatoire si le groupe est rempli

    Seldwyla

    35 caractères au maximum.

  7. 26

    Pays du débiteur final Ctry · Obligatoire si le groupe est rempli

    CH

    Code de pays à deux positions selon ISO 3166-1.

Référence de paiement

  1. 27

    Type de référence Tp · Obligatoire

    QRR

    Trois codes sont admis : QRR (référence QR), SCOR (Creditor Reference ISO 11649) et NON (sans référence). Avec un QR-IBAN, le type doit être QRR ; avec un IBAN ordinaire, SCOR ou NON.

  2. 28

    Référence Ref · Obligatoire si le groupe est rempli

    210000000003139471430009017

    Référence QR : toujours 27 caractères numériques, la 27ᵉ position étant un chiffre de contrôle calculé en modulo 10 récursif. Creditor Reference : de 5 à 25 caractères alphanumériques commençant par RF, les 3ᵉ et 4ᵉ positions portant un chiffre de contrôle en modulo 97-10. L’élément reste vide pour le type NON.

Informations supplémentaires

  1. 29

    Communication non structurée Ustrd · Livré, peut être vide

    Ordre du 15.10.2020

    140 caractères au maximum. C’est ce qui s’imprime sous l’en-tête « Informations supplémentaires » de la section paiement.

  2. 30

    Fin de la charge utile Trailer · Obligatoire

    EPD

    Valeur fixe « EPD » (End Payment Data). Trois positions alphanumériques.

  3. 31

    Informations de facture StrdBkgInf · Facultatif, peut manquer

    //S1/10/1234/11/201021/30/102673386/32/7.7/40/0:30

    140 caractères au maximum, et 140 pour la communication non structurée et cet élément ENSEMBLE. Le codage commence par « // » suivi de la désignation à deux positions de la structure employée. Ces données ne sont pas transmises avec le paiement et ne doivent contenir aucune donnée personnelle.

Procédures alternatives

100 caractères au maximum. Deux procédures alternatives au plus.

  1. 32

    Procédure alternative 1 AltPmt · Facultatif, peut manquer

    eBill/B/simon.muster@example.com

  2. 33

    Procédure alternative 2 AltPmt · Facultatif, peut manquer

    absent

Ce que ce contrôle ne dit pas

Ce contrôle porte sur la charge utile, et sur elle seule : la structure des 34 éléments, les longueurs, les clés de contrôle et les combinaisons que les Implementation Guidelines imposent. Il ne dit rien de la mise en page de votre section paiement, ni du fait que votre banque traitera l’ordre : ça, seul un essai réel avec votre application bancaire le montre.

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.

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.
Groupe de donnéesLignesStatutCe qu’il porte
En-tête00 à 02ObligatoireLe type de code, la version de la norme et le jeu de caractères.
Créancier — Compte / Payable à03 à 10ObligatoireLe compte à créditer et l’adresse structurée de son titulaire.
Créancier final — En faveur de11 à 17Ne pas renseignerRéservé à un usage futur — sept lignes qui se livrent vides.
Montant du paiement18 à 19ObligatoireLe montant, qui peut rester libre, et la monnaie.
Débiteur final — Payable par20 à 26Obligatoire si le groupe est rempliQui paie. Le groupe entier est facultatif, mais pas à moitié rempli.
Référence de paiement27 à 28ObligatoireLe type de référence et la référence elle-même, clé de contrôle comprise.
Informations supplémentaires29 à 31ObligatoireLa communication en clair, la fin de charge utile, les informations de facture.
Procédures alternatives32 à 33Facultatif, peut manquerJusqu’à deux procédures, eBill par exemple.

Ce tableau défile horizontalement : faites-le glisser pour voir toutes les colonnes.

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
Collez l’une ou l’autre dans le contrôle plus haut : le validateur rend le même verdict, et il indique la clé attendue.

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 ?

  1. 01Il décode la charge utile et affiche les 34 éléments avec leur statut et leur règle.
  2. 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.
  3. 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

Les douze contrôles que cette page applique
ContrôleCe qui est vérifiéRenvoi
Taille997 caractères au maximum, séparateurs d’éléments compris.IG 2.3, § 6.2
Structure31 à 34 éléments, tous présents, séparés par le même retour chariot.IG 2.3, § 4.1.4
Jeu de caractèresLatin de base, supplément latin-1, latin étendu A, Ș ș Ț ț et le signe €.IG 2.3, § 4.1.1
Valeurs fixesSPC en tête, 0200 comme version, 1 comme codage, EPD en fin de charge utile.IG 2.3, § 4.2.2
Compte21 caractères sans espace, pays CH ou LI, clé de contrôle en modulo 97.IG 2.3, § 2.9
AdressesType structuré, nom, NPA sans code pays, localité et pays sur deux lettres.IG 2.3, § 4.3.1
Créancier finalLes sept lignes du groupe réservé sont livrées vides.IG 2.3, § 4.2.2
MontantPoint décimal, deux décimales, aucun zéro de tête, bornes 0.01 à 999 999 999.99.IG 2.3, § 4.2.2
MonnaieCHF ou EUR, et rien d’autre.IG 2.3, § 4.2.2
Référence27 chiffres et clé en modulo 10 récursif, ou RF et clé en modulo 97-10.IG 2.3, § 2.12.1
CombinaisonQR-IBAN avec QRR seulement ; IBAN ordinaire avec SCOR ou NON.IG 2.3, § 7.1
LongueursChaque élément dans sa borne, et 140 caractères pour la communication et les informations de facture ENSEMBLE.IG 2.3, § 4.3.3

Ce tableau défile horizontalement : faites-le glisser pour voir toutes les colonnes.

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

9 questions

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.