NIR, IBAN, SIRET : comment un programme vérifie qu'un numéro est valide

Publié le 31 octobre 2026 Dernière mise à jour le 31 octobre 2026 7 min de lecture

En bref
Un numéro de sécurité sociale, un IBAN ou un SIRET n'est pas une suite de chiffres quelconque. Les derniers chiffres forment une clé, calculée à partir des autres. Elle sert à repérer une faute de frappe, et elle permet à un programme de savoir si un nombre ressemble à un vrai identifiant. Cet article refait les trois calculs sur des exemples, puis montre leurs limites : une clé juste ne prouve pas qu'un numéro existe.

À qui s'adresse cet article

À toute personne qui automatise le traitement de documents français (factures, e-mails, contrats) et se demande comment un outil reconnaît un identifiant dans un texte. Il n'y a pas besoin de savoir programmer pour suivre les calculs. Une section facultative donne le code pour les refaire dans un nœud Code n8n.

1. Pourquoi la longueur ne suffit pas

Dans un texte, on repère facilement une suite de 13 chiffres. Reste à savoir s'il s'agit d'un numéro de sécurité sociale ou d'une simple référence de commande.

Pour aider à trancher, les administrations et les banques ajoutent à chaque identifiant une clé, calculée à partir des autres chiffres. Si la clé ne colle pas, il y a une erreur quelque part. Si elle colle, le numéro est cohérent. Cet indice est utile, mais il ne prouve rien à lui seul.

2. Le NIR, ou numéro de sécurité sociale

Le numéro de sécurité sociale s'appelle officiellement le NIR, pour numéro d'inscription au répertoire. Il compte 13 chiffres, suivis d'une clé de 2 chiffres.[1][2] Les 13 premiers se lisent par blocs :

PositionsContenu
1Sexe : 1 pour les hommes, 2 pour les femmes
2 à 3Deux derniers chiffres de l'année de naissance
4 à 5Mois de naissance, de 01 à 12
6 à 10Lieu de naissance, d'après le code géographique de l'INSEE
11 à 13Numéro d'ordre, qui distingue les personnes nées au même endroit à la même période

Source : INSEE.[1] Le lieu varie selon l'origine : deux chiffres de département puis trois de commune en métropole, trois chiffres de département puis deux de commune en outre-mer, et le code 99 suivi du pays pour une naissance à l'étranger.[1]

Le calcul de la clé. On divise le nombre de 13 chiffres par 97, et la clé est la différence entre 97 et le reste.[1] Prenons un numéro fictif, 2 69 05 49 588 157 :

  1. 2 690 549 588 157 divisé par 97 donne un reste de 17.
  2. 97 − 17 = 80.
  3. Le numéro complet est donc 2 69 05 49 588 157 80.

Une faute de frappe suffit à casser la clé. Avec un dernier chiffre 8 au lieu de 7, la clé attendue devient 79, et le numéro 2 69 05 49 588 158 80 est rejeté.

Le cas de la Corse. Depuis 1976, les départements corses s'écrivent 2A et 2B.[1] Pour le calcul, l'INSEE remplace la lettre par un 0, puis retire 1 000 000 pour 2A ou 2 000 000 pour 2B.[1] Sur le numéro fictif 1 80 07 2A 001 001, le nombre devient 1 800 719 001 001. Le reste vaut 37 et la clé 60.

Un dernier conseil de l'INSEE : traiter le NIR comme un identifiant opaque, sans en tirer d'informations sur la personne, car sa structure peut évoluer.[1] Un contrôle qui exigerait un mois entre 01 et 12 rejetterait par exemple les codes prévus pour un mois de naissance inconnu.[1]

3. L'IBAN

Un IBAN français compte 27 caractères : le code pays FR, une clé de 2 caractères, le code banque (5), le code guichet (5), le numéro de compte (11) et la clé RIB (2).[3] Les 23 derniers caractères forment le BBAN, l'identifiant national du compte.[3]

Le calcul de la clé. Voici les étapes sur l'IBAN d'exemple FR76 3000 6000 0112 3456 7890 189 :[4]

  1. On déplace les quatre premiers caractères (FR76) à la fin.
  2. On remplace chaque lettre par un nombre : A vaut 10, B vaut 11, et ainsi de suite jusqu'à Z qui vaut 35. Ici F devient 15 et R devient 27.
  3. On obtient le nombre 30006000011234567890189152776.
  4. On le divise par 97. Le reste doit valoir 1, ce qui est bien le cas.

Cette méthode suit la norme ISO 13616 pour la structure et ISO/IEC 7064 pour la clé.[4] Elle vaut pour tous les pays, mais la longueur change, avec 34 caractères au maximum.[4]

4. SIREN et SIRET

Un SIREN compte 9 chiffres. Un SIRET en compte 14 : le SIREN, suivi d'un NIC de 5 chiffres qui désigne l'établissement.[5] L'INSEE les contrôle avec l'algorithme de Luhn.[5]

Le calcul. On part de la droite :

  1. On double un chiffre sur deux, en commençant par le deuxième en partant de la droite.
  2. Si le résultat dépasse 9, on retire 9.
  3. On additionne tous les chiffres. Le total doit être un multiple de 10.

