La réponse en bref
Pourquoi la référence est la donnée la plus précieuse du code
Le Swiss QR Code transporte une dizaine d’informations, mais une seule fait le lien entre le paiement reçu et la facture émise : la référence. Le payeur ne la voit qu’en passant ; la banque du créancier, elle, la restitue dans l’avis de crédit détaillé (fichier camt.054), et le logiciel comptable l’utilise pour lettrer automatiquement l’encaissement. Sans référence structurée, le lettrage repose sur le montant, le nom du payeur ou un texte libre modifiable : trois informations peu fiables.
La norme prévoit deux formats structurés, exclusifs l’un de l’autre, plus l’absence de référence :
Type (élément Tp) |
Référence | Compte requis | Longueur |
|---|---|---|---|
| QRR | Référence QR | QR-IBAN | 27 chiffres, toujours |
| SCOR | Creditor Reference ISO 11649 | IBAN ordinaire | 5 à 25 caractères alphanumériques |
| NON | Aucune | IBAN ordinaire | L’élément référence reste vide |
La référence QR : 27 chiffres et un contrôle modulo 10 récursif
La référence QR est purement numérique, longue de 27 positions exactement et ne peut pas être composée uniquement de zéros. Sa structure interne est libre : l’émetteur y range ce qui lui est utile, dans la limite de 26 chiffres, et complète par des zéros à gauche. Le 27e chiffre est le chiffre de contrôle.
Le calcul pas à pas
L’algorithme modulo 10 récursif est celui de l’ancienne référence BVR. Il parcourt les 26 chiffres de gauche à droite avec un « report » initial de 0 et une table de transposition.
| Entrée (report + chiffre) mod 10 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| Nouveau report | 0 | 9 | 4 | 6 | 8 | 2 | 7 | 1 | 3 | 5 |
Pour chaque chiffre : on additionne le report et le chiffre, on prend le reste de la division par 10, et on lit le nouveau report dans la table. À la fin, le chiffre de contrôle vaut (10 − report) mod 10.
Exemple sur une référence courte, 1234567 :
| Chiffre | Report avant | (report + chiffre) mod 10 | Report après |
|---|---|---|---|
| 1 | 0 | 1 | 9 |
| 2 | 9 | 1 | 9 |
| 3 | 9 | 2 | 4 |
| 4 | 4 | 8 | 3 |
| 5 | 3 | 8 | 3 |
| 6 | 3 | 9 | 5 |
| 7 | 5 | 2 | 4 |
Report final 4, chiffre de contrôle (10 − 4) mod 10 = 6. La référence complète serait 1234567 suivi de 6, complétée par des zéros à gauche jusqu’à 27 positions. Le validateur applique ce calcul et affiche le chiffre attendu en cas d’erreur.
Concevoir sa numérotation
Trois questions à trancher avant de paramétrer le logiciel.
- Un préfixe est-il imposé par la banque ? Certaines banques réservent les premiers chiffres à un identifiant du client (souvent six chiffres, héritage du numéro d’adhérent BVR). Il doit figurer dans chaque référence.
- Que voulez-vous retrouver dans la référence ? Le schéma courant est
préfixe bancaire+numéro de client+numéro de facture, ce qui permet de lire la référence à l’œil nu lors d’un contrôle. D’autres reprennent uniquement le numéro de facture. - Une référence par facture ou par client ? Par facture pour tout ce qui doit être lettré automatiquement. Par client pour des versements récurrents à montant libre (dons, acomptes), où seul le compte client est crédité.
Évitez de changer de schéma après la mise en production : les références déjà envoyées continueront d’arriver pendant des mois.
La Creditor Reference : RF et contrôle mod 97-10
La Creditor Reference est définie par la norme internationale ISO 11649 et s’utilise aussi dans les virements SEPA. Elle commence par les lettres RF, suivies de deux chiffres de contrôle, puis de 1 à 21 caractères alphanumériques : au total 5 à 25 caractères. Elle s’associe exclusivement à un IBAN ordinaire et, depuis la version 2.4 des Implementation Guidelines, c’est la seule référence structurée admise pour une facturation en EUR.
Le calcul pas à pas
Le contrôle suit l’algorithme ISO 7064 mod 97-10, le même que pour l’IBAN.
- Prendre la référence sans les quatre premiers caractères, et lui accoler
RF00. - Remplacer chaque lettre par sa valeur numérique : A = 10, B = 11 … Z = 35 (R = 27, F = 15).
- Calculer le reste de la division du nombre obtenu par 97.
- Les chiffres de contrôle valent
98 − reste, sur deux positions.
Pour vérifier une référence existante : déplacer les quatre premiers caractères à la fin, convertir les lettres, et s’assurer que le reste modulo 97 vaut 1. Sur RF18 5390 0754 7034, la chaîne 539007547034 + RF18 devient 539007547034271518, dont le reste par 97 est 1 : la référence est valide.
Impression sur la section paiement
La norme fixe la présentation visible de chaque référence, sous le titre « Référence » :
- référence QR : par blocs, en commençant par 2 chiffres puis 5 groupes de 5 :
21 00000 00003 13947 14300 09017; - Creditor Reference : par blocs de 4, le dernier pouvant être plus court :
RF18 5390 0754 7034. Les zéros de tête peuvent être omis dans la partie visible.
Dans le Swiss QR Code, la référence est encodée sans espaces.
Ce que la banque restitue
Lors du paiement, la référence voyage avec l’ordre (message pain.001 émis par la banque du payeur) et revient au créancier dans l’avis de crédit détaillé camt.054, élément RmtInf/Strd/CdtrRefInf/Ref. Le logiciel de facturation la lit, retrouve la facture ouverte et la solde. En cas de paiement partiel ou multiple, la référence permet de regrouper les encaissements sur la même facture.
Le type NON ne transporte rien de structuré : la communication non structurée (140 caractères) revient telle que le payeur l’a laissée, souvent modifiée ou vide. C’est pourquoi cette variante se limite aux faibles volumes.
Erreurs fréquentes
- Référence tronquée à 26 chiffres : le chiffre de contrôle manque, le code est refusé.
- Zéros de tête supprimés dans le code : la référence doit être encodée sur 27 positions, seuls l’affichage peut les omettre.
- Référence QR avec un IBAN ordinaire, ou Creditor Reference avec un QR-IBAN : couples interdits.
- Préfixe bancaire oublié : le paiement arrive, mais la banque peut le rejeter ou le traiter en exception.
- Espaces encodés dans le code : la référence lisible est groupée, la référence encodée ne l’est pas.
- Référence réutilisée d’une facture à l’autre : lettrage impossible à automatiser.
Avant toute mise en production, passez un jeu de factures de test dans le portail de validation de SIX et contrôlez quelques références dans notre validateur.
Sources et références
- SIX Interbank Clearing, Implementation Guidelines suisses pour la QR-facture, version 2.3, chapitre 2.12 « Références clients », élément RmtInf et Annexe B « Modulo 10 récursif ». ↗
- ISO 11649:2009, Financial services — Core banking — Structured creditor reference to remittance information.
- ISO/IEC 7064:2003, Information technology — Security techniques — Check character systems (MOD 97-10).
- SIX, Portail de validation QR-facture. ↗