DNI, NIE, NIF y CIF
Los identificadores fiscales españoles tienen varios nombres, y se solapan. En resumen: todo número que valida esta librería es un NIF, y el DNI, el NIE, el NIF K/L/M y el CIF son clases de NIF.
El NIF: el paraguas
Sección titulada «El NIF: el paraguas»El NIF (número de identificación fiscal) identifica a cada persona y a cada entidad ante la Administración tributaria española. El Real Decreto 1065/2007 (arts. 19 a 22) define quién recibe cada clase. El primer carácter del número distingue las clases, que nunca se solapan (NIF-1):
| Clase | A quién se asigna | Formato | Ejemplo | type en validate() |
|---|---|---|---|---|
| DNI | Ciudadanos españoles | 8 dígitos y una letra de control | 12345678Z |
"DNI" |
| NIF K/L/M | Personas sin DNI ni NIE (ver más abajo) | K, L o M, 7 dígitos y una letra de control | K1234567L |
"NIF_KLM" |
| NIE | Personas extranjeras | X, Y o Z, 7 dígitos y una letra de control | X1234567L |
"NIE" |
| CIF | Empresas y otras entidades | Una clave de entidad, 7 dígitos y un carácter de control (un dígito o una letra) | B12345674 |
"CIF" |
import { getNifType } from "nif-dni-nie-cif-validation";
getNifType("12345678Z"); // "DNI"getNifType("K1234567L"); // "NIF_KLM"getNifType("X1234567L"); // "NIE"getNifType("B12345674"); // "CIF"getNifType("T1234567A"); // null: ninguna clase de NIF empieza por TgetNifType() solo mira el formato: getNifType("12345678A") es "DNI" aunque su letra sea incorrecta. Para saber si un número es válido, usa validate() o una función isValid….
DNI: ciudadanos españoles
Sección titulada «DNI: ciudadanos españoles»Para un ciudadano español, el NIF es el número de su DNI (documento nacional de identidad): 8 dígitos, con los ceros a la izquierda incluidos, y una letra de control en mayúscula calculada a partir del número (DNI-1, DNI-2). Mucha gente lo escribe sin los ceros iniciales, o con puntos y un guion; la librería acepta ambas cosas y devuelve la forma canónica para que la guardes:
import { validate } from "nif-dni-nie-cif-validation";
validate("1234567L").normalized; // "01234567L": se vuelve a añadir el cero inicialvalidate("12.345.678-z").normalized; // "12345678Z"NIE: personas extranjeras
Sección titulada «NIE: personas extranjeras»Las personas extranjeras reciben un NIE (número de identidad de extranjero): X, Y o Z, 7 dígitos y una letra de control (NIE-1). Primero se usó la serie X; cuando se agotó, siguió la Y, y después la Z.
Hasta 2008, los NIE tenían 10 caracteres: una X, 8 dígitos y una letra. Esos números siguen siendo válidos, y su forma canónica elimina el cero que sigue a la X (NIE-3):
import { isValidNie, validate } from "nif-dni-nie-cif-validation";
isValidNie("X01234567L"); // true: la forma antigua de 10 caracteresvalidate("X01234567L").normalized; // "X1234567L"isValidNie("X11234567L"); // false: solo se puede suprimir un 0 inicialNIF K/L/M: personas sin DNI ni NIE
Sección titulada «NIF K/L/M: personas sin DNI ni NIE»Algunas personas físicas necesitan un NIF pero no tienen DNI ni NIE. Reciben un NIF que empieza por una letra (KLM-1):
- K: españoles menores de 14 años residentes en España que no tienen DNI.
- L: españoles residentes en el extranjero que no tienen DNI.
- M: personas extranjeras que no tienen NIE (por ejemplo, mientras se tramita; un NIF M puede ser temporal).
Son personas, no empresas. isValidDni() e isValidNaturalPersonNif() los aceptan, y validate() los identifica como "NIF_KLM":
import { isValidCif, isValidDni, validate } from "nif-dni-nie-cif-validation";
isValidDni("K1234567L"); // trueisValidCif("K1234567L"); // false: K no es una clave de entidadvalidate("M1234567L").type; // "NIF_KLM"CIF: empresas y otras entidades
Sección titulada «CIF: empresas y otras entidades»Las empresas, asociaciones, organismos públicos y demás entidades tienen un NIF que empieza por una clave de entidad, una letra que indica qué tipo de entidad es, seguida de 7 dígitos y un carácter de control (CIF-1, CIF-2).
Hasta 2008, este número se llamaba CIF (código de identificación fiscal). La Orden EHA/451/2008 le cambió el nombre: oficialmente ahora es el «NIF de persona jurídica o entidad». Todo el mundo sigue buscando «CIF», así que la librería mantiene el nombre (isValidCif, type: "CIF"), con isValidLegalEntityNif como alias.
import { describeCifOrganisation, validate } from "nif-dni-nie-cif-validation";
validate("B12345674").meta; // { orgKey: "B", orgDescription: "Limited liability company" }describeCifOrganisation("G"); // "Association"Estas son las 17 claves de entidad, con el nombre que la librería da a cada una en el idioma de esta página y la clase de carácter de control que lleva cada clave (CIF-3):
| Clave | Tipo de entidad | Carácter de control |
|---|---|---|
A | Sociedad anónima | un dígito |
B | Sociedad de responsabilidad limitada | un dígito |
C | Sociedad colectiva | un dígito |
D | Sociedad comanditaria | un dígito |
E | Comunidad de bienes, herencia yacente u otra entidad carente de personalidad jurídica no incluida expresamente en otras claves | un dígito |
F | Sociedad cooperativa | un dígito |
G | Asociación | un dígito |
H | Comunidad de propietarios en régimen de propiedad horizontal | un dígito |
J | Sociedad civil | un dígito |
N | Entidad extranjera | una letra |
P | Corporación local | una letra |
Q | Organismo público | una letra |
R | Congregación o institución religiosa | una letra |
S | Órgano de la Administración del Estado o de una comunidad autónoma | una letra |
U | Unión temporal de empresas | un dígito |
V | Otro tipo no definido en el resto de claves | un dígito |
W | Establecimiento permanente de una entidad no residente en territorio español | una letra |
Desde 2008, los 7 dígitos son aleatorios: ya no dicen nada de la provincia, así que la librería no comprueba códigos de provincia (CIF-5).
NIF-IVA
Sección titulada «NIF-IVA»Un NIF-IVA español, que se usa en las operaciones intracomunitarias, es ES seguido del NIF (VAT-1). isValidSpanishVat() comprueba ese formato; validate() solo acepta el prefijo si lo pides:
import { isValidSpanishVat, validate } from "nif-dni-nie-cif-validation";
isValidSpanishVat("ES12345678Z"); // truevalidate("ES12345678Z").error?.code; // "INVALID_FORMAT"validate("ES12345678Z", { allowVatPrefix: true }).normalized; // "12345678Z"Lo que no es un NIF
Sección titulada «Lo que no es un NIF»Algunas reglas que encontrarás en internet no tienen fuente oficial, y la librería no las aplica. Un número que empieza por T no es un NIF, un CIF que empieza por 00 no necesita una letra y los dígitos del CIF no llevan código de provincia. Las preguntas frecuentes explican cada caso, y las fuentes oficiales los enumeran.