La validation d’un IBAN est une étape essentielle dans tout système de traitement des paiements : elle permet de détecter les valeurs mal formées ou mal saisies avant leur arrivée dans votre flux de paiement. Elle consiste à vérifier le format, le code pays, la longueur correcte et, surtout, les chiffres de contrôle à l’aide de l’algorithme MOD-97 : la norme ISO 13616-1 définit la structure de l’IBAN, tandis que la norme ISO/IEC 7064 définit le système de chiffres de contrôle MOD97-10. Ces vérifications ne prouvent pas que le compte bancaire sous-jacent existe, est attribué ou peut recevoir un paiement.
Étape 1 : Vérifier le format
La première étape de la validation d’un IBAN consiste à vérifier son format. Tout IBAN valide doit commencer par un code pays de deux lettres, suivi de deux chiffres de contrôle (0-9), puis du Basic Bank Account Number (BBAN). Supprimez tous les espaces et convertissez la chaîne complète en majuscules avant la validation : les IBAN ne sont pas sensibles à la casse, mais doivent être normalisés pour le traitement. Rejetez toute valeur qui contient des caractères spéciaux, commence par des chiffres ou ne respecte pas le modèle code pays suivi de chiffres.
Étape 2 : Vérifier le code pays et la longueur
Vérifiez ensuite que votre système reconnaît et prend en charge le code pays. Random IBAN prend actuellement en charge 42 pays, dont DE (Allemagne), FR (France), GB (Royaume-Uni), ES (Espagne) et IT (Italie). Chaque pays possède une longueur d’IBAN spécifique :
| Pays | Code | Longueur |
|---|---|---|
| Allemagne | DE | 22 |
| France | FR | 27 |
| Royaume-Uni | GB | 22 |
| Espagne | ES | 24 |
| Italie | IT | 27 |
Si la longueur saisie ne correspond pas à la spécification du code pays, l’IBAN est invalide.
Étape 3 : Valider les chiffres de contrôle avec MOD-97
L’étape la plus importante consiste à vérifier les chiffres de contrôle avec l’algorithme MOD-97. Dans un modèle simple d’erreurs aléatoires uniformes, une valeur incorrecte est acceptée avec une probabilité de 1/97, soit un taux de détection estimé à environ 98,97 % ; les véritables erreurs de saisie peuvent suivre des schémas différents. Le contrôle confirme la cohérence interne, pas l’existence d’un compte :
- Déplacez les quatre premiers caractères (code pays et chiffres de contrôle) à la fin — par exemple,
DE89370400440532013000devient370400440532013000DE89. - Remplacez chaque lettre par sa valeur numérique (A=10, B=11, ..., Z=35) — D=13, E=14 →
370400440532013000131489. - Calculez le modulo 97 : divisez le nombre obtenu par 97.
- Vérifiez le reste : s’il est égal à 1, l’IBAN est valide.
Exemple de code : JavaScript
Cet extrait vérifie uniquement la somme de contrôle MOD-97. Validez séparément le pays, la longueur, les caractères autorisés et les règles nationales applicables ; une somme correcte ne vérifie pas que le compte existe.
function validateIBAN(iban) {
const cleaned = iban.replace(/\s/g, '').toUpperCase();
const rearranged = cleaned.slice(4) + cleaned.slice(0, 4);
const numeric = rearranged.replace(/[A-Z]/g, (ch) =>
(ch.charCodeAt(0) - 55).toString()
);
const remainder = BigInt(numeric) % 97n;
return remainder === 1n;
}
Bonnes pratiques d’implémentation
Dans les systèmes de production, mettez en place la validation à plusieurs étapes de votre flux de données :
- Côté client — validez dans le navigateur pour fournir un retour immédiat.
- Côté serveur — répétez la validation sur le backend pour vous protéger contre les manipulations.
- Stockage — n’enregistrez dans votre base de données que des IBAN validés.
- Supervision — enregistrez des métriques agrégées sur les échecs de validation et évitez de journaliser des IBAN complets.
Vous pouvez tester votre logique de validation avec notre générateur d’IBAN pour créer des cas de test synthétiques à somme de contrôle valide, puis vérifier votre implémentation avec notre validateur d’IBAN en ligne. Aucun de ces outils ne vérifie qu’un compte existe ou qu’il est attribué.
Erreurs courantes à éviter
- Oublier de normaliser l’entrée (supprimer les espaces et convertir en majuscules).
- Utiliser une mauvaise conversion des caractères en chiffres (A=10, et non A=1).
- Essayer de valider avec des entiers ordinaires plutôt qu’avec des entiers de grande taille (risque de dépassement).
- Ne pas mettre à jour les spécifications de longueur par pays lorsque la réglementation évolue.
Validez toujours selon les spécifications ISO 13616-1 les plus récentes et le système de chiffres de contrôle ISO/IEC 7064 MOD97-10.