Vérifier un SIREN, un SIRET ou un numéro de TVA en php

Il est très simple de vérifier un numéro SIREN / SIRET / TVA.

Mais pour commencer, de quoi sont composés ces numéros ?

SIREN

Le SIREN est un identifiant unique pour chaque entreprise française. Il est constitué de 9 chiffres : 8 chiffres pour l’identification, et un chiffre de contrôle à la fin.
Ex : 443 061 841

SIRET

Le SIRET est composé du SIREN plus un identifiant d’établissement sur 4 chiffres (dans le cas d’une entreprise avec plusieurs lieux d’exercice ou en cas de déménagement) et encore une fois un chiffre de contrôle ; pour un total de 14 chiffres.
Ex : 443 061 841 00039

N° TVA

Le numéro de TVA intracommunautaire délivré en France est composé des initiales FR, d’une clé de contrôle à 2 chiffres, et du SIREN de l’entreprise.
Ex: FR64443061841

Valider ces numéros en PHP

Pour le SIREN et le SIRET on utilise la formule de Luhn (wikipedia).
Voici un exemple en PHP. :

  • on part du SIRET (le plus complet, établissement inclus)
  • on vérifie le SIRET avec sa clé
  • on détermine le SIREN
  • on vérifie le SIREN avec sa clé
  • on détermine le n°TVA
// SIRET de Google France
$siret = "443 061 841 00039";

// On ne garde que les chiffres
$siret = preg_replace("/[^\d]+/", '', $siret);

// SIRET
print "SIRET : " . $siret;
if(checkLuhn($siret)) print " OK
"; else print " NOK
"; // SIREN print "SIREN : " . $siren = nSIREN($siret); if(checkLuhn($siren)) print " OK
"; else print " NOK
"; // N° TVA print "N° TVA : " . nTVA($siren) . "
"; // Vérification avec la méthode de Luhn function checkLuhn($val) { $len = strlen($val); $total = 0; for ($i = 1; $i <= $len; $i++) { $chiffre = substr($val,-$i,1); if($i % 2 == 0) { $total += 2 * $chiffre; if((2 * $chiffre) >= 10) $total -= 9; } else $total += $chiffre; } if($total % 10 == 0) return true; else return false; } // SIREN = 9 premiers chiffres du SIRET function nSIREN($siret) { return substr($siret,0,9); } // N°TVA = FR + clé + SIREN function nTVA($siren) { return "FR" . (( 12 + 3 * ( $siren % 97 ) ) % 97 ) . $siren; }

Dans l’état devrait afficher :

SIRET : 44306184100039 OK
SIREN : 443061841 OK
N° TVA : FR64443061841

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>