Blog de développement

SIRENE: Validation de SIREN et SIRET

Dernière Modification le :
2024-02-19

SIRET et SIREN: foire aux confusions!

Le SIREN (9 chiffres) reprend à l'identique le RCS (9 chiffres) : il correspond donc à l'entité juridique, au sens du Tribunal de Commerce. À chaque création d'établissement, typiquement au moins un à la création de l'Entreprise, l'INSEE (et non le greffe) ajoute le NIC (5 chiffres). Il existe des entités sans établissement, c'est-à-dire avec un SIREN, et pas de SIRET. À noter qu'il existe des entités avec un SIRET et sans numéro de TVA !

Chat-GPT, et souvent Internet, en général, se trompent... CHAT-GPT me dit :

l'INSEE est plus clair: il y a bien 2 clés

Voici ce qu'en dit la source légitime : l'INSEE Lire →


Il y a donc bien 2 clés. Tout comme le numéro de TVA, qui a sa clé propre ET la clé au neuvième chiffre ! Le système français est donc extrêmement robuste !

Cette double vérification, très performante, peut encore être améliorée et ne dispense pas d'une vérification dans le registre...

Validation d'un SIREN/SIRET et OCR

L'extraction des informations sur un bon de commande par notre 'Listener' ce fait au prix de son OCRisation. La clientèle B-2-B procède par bon de commande, c'est comme cela... Qui dit OCR, dit erreurs potentielles...

Les règles heuristiques

Ces régles algorithmiques sont publiques (certaines pas, comme pour le numéro fiscal personnel...). Il existe en outre des règles heuristiques, privées, qui permettent, elles aussi, d'éliminer bon nombre de SIREN/SIRET invalides.

Elles sont déterminées à l'expérience. L'INSEE n'y étant pas tenu, elles doivent être recalculées et revalidées à chaque nouvelle parution du registre.

Voici un exemple, où l'économie de calcul est simple et significative : Les 3 premiers chiffres du SIREN (et donc du SIRET) sont réservés au numéro de registre, avec au moins un registre par tribunal de commerce. Il existe une liste officielle : Lire la liste →, ou Télécharger → ou voir la carte interactive

Les 149 (134 ?) greffes se repartissent les 999 codes disponibles. Je ne connais pas la pratique dans le détail, mais de nombreux codes ne sont pas usités pour les entreprises et sont probablement réservés à l'identification légale d'artisans ou professions libérales, que sais-je. Il en résulte que dans Chorus, annuaire d'entreprises essentiellement du secteur public, seuls 500 des 999 codes sont rencontrés. Avant d'interroger l'annuaire Chorus avec un SIREN, on peut faire l'économie de cette consultation si le code greffe n'est pas dans la liste des codes greffes "Chorus".

On peut envisager des règles heuristiques pour différents registres et contexte d'interrogation. Pour la reconnaissance OCR, c'est intéressant d'éliminer au plus tôt des non-conformes, car la consultation effective du registre prend du temps.

Consultation du registre : Stock vs API

Chorus, BANO, le VIES et l'INSEE peuvent être consultés en temps réel. À l'exception notable du VIES, l'annuaire est publié régulièrement: chaque semaine pour Chorus, chaque mois pour l'INSEE ou BANO ...
Voici les avantages/inconvénients :

API : Données toujours à Jour, Interactivité et Automatisation, Filtrage et Personnalisation des Requêtes,
Mais... Maintenance et Mises à Jour, Dépendance au Fournisseur de l'API, à la connexion Internet. Par exempleSIRENE va passer à SIRENE 4 Lire →

Stockage en CSV : Contrôle Total sur les Données, Pas de Dépendance à une Connexion Internet, Simplicité et Compatibilité
Mais... Données Potentiellement Périmées, Gestion des Mises à Jour,

Choix entre API et CSV Le choix entre utiliser une API ou un fichier CSV dépend de plusieurs facteurs :

Si vous avez besoin de données toujours à jour, une API est généralement préférable... Mais, Les APIs nécessitent une certaine expertise technique pour l'intégration, tandis que les fichiers CSV sont souvent plus simples à utiliser.
Pour des requêtes fréquentes ou de grands volumes de données, une API semble être plus efficace, en première approche.
Si vous travaillez dans un environnement avec une connectivité limitée ou instable, les fichiers CSV peuvent être plus pratiques !

Pour ma part, je privilégie une interrogation du stock pour l'identification et saisie automatique d'un bon de commande. Parfois, j'ai pu constater que le VIES (voire SIRENE) étaient indisponibles en mode API (Maintenance ?). Or, il est possible de télécharger une mise à Jour quotidienne : Lire la procédure → et aussi : Lire →.

J'ai aussi le cas où je consulte toutes les adresses légales de tous les établissements d'un client: cela peut ëtre utile à l'identification d'une adresse de livraison quand elle est différente de l'adresse de facturation ou du siège. Pour EDF, par exemple, il y a au moins 1000 établissements, ce qui nécessite 1000 interrogations ! L'avantage est nettement à l'interrogation du fichier local, dit stock.

Le fichier stock ne contient pas les entreprises/établissement créés dans le mois. Pour le cas des nouveaux établissements, c'est facile : si vous trouvez l'entité juridique dans le stock des entités juridiques, mais pas dans le stock des établissements, vous pouvez forcer à une interrogation par API.

