El Número de Identificación Fiscal (NIF)[nota 1] es la manera de identificación tributaria utilizada en España para las personas físicas (con documento nacional de identidad (DNI) o número de identificación de extranjero (NIE) asignados por el Ministerio del Interior) y las personas jurídicas.[2][cita requerida] El antecedente del NIF es el CIF, utilizado en personas jurídicas. El Real Decreto 338/1990, de 9 de marzo, regula la composición y la forma de uso del NIF, hasta la entrada en vigor en enero de 2008 del Real Decreto 1065/2007, de 27 de julio.
Dependiendo de si se trata de una persona física o jurídica se tiene:[3]
NIF de personas físicas
El formato del NIF consiste básicamente en ocho números más un código de control (letra) para españoles con DNI, o bien en una letra, siete números y un código de control (letra) para el resto de personas físicas:[4][5]
Tipo |
Formato |
Comentario
|
DNI |
8 números + letra de control |
Nacionales con documento nacional de identidad (DNI) asignado por el Ministerio del Interior
|
NIF K |
K + 7 números + letra de control |
Nacionales menores de 14 años que carezcan de DNI. Anterior a la entrada en vigor de la Orden EHA/451/2008 el 1 de julio de 2008 también se incluían los extranjeros menores de 18 años que carecían de NIE (para los menores de la edad indicada no es obligatorio que tengan documentación de identidad, pero pueden solicitar un NIF si lo necesitan), esta Orden separa las claves de españoles y extranjeros, de forma que los extranjeros sin NIE transitoria o definitivamente pueden solicitar un NIF M.
|
NIF L |
L + 7 números + letra de control |
Nacionales mayores de 14 años residentes en el extranjero y que no tengan DNI que se trasladan a España por un tiempo inferior a seis meses.
|
NIF M |
M + 7 números + letra de control |
Extranjeros sin NIE, de forma transitoria por estar obligados a tenerlo o bien de forma definitiva al no estar obligados a ello. Anterior a la entrada en vigor de la Orden EHA/451/2008 el 1 de julio de 2008 solo se incluían los extranjeros sin NIE miembros de embajadas, consulados u organismos internacionales y que estuvieran acreditados en España (no están obligados a disponer de NIE).
|
NIE X |
X + 7 números + letra de control |
Extranjeros residentes en España e identificados por la Policía con un número de identidad de extranjero (NIE), asignado hasta el 15 de julio de 2008. Los NIE, según la Orden de 7 de febrero de 1997, inicialmente constaban de X + 8 números + dígito de control, la Orden INT/2058/2008 redujo de 8 a 7 los números para que tuvieran la misma longitud que los NIF y CIF, y añadió las claves Y y Z antes de que se asignaran 9999999 NIE X y desbordara la capacidad de los 7 dígitos, pero esta Orden mantiene la validez de los NIE X de 8 dígitos anteriores ya asignados.
|
NIE Y |
Y + 7 números + letra de control |
Extranjeros residentes en España e identificados por la Policía con un NIE, asignado desde el 16 de julio de 2008 (Orden INT/2058/2008, BOE del 15 de julio).
|
NIE Z |
Z + 7 números + letra de control |
Letra reservada para extranjeros identificados por la Policía, para cuando se agoten los 'NIE Y'.
|
NIF de Personas jurídicas y entidades en general
El formato consiste en una letra según la naturaleza jurídica de la entidad, 7 números y un código de control, que según la naturaleza jurídica de la entidad es un número o una letra. La letra inicial según la naturaleza jurídica es:[6]
Desde la Orden EHA/451/2008, los NIF de las personas jurídicas y entidades extranjeras (claves N y W) tienen claves separadas de las españolas, anteriormente había claves compartidas y las entidades extranjeras se distinguían por tener el código de control con letra mientras que las entidades españolas lo tenían con número. Solo las claves P, Q, R y S han mantenido desde que se crearon el código de control con letra, a pesar de corresponder a organismos públicos españoles.
Características
El código de control del NIF, sirve como código de garantía de seguridad. Su fundamento es el siguiente: de acuerdo al número de identificación, puede establecerse un modo por el cual saber si este número es correcto, o se trata de una falsificación.
Para saber si el número es correcto, el último carácter del NIF es un código de control que se obtiene a partir de los caracteres anteriores. En caso de que el código de control especificado no coincida con el que se obtiene de los caracteres anteriores, se trataría de un número no válido.
Si por error se introduce mal uno de los caracteres del NIF, el resultado del código de control será distinto y no coincidirá. Esto sirve para verificar que el número introducido es correcto.
Código de control para números de DNI o NIE
El código de control se obtiene a partir del número completo del DNI (8 cifras) o el NIE (letra X, Y o Z seguido de 7 cifras) y dividiéndolo entre 23. En el caso del NIE se sustituye la primera letra por un 0, un 1 o un 2, según sea X, Y o Z respectivamente. Al resto resultante de dicha división, que deberá estar comprendido entre 0 y 22, se le asigna la letra de control según la equivalencia siguiente:
resto de la división -> |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22
|
código de control -> |
T |
R |
W |
A |
G |
M |
Y |
F |
P |
D |
X |
B |
N |
J |
Z |
S |
Q |
V |
H |
L |
C |
K |
E
|
No se utilizan las letras: I, Ñ, O, U. La I y la O se descartan para evitar confusiones con otros caracteres, como 1, l o 0. La Ñ se descarta para evitar confusiones con la N.
Algoritmo de ejemplo (Java):
public static boolean isNifNumValid(String nif){
//Si el largo del NIF es diferente a 9, acaba el método.
if (nif.length()!=9){
return false;
}
String secuenciaLetrasNIF = "TRWAGMYFPDXBNJZSQVHLCKE";
nif = nif.toUpperCase();
//Posición inicial: 0 (primero en la cadena de texto).
//Longitud: cadena de texto menos última posición. Así obtenemos solo el número.
String numeroNIF = nif.substring(0, nif.length()-1);
//Si es un NIE reemplazamos letra inicial por su valor numérico.
numeroNIF = numeroNIF.replace("X", "0").replace("Y", "1").replace("Z", "2");
//Obtenemos la letra con un char que nos servirá también para el índice de las secuenciaLetrasNIF
char letraNIF = nif.charAt(8);
int i = Integer.parseInt(numeroNIF) % 23;
return letraNIF == secuenciaLetrasNIF.charAt(i);
}
Algoritmo PHP:
function nif_valido($nif) {
$nif = strtoupper($nif);
$nifRegEx = '/^[0-9]{8}[A-Z]$/';
$letras = "TRWAGMYFPDXBNJZSQVHLCKE";
if (preg_match($nifRegEx, $nif)) return ($letras[(substr($nif, 0, 8) % 23)] == $nif[8]);
else return false;
}
Algoritmo javaScript
// método para la clase String que indica si la cadena se corresponde con un nif para españoles válido o no. 8 cifras y letra mayúscula
String.prototype.isNif=function()
{
return /^(\d{8})([A-HJ-NP-TV-Z])$/.test(this) && ("TRWAGMYFPDXBNJZSQVHLCKE"[(RegExp.$1%23)]==RegExp.$2);
};
// ejemplo de uso
alert("12341234H".isNif()); // devolverá false
alert("00000000T".isNif()); // devolverá true
Algoritmo Python3
import sys
num = int(input("Introduzca su DNI: "))
secuenciaLetrasNIF = "TRWAGMYFPDXBNJZSQVHLCKE"
letra = num % 23
num_letra = secuenciaLetrasNIF[letra]
print(f"Su NIF es: {num}{num_letra}")
Algoritmo C
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main() {
int num, letra;
char num_letra;
char secuenciaLetrasNIF[30];
printf("Introduzca su DNI: ");
scanf("%d",&num);
strcpy(secuenciaLetrasNIF,"TRWAGMYFPDXBNJZSQVHLCKE");
letra = num % 23;
num_letra = secuenciaLetrasNIF[letra];
printf("Su NIF es: %d%c", num,num_letra);
getch();
return 0;
}
Código de control para otros NIF
En el caso de NIF que no son obtenidos a partir del DNI o NIE, el código de control se obtiene utilizando el número de 7 cifras, excluyendo la letra inicial y la letra o cifra final, puesto que es la que vamos a validar.
Procedimiento:
- Se suman las posiciones pares de los 7 dígitos centrales, es decir, no se tiene en cuenta la letra inicial ni el código de control. (Suma = A)
- Por cada uno de los dígitos de las posiciones impares, se multiplica el dígito por 2 y se suman las cifras del resultado, pero si el resultado tiene un solo dígito simplemente esta cifra se suma. (p.e. si el dígito es 6, el resultado sería 6 x 2 = 12 -> 1 + 2 = 3, más si el dígito es 2, el resultado sería 2 x 2 = 4). (Suma = B)
- Sumar el resultado de los 2 pasos anteriores. (A + B = C)
- El último dígito de la suma anterior (C) se lo restamos a 10, cuyo resultado sería el código de control (p.e. si C = 14, el último dígito es 4, por lo que tendríamos 10 - 4 = 6). Si el último dígito de la suma del paso anterior es 0 (p.e. C = 30), no se realiza resta y se toma el 0 como código de control.
Si el código de control es un número, este sería el resultado de la última operación. Si se trata de una letra, se utilizaría la siguiente relación:
número obtenido -> |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
0
|
código de control -> |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J
|
Véase también
Notas
- ↑ Las siglas NIF son las utilizadas actualmente. Las siglas CIF (Código de Identificación Fiscal) se usaron hasta 2008 para referirse al número otorgado a personas jurídicas para diferenciarlas de las siglas NIF, que se utilizaban para personas físicas. Después de ese año, se eliminó esa distinción y ahora NIF se utiliza tanto para personas físicas como para personas jurídicas.[1]
Referencias
Enlaces externos