SIREN, SIRET y número de IVA francés: formatos, dígitos de control y cómo validarlos (con código)

Los formatos del SIREN, el SIRET y el IVA francés, cómo funcionan sus dígitos de control, código Python y JavaScript sin conexión y cómo confirmar la empresa.

· Por el equipo de Fuentio · 7 min de lectura

Imagen para compartir: «SIREN, SIRET y número de IVA francés: formatos, dígitos de control y cómo validarlos (con código)» sobre el fondo de papel de Fuentio, con la etiqueta Tutorial.

Toda empresa francesa tiene un SIREN, cada uno de sus establecimientos tiene un SIRET, y la mayoría tiene un número de IVA intracomunitario construido a partir del SIREN. Los tres llevan dígitos de control, así que la mayoría de las erratas se detectan antes de consultar ningún servicio. Este tutorial explica cada formato, da código de validación sin conexión en Python y JavaScript y muestra cómo confirmar que un número válido pertenece a una empresa real.

Lo que vas a aprender

  • Cómo son el SIREN, el SIRET y el número de IVA francés, y cómo se relacionan
  • Cómo funcionan sus dígitos de control, y el código para comprobarlos sin conexión
  • Por qué un formato válido no demuestra que la empresa exista
  • Cómo confirmar la empresa, a mano o con una API
  • Los errores que causan la mayoría de los números incorrectos

Los tres números y cómo encajan

Anatomía de un SIRET con los números reales de la sede de Renault: el SIREN de 9 cifras 441 639 465 (8 cifras sin significado y un dígito de control), el NIC de 5 cifras 0009 1 (un número de establecimiento de 4 cifras y un dígito de control) y el número de IVA FR 63 441639465, cuya clave 63 se calcula a partir del SIREN
Un SIREN, un SIRET por local y un número de IVA calculado a partir del SIREN.

El SIREN identifica a la empresa en sí, la unidad legal. El INSEE lo define como un identificador de nueve cifras asignado a cada unidad legal; las ocho primeras no tienen significado y la novena es un dígito de control. Se asigna una sola vez y nunca se reutiliza. El SIREN de Renault es 441 639 465.

El SIRET identifica un establecimiento, es decir, cada lugar donde opera la empresa. El INSEE lo define como un número de 14 cifras en dos partes: el SIREN de la unidad legal y el NIC, formado por un número de orden de cuatro cifras y un dígito de control. La sede de Renault tiene el SIRET 441 639 465 00091: el SIREN y el NIC 00091.

El número de IVA francés es el identificador de IVA intracomunitario de la empresa: las letras FR, una clave de dos caracteres y el SIREN. El de Renault es FR63441639465. La clave se calcula a partir del SIREN, así que un número de IVA se puede comprobar contra su propio SIREN.

En la práctica: una empresa tiene un solo SIREN y un solo número de IVA, pero tantos SIRET como locales. Un formulario que pida «el número de la empresa» debe decir cuál.

Cómo funcionan los dígitos de control

El SIREN y el SIRET usan el algoritmo de Luhn, el mismo de los números de tarjeta. Empezando por la derecha, se duplica una cifra de cada dos; si el doble supera 9, se le resta 9; se suma todo. El número es válido si el total es múltiplo de 10. En el SIRET el control cubre las 14 cifras, así que también protege la parte del SIREN.

La clave del IVA funciona de otra forma. Se calcula a partir del SIREN con esta fórmula:

clave = (12 + 3 × (SIREN mod 97)) mod 97

El resultado se escribe con dos cifras. Comprobamos la fórmula con números reales: para Renault, 441 639 465 da la clave 63 (FR63441639465), y para Doctolib, 794 598 813 da la clave 14 (FR14794598813). El servicio VIES de la Comisión Europea es la referencia para confirmar que un número de IVA está registrado.

Validar sin conexión, en Python

import re

def cifras(valor: str) -> str:
    return re.sub(r"[\s.\-]", "", valor)

def luhn_ok(numero: str) -> bool:
    total = 0
    for i, c in enumerate(reversed(numero)):
        n = int(c) * (2 if i % 2 else 1)
        total += n - 9 if n > 9 else n
    return total % 10 == 0

def siren_ok(valor: str) -> bool:
    d = cifras(valor)
    return len(d) == 9 and d.isdigit() and luhn_ok(d)

def siret_ok(valor: str) -> bool:
    d = cifras(valor)
    return len(d) == 14 and d.isdigit() and luhn_ok(d)

def clave_iva(siren: str) -> str:
    return f"{(12 + 3 * (int(siren) % 97)) % 97:02d}"

def iva_fr_ok(valor: str) -> bool:
    v = cifras(valor).upper()
    if not re.fullmatch(r"FR\d{11}", v):
        return False
    clave, siren = v[2:4], v[4:]
    return siren_ok(siren) and clave == clave_iva(siren)

print(siren_ok("441 639 465"))              # True
print(siret_ok("441 639 465 00091"))        # True
print(iva_fr_ok("FR63441639465"))           # True
print(siren_ok("441639465"[:-1] + "6"))     # última cifra cambiada: False

