Swiss QR-bill
Le Swiss QR-bill a remplacé les bulletins de versement suisses orange et rouge en juillet 2020. C'est un payload ISO 20022 Customer Credit Transfer Initiation (pain.001) rendu en QR avec une superposition obligatoire de croix suisse au centre. Toutes les banques suisses l'acceptent ; aucune n'accepte autre chose.
Base ISO : ISO 20022
pain.001 Customer Credit Transfer Initiation. Obligatoire depuis : 1er juillet 2020. Les anciens bulletins orange/rouge ont été supprimés le 30 septembre 2022.
Ce que c'est
Le payload est une liste de 32 champs séparés par des sauts de ligne (CRLF) organisés en sept blocs :
QRType → Toujours "SPC" Version → 0200 (v2.3) Coding → 1 (Latin-1) [Informations créancier] ← 7 champs (IBAN + adresse) [Créancier final] ← 7 champs (optionnel, généralement vide) [Informations montant paiement] ← 3 champs (montant, devise, date d'échéance) [Débiteur final] ← 7 champs (optionnel) [Référence de paiement] ← 2 champs (type de référence + référence) [Informations supplémentaires] ← 2 champs (message non structuré + bill info) [Procédures alternatives] ← 2 champs (optionnel, rarement utilisé)
Le QR résultant se trouve dans un bloc "Payment part" dans le tiers inférieur de la facture. Toutes les apps bancaires suisses (UBS, ZKB, PostFinance, Raiffeisen, Neon, Yuh, Revolut CH) le lisent nativement.
QR-IBAN vs IBAN classique
Un "QR-IBAN" est un IBAN suisse spécial où la plage du code bancaire à 5 chiffres est 30000–31999. Les QR-IBANs nécessitent une référence QR structurée (QRR, 27 chiffres, contrôle mod-10). Les IBAN suisses classiques acceptent la référence créancier (SCOR, RFC 8905) ou pas de référence.
| Type d'IBAN créancier | Types de référence valides | Notes |
|---|---|---|
| QR-IBAN (code bancaire 30000–31999) | QRR (27 chiffres, mod-10) | Obligatoire. SCOR et NON sont invalides. |
| IBAN classique (CH ou LI) | SCOR ou NON | QRR est invalide, QR-IBAN uniquement. |
Vecteurs de test canoniques
| Cas | Entrées | Type de référence |
|---|---|---|
| Minimal (IBAN classique, sans montant, sans référence) | iban=CH9300762011623852957 | NON |
| IBAN classique avec montant + message non structuré | (idem)amount=100.00 | NON |
| QR-IBAN avec référence QRR | iban=CH4431999123000889012 | QRR |
| IBAN du Liechtenstein | iban=LI0508800000021904015 | NON |
Validateur IBAN suisse en direct
Le validateur ci-dessous vérifie les trois règles spécifiques à la Suisse : (1) le code pays est CH ou LI, (2) la longueur est exactement 21, (3) le checksum ISO 7064 mod-97 est correct. La saisie collée est normalisée (casse, espaces supprimés).
Pièges courants
- Mauvais type de référence pour le type d'IBAN. Un QR-IBAN avec une référence NON ou SCOR est rejeté par la banque. Un IBAN classique avec une référence QRR est également rejeté. Abundera sélectionne automatiquement le bon type ; les encodeurs manuels se trompent souvent.
- Superposition de la croix suisse manquante. La spec QR-bill exige un drapeau suisse de 7 mm × 7 mm (croix blanche sur rouge, avec un bord blanc de 1 mm) centré sur le QR. Ce n'est pas optionnel, les pipelines OCR bancaires l'utilisent comme signature QR-bill. Abundera le superpose automatiquement.
- Niveau de correction d'erreurs du module QR. La spec exige le niveau ECC M. Des niveaux ECC plus élevés ou plus bas produisent un QR qui semble correct mais que la banque rejette.
- Longueur des champs d'adresse. Nom du créancier, rue, code postal, ville, chacun limité à 70 caractères Latin-1. Les chaînes trop longues sont silencieusement tronquées par certains encodeurs, ce qui casse le rapprochement.
- Devise CHF ou EUR uniquement. Le QR-bill ne supporte que deux devises. Toute autre devise est rejetée.
- Référence mod-10 vs mod-97. Les références QRR utilisent un checksum récursif mod-10 (variante Luhn). À ne pas confondre avec le checksum mod-97 de l'IBAN. Les générateurs de références faits maison appliquent souvent le Luhn dans le mauvais sens.
- Latin-1, pas UTF-8. Le champ
Codingest "1" = Latin-1. Les caractères non Latin-1 (ä/ö/ü survivent ; cyrillique/chinois non) cassent certaines anciennes apps bancaires.
Compatibilité des scanners
| Lecteur | Support | Notes |
|---|---|---|
| UBS Mobile / PostFinance / ZKB app | Natif | Toutes les apps bancaires suisses lisent les QR-bills nativement. |
| Neon / Yuh / Revolut CH | Natif | Les neobanques gèrent le payload pain.001 complet. |
| Caméra iOS | Non | iOS traite un QR-bill comme une chaîne brute, pas d'analyse. L'utilisateur doit ouvrir une app bancaire. |
| Caméra Android / Google Lens | Non | Idem, pas d'analyse native. |
| OCR commercial (ex. services de paiement de factures) | Oui | Les outils OCR de niveau bancaire lisent les QR-bills dans les pipelines AP/AR. |
Voir aussi
- /swiss-qr-bill-generator/, le générateur avec validation IBAN intégrée.
- /standards/, retour à l'index des standards.
- SIX Implementation Guidelines, la spec de référence.