Número de identificación fiscal
El Número de Identificación Fiscal (NIF) 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. 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.

Formato del NIF 
Dependiendo de si se trata de una persona física o jurídica tenemos:

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:

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:

{|class="wikitable" border="1"
! Letra !! Naturaleza jurídica !! Código de control
|-
| A || Sociedades anónimas || Número
|-
| B || Sociedades de responsabilidad limitada || Número
|-
| C || Sociedades colectivas || Número
|-
| D || Sociedades comanditarias || Número
|-
| E || Comunidades de bienes || Número
|-
| F || Sociedades cooperativas || Número
|-
| G || Asociaciones y Fundaciones || Número
|-
| H || Comunidades de propietarios en régimen de propiedad horizontal || Número
|-
| J || Sociedades civiles, con o sin personalidad jurídica || Número
|-
| N || Entidades extranjeras || Letra
|-
| P || Corporaciones Locales || Letra
|-
| Q || Organismos públicos || Letra
|-
| R || Congregaciones e instituciones religiosas || Letra
|-
| S || Órganos de la Administración General del Estado y de las comunidades autónomas || Letra
|-
| U || Uniones Temporales de Empresas || Número
|-
| V || Otros tipos no definidos en el resto de claves || Número
|-
| W || Establecimientos permanentes de entidades no residentes en España || Letra
|}

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:

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á trueAlgoritmo Python3import 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:

Véase también 
 Código de identificación fiscal (CIF)
 Documento nacional de Identidad (DNI)
 Número de Identificación de Extranjeros (NIE)
 Código cuenta cliente (CCC)

Notas

Referencias

Enlaces externos 

 Real Decreto 1065/2007, de 27 de julio (Entrada en vigor el 1 de enero de 2008.) (BOE)
 Real Decreto 338/1990, de 9 de marzo. Por el que se regula la composición y la forma de utilización del número de identificación fiscal. (Derogado con efectos desde el 1 de enero de 2008 por el Real Decreto 1065/2007, de 27 de julio) (BOE)
 Real Decreto 1041/2003. (Derogado con efectos desde el 1 de enero de 2008 por el Real Decreto 1065/2007, de 27 de julio).
 Orden EHA/451/2008, de 20 de febrero, por la que se regula la composición del número de identificación fiscal de las personas jurídicas y entidades sin personalidad jurídica.
 NIF y NIE.

Derecho tributario de España
Identificadores