Vether
10Module · Identité

IBAN valides via algorithme MOD-97

Procédure de génération d'un IBAN qui passe la validation ISO 13616, avec code banque/agence cohérents par pays.

4 min de lecture·Mise à jour 2026-05-18

Un IBAN (International Bank Account Number) suit le standard ISO 13616. Sa check-sum est calculée via MOD-97-10 : convertir lettres → chiffres, déplacer 4 caractères au début vers la fin, calculer modulo 97 — résultat attendu : 1.

PaysLongueurStructure (après code pays)
FR272 chiffres (clé) + 5 (banque) + 5 (agence) + 11 (compte) + 2 (RIB)
DE222 + 8 (BLZ) + 10 (compte)
ES242 + 4 + 4 + 1 + 1 + 10
GB222 + 4 (banque) + 6 (sort code) + 8 (compte)
BE162 + 3 + 7 + 2
NL182 + 4 (bank ID) + 10

Algorithme MOD-97 simplifié

Validation IBANtypescript
function ibanValid(iban: string): boolean {
  const cleaned = iban.replace(/\s/g, "").toUpperCase();
  if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleaned)) return false;
  // Déplacement : 4 premiers caractères à la fin
  const rearranged = cleaned.slice(4) + cleaned.slice(0, 4);
  // Conversion lettres → chiffres (A=10, B=11, ... Z=35)
  const numeric = rearranged.replace(/[A-Z]/g, (c) =>
    (c.charCodeAt(0) - 55).toString());
  // Calcul mod 97 par morceaux (le nombre est trop grand pour int)
  let remainder = "";
  for (const digit of numeric) {
    remainder = (parseInt(remainder + digit, 10) % 97).toString();
  }
  return parseInt(remainder, 10) === 1;
}
Vether utilise pour chaque pays une liste de codes banque réels mais avec des numéros de compte aléatoires Luhn-MOD-97-valides — l'IBAN est syntaxiquement parfait mais ne correspond à aucun compte ouvert.

Articles liés