Essayons avec le SIREN 120 027 016, qui est celui de l'INSEE. En partant de la droite, les chiffres sont 6, 1, 0, 7, 2, 0, 0, 2, 1. On double le deuxième (1 devient 2), le quatrième (7 devient 14, donc 5), le sixième (0 reste 0) et le huitième (2 devient 4). La somme 6 + 2 + 0 + 5 + 2 + 0 + 0 + 4 + 1 vaut 20, un multiple de 10. Le numéro est cohérent.

5. Ce que la clé prouve, et ce qu'elle laisse passer

Une clé juste dit que le numéro est cohérent. Elle ne dit pas qu'il a été attribué à quelqu'un.

Un nombre de 15 chiffres tiré au hasard passe le contrôle du NIR une fois sur 97, soit environ 1 %. Un tirage de 200 000 nombres aléatoires a donné 1,01 %. L'IBAN suit la même proportion, puisque le reste doit tomber sur une valeur parmi 97. Luhn est plus tolérant : il laisse passer un nombre sur dix, et le tirage a donné 9,9 % sur 9 chiffres.

Dans un vrai document, cela donne ceci. Sur 500 références de 15 chiffres sans rapport avec la sécurité sociale, comme des numéros de commande ou de suivi, environ 5 passeraient le contrôle du NIR. Ce sont de faux positifs. À l'inverse, un vrai NIR saisi avec une faute est rejeté, alors qu'il reste une donnée personnelle. Un contrôle strict laisse donc passer des numéros erronés, et un contrôle large signale des références sans danger. Aucun réglage ne supprime les deux erreurs à la fois. Le bon compromis dépend de l'usage.

6. Refaire ces contrôles dans un nœud Code n8n

Cette section est facultative. Voici trois petites fonctions JavaScript qui reprennent les calculs ci-dessus. Elles ont été testées sur les exemples de l'article. Pour la Corse, la fonction du NIR remplace 2A par 19 et 2B par 18, ce qui revient à la soustraction décrite par l'INSEE.

const luhn = s => [...s].reverse().reduce((t, c, i) => {
  let d = +c;
  if (i % 2) { d *= 2; if (d > 9) d -= 9; }
  return t + d;
}, 0) % 10 === 0;

const nirOk = s => {            // 15 caractères : 13 + clé
  const n = s.slice(0, 13).replace('2A', '19').replace('2B', '18');
  return 97 - (Number(n) % 97) === Number(s.slice(13));
};

const ibanOk = s => {           // sans espaces, en majuscules
  const r = (s.slice(4) + s.slice(0, 4)).replace(/[A-Z]/g, c => c.charCodeAt(0) - 55);
  return BigInt(r) % 97n === 1n;
};

Ces fonctions contrôlent une clé. Elles ne cherchent pas les numéros dans un texte et ne regardent pas ce qui les entoure.

7. Le contexte autour du numéro

Un contrôle de clé répond à la question « ce numéro est-il cohérent ? ». Il ne dit rien de ce dont parle le document. Une référence de commande de 15 chiffres a une chance sur 97 de passer pour un NIR. Les mots voisins (« sécurité sociale », « n° INSEE », « IBAN », « SIRET »), la présentation en groupes de chiffres et la longueur exacte réduisent ce risque.

Un bon détecteur combine donc la structure, la clé et le contexte. Il laisse aussi le choix de la réaction : annoter le résultat, arrêter le workflow ou aiguiller les éléments signalés, comme le décrit l'article 6 de la série. Les calculs de cet article en forment la première couche.

8. Le NIR et le droit

Le NIR est un identifiant encadré. D'après la CNIL, tout usage du NIR dans un traitement de données doit être autorisé par un décret en Conseil d'État, sauf exceptions prévues par l'article 30 de la loi Informatique et Libertés, comme les statistiques publiques, la recherche ou un service public en ligne.[6] Le décret cadre du 19 avril 2019 (n° 2019-341) liste les traitements permis, et la CNIL précise que tout autre usage est interdit.[6] La page consultée détaille ces usages pour l'assurance. Les autres secteurs ont leurs propres règles, que cet article ne couvre pas.

Un NIR qui se retrouve dans un prompt pose donc une question de finalité, avant même la question technique. Pour un cas précis, mieux vaut s'adresser à la CNIL ou à un juriste.

Questions fréquentes

Une clé valide prouve-t-elle qu'un numéro existe ?

Non. Elle prouve qu'il est cohérent. Un nombre tiré au hasard passe le contrôle du NIR une fois sur 97.

Ces calculs fonctionnent-ils pour les IBAN d'autres pays ?

Le calcul du reste modulo 97 est le même.[4] La longueur et la structure changent d'un pays à l'autre, et cet article ne détaille que le cas français.

Où placer ces contrôles dans un workflow n8n ?

Dans un nœud Code avant l'appel au modèle, ou dans un node de détection dédié. La liste de contrôle de la série situe cette étape dans le trajet des données.

Pour aller plus loin

Sources

[1] INSEE, identifiant d'individus NIR

[2] INSEE, définition du numéro d'inscription au répertoire

[3] Banque de France, RIB, IBAN, BIC

[4] Banco de Portugal, International Bank Account Number

[5] INSEE, identifiants économiques SIREN, NIC et SIRET

[6] CNIL, minimisation et traitements du NIR dans le secteur de l'assurance