Introduction
Le numéro de SIREN est attribué par l'INSEE lors de la création d'une entreprise (ou lors de la déclaration d'existence des travailleurs indépendants, artistes auteurs).
Ce code est national, invariable et dure le temps de la vie de l'entreprise.
Il est composé de 9 chiffres et se présente comme suit selon l'activité :
- Profession libérale / artiste auteur : 000 000 000
- Commerçant : 000 000 000 RCS
- Artisan : 000 000 000 RM 000
Le numéro de SIRET, quant à lui, identifie géographiquement l'établissement d'une entreprise. Il est composé de 14 chiffres correspondant au SIREN (9 chiffres) + le NIC (5 chiffres).
Il peut donc y avoir plusieurs SIRET à partir d'un seul SIREN si une entreprise à plusieurs établissements.
Règles de validation
Validité d'un numéro de SIREN
Le numéro SIREN est composé de 8 chiffres, plus un chiffre de contrôle qui permet de vérifier la validité du numéro.
La clef de contrôle utilisée pour vérifier l'exactitude d'un identifiant est une clef « 1-2 », suivant l'algorithme de Luhn.
Le principe est le suivant : on multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2.
La somme des chiffres obtenus doit être congrue à zéro modulo 10, c'est-à-dire qu'elle doit être multiple de 10.
Exemple de contrôle de numéro SIREN
Code SIREN 732829320
Pos9 | Pos8 | Pos7 | Pos6 | Pos5 | Pos4 | Pos3 | Pos2 | Pos1 |
---|---|---|---|---|---|---|---|---|
7 | 3 | 2 | 8 | 2 | 9 | 3 | 2 | 0 |
7x1 | 3x2 | 2x1 | 8x2 | 2x1 | 9x2 | 3x1 | 2x2 | 0x1 |
7 | 6 | 2 | 16 | 2 | 18 | 3 | 4 | 0 |
La somme des chiffres suivants : 7+6+2+1+6+2+1+8+3+4+0 vaut 40, qui est multiple de 10.
Ce numéro SIREN est donc correct.
Validité d'un numéro de SIRET
Le numéro SIRET est composé de 14 chiffres, dont un chiffre de contrôle (le dernier) qui permet de vérifier la validité du numéro de SIRET (SIREN + NIC).
La clef de contrôle utilisée pour vérifier l'exactitude d'un identifiant est une clé "1-2", suivant l'algorithme de Luhn.
Le principe est le suivant : on multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2.
La somme des chiffres obtenus doit être congrue à zéro modulo 10, c'est-à-dire qu'elle doit être multiple de 10.
Exemple de contrôle de numéro SIRET
Code SIRET 73282932000074
Pos14 | Pos13 | Pos12 | Pos11 | Pos10 | Pos9 | Pos8 | Pos7 | Pos6 | Pos5 | Pos4 | Pos3 | Pos2 | Pos1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 3 | 2 | 8 | 2 | 9 | 3 | 2 | 0 | 0 | 0 | 0 | 7 | 4 |
7x2 | 3x1 | 2x2 | 8x1 | 2x2 | 9x1 | 3x2 | 2x1 | 0x2 | 0x1 | 0x2 | 0x1 | 2x2 | 4x1 |
(14)1+4 | 3 | 4 | 8 | 4 | 9 | 6 | 2 | 0 | 0 | 0 | 0 | 4 | 4 |
La somme des chiffres suivants : 1+4+3+4+8+4+9+6+2+0+0+0+0+1+4+4 vaut 50, qui est multiple de 10.
Ce numéro SIRET est donc correct.
Exemple de code permettant la vérification d'un code SIREN ou SIRET
En entrée, 2 zones écran :
- ZADH_NUM_SIR_ADH est le numéro de SIREN - NUM_E(9,0)
- ZADH_NIC_ADH est le NIC (numéro interne de classement) - NUM_E(5,0)
En sortie :
- W_FLG_CTRL contient une valeur *Vrai si le SIRET ou SIREN est valide, *Faux sinon.
[DECLARATION] Alpha(9) WA_SIREN Alpha(14) WA_SIRET Nun_E(14,0) WN_SIRET Alpha(1) W_A Nun_E(1,0) W_N Num_Bin_2 W_POS Bool W_IMPAIRE Num_E(3,0) W_SOM Num_E(1,0) W_UNIT Num_E(2,0) W_DIZ
[TRAITEMENT] Si ZADH_NIC_ADH = 0 /* ___ traitement SIREN ____________________________________________ Placer_A_Droite ZADH_NUM_SIR_ADH WA_SIREN W_POS = 9 W_IMPAIRE = *Vrai Tant_Que W_POS >= 1 W_A = &Extraction(WA_SIREN;W_POS;1) W_N = &Alpha_Num(W_A) Si W_IMPAIRE /* --- impair W_SOM = W_SOM + W_N Sinon /* --- pair W_DIZ = W_N * 2 Si W_DIZ <= 9 W_SOM = W_SOM + W_DIZ Sinon /* --- Résultat multiplication sur 2 positions W_DIZ = W_DIZ - 10 W_SOM = W_SOM + 1 + W_DIZ Fin Fin W_POS = W_POS - 1 W_IMPAIRE = Non W_IMPAIRE Refaire Sinon /* ___ traitement SIRET ____________________________________________ WN_SIRET = (ZADH_NUM_SIR_ADH * 100000) + ZADH_NIC_ADH Placer_A_Droite WN_SIRET WA_SIRET W_POS = 14 W_IMPAIRE = *Vrai Tant_Que W_POS >= 1 W_A = &EXTRACTION(WA_SIRET;W_POS;1) W_N = &ALPHA_NUM(W_A) Si W_IMPAIRE /* --- impair W_SOM = W_SOM + W_N Sinon /* --- pair W_DIZ = W_N * 2 Si W_DIZ <= 9 W_SOM = W_SOM + W_DIZ Sinon /* --- Résultat multiplication sur 2 positions W_DIZ = W_DIZ - 10 W_SOM = W_SOM + 1 + W_DIZ Fin Fin W_POS = W_POS - 1 W_IMPAIRE = Non W_IMPAIRE Refaire Fin /* ___ Récupère l'unité de W_SOM ______________________________________ W_UNIT = W_SOM / 10 Reste W_UNIT W_FLG_CTRL = (W_UNIT = 0)