Validar sin conexión, en JavaScript

const cifras = (v) => v.replace(/[\s.\-]/g, "");

function luhnOk(n) {
  let total = 0;
  [...n].reverse().forEach((c, i) => {
    const d = Number(c) * (i % 2 ? 2 : 1);
    total += d > 9 ? d - 9 : d;
  });
  return total % 10 === 0;
}

const sirenOk = (v) => /^\d{9}$/.test(cifras(v)) && luhnOk(cifras(v));
const siretOk = (v) => /^\d{14}$/.test(cifras(v)) && luhnOk(cifras(v));
const claveIva = (siren) => String((12 + 3 * (Number(siren) % 97)) % 97).padStart(2, "0");

function ivaFrOk(v) {
  const s = cifras(v).toUpperCase();
  if (!/^FR\d{11}$/.test(s)) return false;
  return sirenOk(s.slice(4)) && s.slice(2, 4) === claveIva(s.slice(4));
}

console.log(siretOk("44163946500091"), ivaFrOk("FR63441639465")); // true true

Ejecuta estas comprobaciones mientras el usuario escribe y di claramente qué falla: «un SIREN tiene 9 cifras» ayuda más que «dato no válido».

Un formato válido no es una empresa

Un dígito de control correcto demuestra que el número está bien formado. No dice que una empresa lo tenga, que siga activa ni que sea la que dice tu usuario. Un número inventado tiene más o menos una posibilidad entre diez de pasar el control de Luhn por casualidad.

La comprobación sin conexión filtra erratas; después confirma el número en los datos oficiales. Dos casos piden cuidado:

  • Un número válido que no devuelve nada. Algunas empresas francesas han pedido no difundir sus datos y no aparecen en el directorio público. Pide un documento de inscripción en vez de rechazar de entrada.
  • Un SIRET que no pasa el control. No lo rechaces automáticamente si el usuario insiste: búscalo primero. Un dígito de control erróneo casi siempre es una errata, pero la consulta es la que decide.

Confirmar que la empresa existe

A mano. Escribe el SIREN o el SIRET en el Annuaire des Entreprises, el directorio público del Estado francés que reúne Sirene (INSEE) y el registro nacional de empresas (RNE). Muestra la denominación, el estado (activa o cesada), la sede y los establecimientos. Para entender estas fuentes, lee qué es el KYB.

Con una API. La API de Fuentio devolverá la empresa para un SIREN, un SIRET o un número de IVA, con su fuente y su fecha de comprobación, cuando abra. Hasta entonces, la comprobación sin conexión y una visita al Annuaire des Entreprises cubren lo esencial.

Los errores más frecuentes

Unos pocos errores explican la mayoría de los números incorrectos en los formularios:

  • Un SIRET en un campo SIREN, o al revés. Acepta ambos y toma las nueve primeras cifras como SIREN cuando recibas catorce; valida los dos.
  • El IVA con espacios o sin FR. Normaliza antes de comprobar: quita espacios, pasa a mayúsculas y prueba el patrón.
  • Ceros iniciales perdidos. Las hojas de cálculo borran los ceros del principio. Guarda los identificadores como texto, nunca como números.
  • El SIRET de la sede para todos los locales. Si facturas o entregas en un local concreto, pide el SIRET de ese local.
  • Un número copiado de un documento antiguo. La empresa puede haber cesado, o el local cerrado, desde entonces. El dígito de control no lo dice; solo una consulta.

Dónde encaja

Validar números es el primer paso de casi cualquier comprobación de empresas: en el alta, antes de facturar, al limpiar un fichero de clientes. Es barato y elimina la mayoría de los errores. El siguiente paso es leer lo que dice el registro. Consulta lo que cubrimos en Francia y España, y, para la parte española, el BORME explicado.

Preguntas frecuentes

¿El SIRET es el SIREN con cinco cifras más?

Sí: las nueve primeras cifras de un SIRET son el SIREN de la empresa, seguidas del NIC (cuatro cifras del establecimiento y un dígito de control).

¿Puedo calcular el IVA a partir del SIREN?

Puedes calcular el número esperado: FR, la clave y el SIREN. Que la empresa esté realmente dada de alta en el IVA se confirma en VIES.

¿Por qué un SIREN aparentemente correcto no devuelve nada?

O se escribió mal de una forma que el control no detectó, o la empresa pidió no aparecer en el directorio público. Pide un documento de inscripción.

¿Debo bloquear el formulario si falla el control?

Muestra un mensaje claro y deja que el usuario lo corrija. Si insiste, busca el número antes de rechazarlo.

Fuentes

  • INSEE, definición del número SIREN (actualizada el 21/10/2025, consultada el 8 de octubre de 2026): insee.fr
  • INSEE, definición del número SIRET (consultada el 8 de octubre de 2026): insee.fr
  • Annuaire des Entreprises: annuaire-entreprises.data.gouv.fr
  • Comisión Europea, comprobación de números de IVA (VIES): ec.europa.eu

← Todos los artículos · Canal RSS