L'INSEE, Google, CHAT-GPT vous répètent que le numéro de SIREN est aléatoire. Il n'en est rien ! En tant que numéro à 9 chiffres, il n'est pas prévisible... Vous regardez le dernier numéro émis par l'INSEE et vous ne pouvez pas prévoir le prochain. C'est vrai! Mais l'INSEE n'est pas un générateur aléatoire de numéro. La création du numéro se fait au niveau du greffe, ou plutôt du code à 3 chiffres qui lui appartient, et là... C'est un Registre, ce qui ceut bien dire ce que cela veut dire ! À cette échelle là, le numéro est incrémental ! (C'est d'ailleurs bien ce qu'écrit l'INSEE).
Vous regardez le dernier numéro émis par le Greffe et vous pouvez prévoir le prochain.

Si l'entité juridique a été nouvellement crée, son code registre est postérieur au dernier enregistré dans la boite à 3 chiffres. Postérieur et pas trop loin... Vous regardez quel est le dernier, et la probabilité que ce numéro ait été attribué à une entité récente diminue avec la distance (et, à l'inverse, que ce soit un fake augmente avec la distance). Vous mettez un seuil raisonnable. En dessous, vous interrogez SIRENE, au dessus... Non... C'est déjà cela de gagné !

Voilà un bel exemple de règle heuristique ! À chacun de faire selon son gré !

Mes outils préférés pour SIRENE local

Curl, SevenZIP, qsv-ultra-fast-csv-data, csvtk, FART, xcopy, iconv, le tout assemblé par le bon vieux VBS. Lire ce point utile →.

Le code à proprement parler est expliqué dans un autre billet, pour ne pas alourdir celui-ci

La vitesse d'exécution

La vérification du SIRET/SIREN/TVA en temps réel est souhaitable pour les sites de commerce de type B2C, qui travaillent en dynamique. Pour un site exclusivement en B2C et B2G, le travail est porté sur le 'Listener', qui est asynchrone. En première approche, on pourrait croire que la performance n'est pas critique. C'est exact...
Toutefois, il faut compter avec l'Océrisation, qui peut prendre 1 à 2 minutes par mail. La recherche des adresses est un processus complexe : Voici un exemple un client avec 2 ou 3 établissements passe commande: énumérer ses 3 sites, pour en récupérer des adresses n'est pas trop lourd. Par contre des comptes comme EDF possèdent 1000 établissements. En pratique, interroger 1000 établissements, en rafale, avec l'API SIRENE, est très long et nécessite de mettre des tempos, car SIRENE n'est si performant que cela !

Les numéros factices

Voici 2 circonstances où l'on cherche à écarter un numéro erroné : lors de la 'lecture' d'un texte OCErisé (l'OCR génère naturellement des 'fautes') ou lors de l'enregistrement de coordonnées client par un site en ligne : voici quelques situations:
  • - le numéro n'est pas au format attendu (9 chiffres pour le SIREN, 14 pour le SIRET)
  • - le numéro est au bon format, mais n'est pas valide au sens de l'algorithme de LUHN
  • - est valide au sens de l'algorithme de LUHN, mais n'est pas attribué
  • - le numero est attribué mais la société n'est plus en activité
  • - le SIREN/SIRET est résolument valide, mais cette entité n'a pas de numéro de TVA (ex: une association... Lire →)

Voici un numéro de SIREN en apparence innocent 157005000, le SIREN 157005000 est bien formé. On lui crée un SIRET simple, celui du premier établissement 15700500000011, on lui calcule un numéro de TVA FR84157005000 .

Pour vous en convaincre, faites la vérification algorithmique sur mon-convertisseur.fr puis tapez dans le navigateur:

https://api-avis-situation-sirene.insee.fr/identification/pdf/15700500000011

et vous obtiendrez :

{"message":"{\"header\":{\"statut\":404,\"message\":\"Aucun élément trouvé pour le siren 157005000\"}}","code":404,"codeDiffusabilite":null}

Notre numéro factice est valide au sens de l'algoritme de LUHN, mais n'est pas attribué... En OCR-to-Order, il doit être rejetté...

SIREN, catégorie et Numero de TVA

API Sirene donne accès aux informations concernant les entreprises ... Catégorie juridique de l'entreprise (=1000 pour les personnes physiques). Lire le Manuel →

En OCR on est confronté à des Faux Positifs, c'est à dire de valeurs proposées, qui passent les obstacles/filtres, mais qui ne sont pas celle sur le bon de commande. Entendons bien, un SIREN peut êter le plus exact du monde sans être celui que porte le bon de commande!

Que mon système dédié à l' enregistrement d'un bon de commande industriel valide le SIREN de Mme Trucmuche, coiffeuse à Landernau, est plutôt une erreur... . A réception du Stock de l'INSEE, à l'évidence on va faire maigrir ce fichier de 6 GB au strict nécessaire.

Le strict necessaire inclut-il les artisans? les individuels, auto-entrepreneur? Associations? Selon le scope de chacun, on peut (ou non) réduire, réduire. Ai-je des associations parmi la clientèle ? Il y a donc une étape de réduction informatique du fichier initial, mais aussi, un réduction 'métier'. Ai-je des clients qui n'ont pas d'Etablisement? Qui ne sont pas employeurs? Etc.