Letra de control del NIE
A X1234567 le corresponde la letra de control L, así que el NIE completo es X1234567L. Escriba el prefijo y los siete dígitos para completar el número de un extranjero, o pegue un NIE entero para revisar su letra antes de un contrato o una nómina. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Número
- X1234567
- Modo de cálculo
- Compute
- Entrada
- X1234567
- Prefijo
- X
- Dígito de prefijo
- 0
El NIE español (Número de Identidad de Extranjero) es el identificador de extranjeros usado en fiscalidad, banca, empleo y residencia en España. A diferencia de una cadena solo numérica, cada NIE empieza por X, Y o Z, continúa con siete dígitos y termina con una letra de control que demuestra que el cuerpo se escribió o almacenó sin un error habitual. Esta capacidad implementa el mapeo oficial y la regla mod-23 compartida con las letras de control del DNI: sustituya 0 por X, 1 por Y o 2 por Z, trate el resultado como entero de ocho dígitos, tome ese entero módulo 23 y busque la letra en la tabla fija TRWAGMYFPDXBNJZSQVHLCKE. Use el modo compute cuando solo disponga del prefijo y los siete dígitos y necesite la letra final correcta para un formulario o una importación de datos maestros; use el modo validate cuando un socio, un CRM o un usuario envíe un NIE completo y necesite un indicador valid claro más la letra de control esperada para mensajes de error.
Cómo se calcula la letra de control del NIE español
Un NIE español tiene siempre nueve caracteres cuando se escribe sin espacios ni guiones: una letra inicial del conjunto X, Y, Z; siete dígitos decimales; y una letra de control final de la A a la Z (no aparecen todas las letras: la tabla tiene veintitrés posiciones). La letra inicial no es decorativa. Históricamente X, Y y Z marcan tramos sucesivos de números asignados a residentes extranjeros; para la fórmula de la letra de control se reescriben como dígitos a fin de reutilizar la misma tabla del DNI.
Mapee X a cero, Y a uno y Z a dos, y concatene ese dígito con los siete caracteres numéricos para formar una cadena de ocho dígitos como 01234567 para el cuerpo clásico X1234567. Interprete esa cadena como entero (los ceros a la izquierda no cambian el valor modular) y calcule el resto al dividir por veintitrés.
Indexe en la secuencia oficial T, R, W, A, G, M, Y, F, P, D, X, B, N, J, Z, S, Q, V, H, L, C, K, E usando ese resto como índice basado en cero. La letra en ese índice es la única letra de control válida para ese cuerpo. Ejemplo: X1234567 se mapea a 01234567, resto diecinueve, letra de control L, NIE completo X1234567L.
El algoritmo es determinista y local: sin llamada de red al gobierno español, sin consulta a un registro y sin reloj. Esta herramienta no confirma que una persona tenga una tarjeta de residencia activa, no expande códigos provinciales y no afirma que una suma de control válida implique autorización del NIE para un régimen fiscal concreto: solo demuestra que la letra final es coherente con la regla oficial mod-23.
Dónde encajan las comprobaciones de la letra del NIE en flujos reales
Los equipos de RR. HH. y nómina incorporan empleados no españoles y deben adjuntar la letra de control del NIE correcta antes de escribir el identificador en contratos, declaraciones de la seguridad social o ficheros de pago bancario que rechazan identificadores fiscales inválidos. Los formularios de alta inmobiliarios, bancarios y de telecomunicaciones validan un NIE completo de nueve caracteres al crear la cuenta para que una sola letra mal escrita no genere un cliente fantasma ni un desajuste de cumplimiento.
Los trabajos de calidad de datos recorren cada columna NIE en una exportación de CRM o ERP, llaman al modo validate y ponen en cuarentena las filas donde valid es false, capturando tanto ediciones humanas como errores de generadores que confunden cuerpos solo numéricos del DNI con las reglas de prefijo del NIE.
No trate una letra de NIE correcta como prueba de residencia activa ante las autoridades españolas ni de un permiso de trabajo concreto; solo demuestra que la letra de control es coherente con el cuerpo de ocho dígitos mapeado según la tabla estándar mod-23.
Qué puede hacer con ella
Auditar columnas NIE en exportaciones de CRM y ERP
Valide por lotes cada NIE español de un fichero de clientes o empleados y ponga en cuarentena las filas cuya letra de control ya no coincida con el valor esperado recalculado.
Preguntas frecuentes
¿Qué es la letra de control de un NIE español?
Es el último carácter de un NIE de nueve caracteres. Tras mapear la X, Y o Z inicial a 0, 1 o 2, el valor de ocho dígitos módulo 23 indexa la tabla oficial TRWAGMYFPDXBNJZSQVHLCKE para obtener esa letra.
¿Qué ocurre con longitud incorrecta, prefijo erróneo o puntuación?
Un NIE bien formado con letra incorrecta devuelve valid false en modo validate. Las tareas de validación fallidas no se facturan.
¿Es gratuita la herramienta de letra de control del NIE español?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Cómo se calcula la letra de control del NIE?
Se cambia la X por 0, la Y por 1 o la Z por 2, se divide el número de ocho cifras entre 23 y el resto indica la letra en la tabla TRWAGMYFPDXBNJZSQVHLCKE. Para X1234567 el resto es 19 y la letra, L.
¿La letra del NIE se calcula igual que la del DNI?
Sí, usa la misma tabla de 23 letras y la misma división que el DNI español. La única diferencia es que la letra inicial X, Y o Z se convierte antes en 0, 1 o 2.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/enc/nie-spain \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"X1234567"}'const res = await fetch("https://api.kit.forhosting.com/enc/nie-spain", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "X1234567"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/nie-spain",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "X1234567"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/nie-spain", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"X1234567"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"X1234567"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/nie-spain", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"number": "X1234567"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.nie_spain",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La entrada malformada falla con invalid_input en lugar de un recorte silencioso, de modo que nunca almacene un identificador de extranjero a medias. La misma aritmética pura se ejecuta gratis en el navegador y al precio publicado de la API.
Contrato de entrada, modos y comportamiento ante errores
Envíe un campo number con el cuerpo del NIE. Una longitud incorrecta es un error explícito que nombra el modo y la longitud enviada —ocho para compute, nueve para validate— para que los formularios del cliente muestren un mensaje preciso sin adivinar. Cadenas vacías, number ausente, valores de mode inválidos, prefijos distintos de X Y Z, tramos centrales no numéricos y finales que no son letra fallan antes de confiar en cualquier resultado modular para el almacenamiento y no se facturan. Prefiera compute cuando complete identificadores de extranjeros para formularios; prefiera validate cuando condicione una búsqueda o importación a un NIE completo procedente de un usuario o de un fichero de socio. Se eliminan espacios y guiones para que formas habituales como X-1234567-L sigan parseándose; puntos, barras y otra puntuación se rechazan como entrada malformada con invalid_input, de modo que un valor limpiado en silencio nunca llegue al almacenamiento. El modo compute es el predeterminado: el motor exige exactamente ocho caracteres tras la normalización —prefijo X, Y o Z más siete dígitos— y devuelve control_letter, la cadena nie completa con la letra añadida, prefix_digit (0, 1 o 2), mapped_number y remainder. El modo validate exige exactamente nueve caracteres incluida la letra de control final; la respuesta indica valid true cuando esa letra coincide con expected_control_letter recalculada, y valid false cuando el cuerpo está bien formado pero la letra es incorrecta. Validate siempre devuelve el control_letter dado, expected_control_letter, prefix, digits, mapped_number, remainder y el nie corregido construido con la letra esperada. Se aceptan alias como nie, text, value, code, id y n para el mismo campo de carga útil, de modo que las integraciones que ya hablan de nie no necesiten renombrarlo. Como la ruta es parse puro sin reloj, fuente aleatoria ni red, el mismo cuerpo JSON produce siempre el mismo resultado JSON en la herramienta gratuita del navegador y en la API a $0.002 por solicitud correcta.
Dónde encajan las comprobaciones de la letra del NIE en flujos reales
Las plataformas de inmigración y reubicación recalculan expected_control_letter y muestran una corrección amable cuando un solicitante pega un número con un carácter final incorrecto. En todo flujo el contrato es el mismo: mapeo oficial de prefijo, longitud fija por modo, JSON estructurado que puede probarse con goldens, comportamiento idéntico en navegador gratuito y API de prepago, e invalid_input honesto cuando la cadena no es un NIE español bien formado.
Casos de integración
Completar un cuerpo de NIE para nómina y contratos
Llame al modo compute con X/Y/Z más siete dígitos, almacene el nie devuelto con control_letter y alimente el identificador completo en sistemas de RR. HH., fiscalidad o banca.
Validar NIE completos tecleados o importados a la entrada
Cuando un formulario o un CSV envíe nueve caracteres, llame al modo validate y bloquee el guardado si valid es false, mostrando expected_control_letter para ayudar a corregir un solo error de tecleo.
Preguntas técnicas
¿Cómo calculo la letra de control del NIE español con esta API?
Haga POST con number igual al prefijo más siete dígitos (por ejemplo X1234567) y mode compute (u omita mode). La respuesta incluye control_letter, nie (nueve caracteres completos), prefix_digit, mapped_number y remainder.
¿Cómo valido un NIE español completo?
Haga POST con el NIE de nueve caracteres y mode validate. La respuesta incluye valid, control_letter (la dada), expected_control_letter, prefix, digits, mapped_number, remainder y nie construido con la letra esperada.