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)