Validateur et analyseur IBAN

Validez un numéro de compte bancaire international hors ligne : code pays, longueur du registre et somme de contrôle ISO 7064 MOD 97-10, avec une analyse détaillée et un format d'impression.

Ce numéro de compte est-il structurellement valide ? Collez un IBAN avec ou sans espaces. La vérification s'effectue entièrement dans votre navigateur : code pays comparé au registre SWIFT, longueur totale, puis la somme de contrôle ISO 7064 MOD 97-10.

Pays
Chiffres de contrôle
BBAN
Longueur

Comment fonctionne réellement la validation d'IBAN

Un numéro de compte national avec un habillage

Un IBAN n'est pas un nouveau type de numéro de compte. C'est le numéro de compte national existant, appelé BBAN, auquel on ajoute quatre caractères au début : un code pays ISO 3166 à deux lettres et deux chiffres de contrôle. Tout ce qui suit ces quatre caractères correspond à ce que le système bancaire national utilisait déjà, ce qui explique une telle variation de longueur. Un IBAN norvégien fait 15 caractères et un IBAN maltais en fait 31, et les deux sont parfaitement corrects.

Cette variabilité constitue la première étape de validation réelle, et celle que l'on omet le plus souvent. Chaque pays enregistre une longueur totale exacte auprès de SWIFT, et cette longueur est fixe plutôt qu'un maximum. Un IBAN allemand fait toujours 22 caractères. Si vous recevez une chaîne de 21 caractères commençant par DE, elle est erronée quelle que soit la somme de contrôle, car une transposition qui raccourcit la chaîne ne peut être détectée par une somme de contrôle qui ne voit jamais le caractère manquant. Vérifier d'abord la longueur du pays produit également un message d'erreur bien plus utile qu'un échec générique de la somme de contrôle.

La somme de contrôle MOD 97-10

La somme de contrôle provient de l'ISO 7064 et est d'une simplicité élégante. Déplacez les quatre premiers caractères à la fin, remplacez chaque lettre par un nombre où A vaut 10 jusqu'à Z qui vaut 35, puis lisez le tout comme un entier gigantesque. Si cet entier laisse un reste exactement égal à 1 lorsqu'il est divisé par 97, l'IBAN est valide.

L'inconvénient est que le nombre obtenu est bien plus grand que le type entier natif de n'importe quel langage, souvent quatre-vingts chiffres ou plus. Plutôt que de faire appel à une bibliothèque de grands nombres, les implémentations le réduisent par morceaux : parcourez la chaîne de gauche à droite, et après chaque chiffre ne conservez que la valeur courante modulo 97. Comme l'arithmétique modulaire se distribue sur la construction chiffre par chiffre, le reste final est identique à celui que donnerait le nombre complet, et cela ne coûte qu'un seul parcours sans allocation. C'est exactement ce que fait cet outil.

MOD 97-10 a été choisi car il est exceptionnellement robuste pour un contrôle à deux caractères. Il détecte toute substitution d'un seul caractère, toute transposition de deux caractères adjacents, et l'immense majorité des permutations plus longues. Les modes d'erreur qu'il ne peut voir sont suffisamment rares pour que le risque résiduel soit dominé par le simple fait que le compte n'existe pas.

Ce qu'un IBAN valide ne vous dit pas

La validité structurelle n'est pas l'existence. Un IBAN dont la somme de contrôle est correcte peut désigner un compte clôturé, un compte jamais ouvert, ou une banque qui a depuis fusionné et disparu. Le seul moyen de savoir que l'argent arrivera est de tenter le virement ou d'utiliser un service de vérification fourni par la banque. Considérez la validation comme un moyen de détecter les fautes de frappe au moment de la saisie, et non comme une confirmation que le bénéficiaire est réel.

Le formatage mérite également attention. Le registre définit la forme électronique comme une chaîne continue sans espace, et c'est ce que vous devez envoyer dans un fichier de paiement ou stocker dans une base de données. La forme groupée par quatre n'existe que pour l'impression sur papier, où elle aide les humains à copier correctement les longues chaînes. Normalisez à l'entrée, stockez à plat, et n'ajoutez les espaces que pour l'affichage.

Note open-source : implémenté en JavaScript vanilla sans bibliothèques tierces.

FAQ

Une somme de contrôle valide signifie-t-elle que le compte existe ?
Non. La somme de contrôle prouve uniquement que la chaîne est cohérente en interne, donc rien n'a été mal saisi ou transposé. Le compte derrière elle peut être clôturé ou n'avoir jamais existé. Seule la banque destinataire peut confirmer qu'un IBAN est actif.
Pourquoi les IBAN ont-ils des longueurs différentes ?
Car la partie située après les quatre premiers caractères est le numéro de compte national existant du pays, et ceux-ci ont été normalisés au niveau national bien avant l'apparition de l'IBAN. Chaque pays a enregistré sa propre longueur fixe auprès de SWIFT, allant de 15 caractères en Norvège à 32 à Sainte-Lucie.
Dois-je stocker un IBAN avec des espaces ?
Non. Stockez la forme électronique, qui est une chaîne continue sans espace ni ponctuation, et c'est aussi ce que les systèmes de paiement attendent. La disposition groupée par quatre n'est purement qu'une convention d'impression ; ajoutez-la lors du rendu et retirez-la à l'entrée.
Quelle est la partie BBAN ?
Le Basic Bank Account Number, qui correspond à tout ce qui suit le code pays et les chiffres de contrôle. Sa structure interne est propre au pays et code souvent un identifiant bancaire, un code d'agence et le numéro de compte, parfois avec son propre chiffre de contrôle national.
Mon IBAN est-il envoyé à un serveur ?
Non. Tant la recherche de longueur que le calcul MOD 97-10 s'exécutent dans votre navigateur, et la page n'effectue aucune requête réseau avec votre saisie. Vous pouvez vous déconnecter et l'outil continue de fonctionner.
Pourquoi mon IBAN échoue-t-il alors qu'il a le bon nombre de caractères ?
Il s'agit presque toujours d'un caractère unique mal saisi ou interverti. MOD 97-10 détecte toute erreur sur un seul chiffre et toute transposition adjacente ; un échec de la somme de contrôle à la longueur correcte signifie donc qu'un caractère n'a pas sa place. Relisez la source, en particulier là où 0 et O ou 1 et I sont faciles à confondre.