DNI, NIE, NIF e CIF
Os identificadores fiscais españois teñen varios nomes, e solápanse. En resumo: todo número que valida esta biblioteca é un NIF, e o DNI, o NIE, o NIF K/L/M e o CIF son clases de NIF.
O NIF: o paraugas
Sección titulada «O NIF: o paraugas»O NIF (número de identificación fiscal) identifica cada persoa e cada entidade ante a Administración tributaria española. O Real decreto 1065/2007 (arts. 19 a 22) define quen recibe cada clase. O primeiro carácter do número distingue as clases, que nunca se solapan (NIF-1):
| Clase | A quen se asigna | Formato | Exemplo | type en validate() |
|---|---|---|---|---|
| DNI | Cidadáns españois | 8 díxitos e unha letra de control | 12345678Z |
"DNI" |
| NIF K/L/M | Persoas sen DNI nin NIE (véxase máis abaixo) | K, L ou M, 7 díxitos e unha letra de control | K1234567L |
"NIF_KLM" |
| NIE | Persoas estranxeiras | X, Y ou Z, 7 díxitos e unha letra de control | X1234567L |
"NIE" |
| CIF | Empresas e outras entidades | Unha clave de entidade, 7 díxitos e un carácter de control (un díxito ou unha 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: ningunha clase de NIF comeza por TgetNifType() só mira o formato: getNifType("12345678A") é "DNI" aínda que a súa letra sexa incorrecta. Para saber se un número é válido, use validate() ou unha función isValid….
DNI: cidadáns españois
Sección titulada «DNI: cidadáns españois»Para un cidadán español, o NIF é o número do seu DNI (documento nacional de identidade): 8 díxitos, incluídos os ceros á esquerda, e unha letra de control en maiúscula calculada a partir do número (DNI-1, DNI-2). Moita xente escríbeo sen os ceros iniciais, ou con puntos e un guión; a biblioteca acepta as dúas cousas e devolve a forma canónica para que a garde:
import { validate } from "nif-dni-nie-cif-validation";
validate("1234567L").normalized; // "01234567L": engádese de novo o cero inicialvalidate("12.345.678-z").normalized; // "12345678Z"NIE: persoas estranxeiras
Sección titulada «NIE: persoas estranxeiras»As persoas estranxeiras reciben un NIE (número de identidade de estranxeiro): X, Y ou Z, 7 díxitos e unha letra de control (NIE-1). Primeiro usouse a serie X; cando se esgotou, seguiu a Y, e despois a Z.
Ata 2008, os NIE tiñan 10 caracteres: unha X, 8 díxitos e unha letra. Eses números seguen sendo válidos, e a súa forma canónica elimina o cero que segue á X (NIE-3):
import { isValidNie, validate } from "nif-dni-nie-cif-validation";
isValidNie("X01234567L"); // true: a forma antiga de 10 caracteresvalidate("X01234567L").normalized; // "X1234567L"isValidNie("X11234567L"); // false: só se pode suprimir un 0 inicialNIF K/L/M: persoas sen DNI nin NIE
Sección titulada «NIF K/L/M: persoas sen DNI nin NIE»Algunhas persoas físicas necesitan un NIF pero non teñen DNI nin NIE. Reciben un NIF que comeza por unha letra (KLM-1):
- K: españois menores de 14 anos residentes en España que non teñen DNI.
- L: españois residentes no estranxeiro que non teñen DNI.
- M: persoas estranxeiras que non teñen NIE (por exemplo, mentres se tramita; un NIF M pode ser temporal).
Son persoas, non empresas. isValidDni() e isValidNaturalPersonNif() acéptanos, e validate() identifícaos como "NIF_KLM":
import { isValidCif, isValidDni, validate } from "nif-dni-nie-cif-validation";
isValidDni("K1234567L"); // trueisValidCif("K1234567L"); // false: K non é unha clave de entidadevalidate("M1234567L").type; // "NIF_KLM"CIF: empresas e outras entidades
Sección titulada «CIF: empresas e outras entidades»As empresas, as asociacións, os organismos públicos e as demais entidades teñen un NIF que comeza por unha clave de entidade, unha letra que indica que tipo de entidade é, seguida de 7 díxitos e un carácter de control (CIF-1, CIF-2).
Ata 2008, este número chamábase CIF (código de identificación fiscal). A Orde EHA/451/2008 cambioulle o nome: oficialmente agora é o «NIF de persoa xurídica ou entidade». Todo o mundo segue a buscar «CIF», así que a biblioteca mantén o nome (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 as 17 claves de entidade, co nome que a biblioteca lle dá a cada unha no idioma desta páxina e a clase de carácter de control que leva cada clave (CIF-3):
| Clave | Tipo de entidade | Carácter de control |
|---|---|---|
A | Sociedade anónima | un díxito |
B | Sociedade de responsabilidade limitada | un díxito |
C | Sociedade colectiva | un díxito |
D | Sociedade comanditaria | un díxito |
E | Comunidade de bens, herdanza xacente ou outra entidade carente de personalidade xurídica non incluída expresamente noutras claves | un díxito |
F | Sociedade cooperativa | un díxito |
G | Asociación | un díxito |
H | Comunidade de propietarios en réxime de propiedade horizontal | un díxito |
J | Sociedade civil | un díxito |
N | Entidade estranxeira | unha letra |
P | Corporación local | unha letra |
Q | Organismo público | unha letra |
R | Congregación ou institución relixiosa | unha letra |
S | Órgano da Administración do Estado ou dunha comunidade autónoma | unha letra |
U | Unión temporal de empresas | un díxito |
V | Outro tipo non definido no resto de claves | un díxito |
W | Establecemento permanente dunha entidade non residente en territorio español | unha letra |
Desde 2008, os 7 díxitos son aleatorios: xa non din nada da provincia, así que a biblioteca non comproba códigos de provincia (CIF-5).
NIF-IVE
Sección titulada «NIF-IVE»Un NIF-IVE español, que se usa nas operacións intracomunitarias, é ES seguido do NIF (VAT-1). isValidSpanishVat() comproba ese formato; validate() só acepta o prefixo se o pide:
import { isValidSpanishVat, validate } from "nif-dni-nie-cif-validation";
isValidSpanishVat("ES12345678Z"); // truevalidate("ES12345678Z").error?.code; // "INVALID_FORMAT"validate("ES12345678Z", { allowVatPrefix: true }).normalized; // "12345678Z"O que non é un NIF
Sección titulada «O que non é un NIF»Algunhas regras que atopará en internet non teñen fonte oficial, e a biblioteca non as aplica. Un número que comeza por T non é un NIF, un CIF que comeza por 00 non necesita unha letra e os díxitos do CIF non levan código de provincia. As preguntas frecuentes explican cada caso, e as fontes oficiais enuméranos.