Dígito verificador CURP México
Escriba HEGG560427MVZRRL0 y obtendrá el dígito verificador 4, de modo que la CURP completa es HEGG560427MVZRRL04; o pegue los 18 caracteres para ver si el último dígito coincide. Útil en nóminas, inscripciones escolares y altas bancarias. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- CURP
- HEGG560427MVZRRL0
- Modo de cálculo
- Compute
- Entrada
- HEGG560427MVZRRL0
- Dígito de control
- 4
- CURP
- HEGG560427MVZRRL04
La CURP mexicana (Clave Única de Registro de Población) es un identificador personal de dieciocho caracteres usado en banca, nómina, salud, educación y trámites oficiales en México. Diecisiete caracteres codifican nombre, fecha de nacimiento, sexo, entidad y homoclave; el decimoctavo es un dígito verificador derivado de una tabla de valores fija, de modo que un error de tipeo o una cadena alterada falle en lugar de parecer otro registro válido. Esta capacidad calcula ese dígito a partir de una base de diecisiete caracteres, o valida una CURP completa de dieciocho y reporta si el dígito almacenado coincide con el valor recalculado.
Cómo se calcula el dígito verificador de la CURP mexicana
Una CURP tiene siempre dieciocho caracteres alfanuméricos cuando se escribe sin puntuación. Los primeros diecisiete forman la clave base; el decimoctavo es el dígito verificador. Cada carácter se asocia a un entero de cero a treinta y seis según el diccionario oficial: dígitos del cero al nueve, luego letras de la A a la N, luego Ñ, y de la O a la Z.
En cada posición i de cero a dieciséis, el valor del carácter se multiplica por el peso dieciocho menos i, de modo que el primero pesa diecisiete y el decimoséptimo pesa uno. Esos productos se suman, la suma se reduce módulo diez y el dígito verificador es diez menos ese resto — o cero cuando el resto ya es cero (equivalente a que diez menos el resto sería diez).
La validación es la inversa: se recalcula el dígito con los primeros diecisiete caracteres y se compara con el último, que debe ser un dígito decimal. *.
Dónde encaja el dígito CURP en flujos de producto reales
Los flujos de alta de fintech y marketplaces mexicanos piden la CURP pronto; validar el dígito al salir del campo reduce envíos fallidos y tickets de soporte sin llamar a RENAPO en cada pulsación. Los sistemas de nómina y RR. HH. importan CSV de empleados y deben poner en cuarentena filas cuyo decimoctavo carácter ya no coincida, lo que captura tanto ediciones humanas como errores de generadores previos.
No trate un dígito correcto como prueba de que la persona existe en RENAPO ni de que el documento está activo: solo demuestra que la cadena de dieciocho caracteres es aritméticamente correcta bajo la regla oficial de la CURP, el mismo criterio de honestidad que aplica a cualquier herramienta de suma de control de identificadores nacionales.
Qué puede hacer con ella
Auditar columnas CURP en exportaciones masivas
Valide por lotes cada CURP de un CSV de nómina o un extracto ERP y ponga en cuarentena las filas cuyo dígito verificador ya no coincida con el valor recalculado.
Preguntas frecuentes
¿Qué es el dígito verificador de la CURP mexicana?
Es el decimoctavo carácter de una CURP, calculado a partir de los primeros diecisiete con la tabla oficial de valores 0–36 y pesos de 18 a 2, de modo que un error de un carácter y muchas cadenas corruptas fallen con más probabilidad que parecer otro registro.
¿Qué ocurre con espacios, guiones o longitudes incorrectas?
Las tareas de validación fallidas no se facturan. Quite el formato en su cliente antes de llamar.
¿Es gratuita la herramienta de dígito verificador CURP México?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Qué codifican los 17 primeros caracteres de la CURP?
Se forman a partir del nombre, la fecha de nacimiento, el sexo y el estado de la persona, seguidos de una homoclave. Solo el carácter dieciocho es un dígito verificador, calculado a partir de esos diecisiete.
¿Por qué importa la letra Ñ en el cálculo?
Cada carácter recibe un valor del 0 al 36 en el orden oficial: cifras del 0 al 9, letras de la A a la N, luego la Ñ y después de la O a la Z. Si se omitiera la Ñ, cambiaría el valor de todas las letras posteriores.
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/curp-mexico \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"curp":"HEGG560427MVZRRL0"}'const res = await fetch("https://api.kit.forhosting.com/enc/curp-mexico", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"curp": "HEGG560427MVZRRL0"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/curp-mexico",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"curp": "HEGG560427MVZRRL0"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/curp-mexico", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"curp":"HEGG560427MVZRRL0"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"curp":"HEGG560427MVZRRL0"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/curp-mexico", 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
{
"curp": "HEGG560427MVZRRL0"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.curp_mexico",
"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
Caracteres no válidos, longitudes incorrectas y entradas vacías se rechazan con un error invalid_input claro. Ejecútela gratis en el navegador o llame a la API del KIT; ambas rutas comparten la misma aritmética pura, sin red ni padrones de personas vivas.
Cómo se calcula el dígito verificador de la CURP mexicana
Como el algoritmo es aritmética modular entera con tabla fija, los mismos diecisiete caracteres siempre producen el mismo dígito en cualquier plataforma — navegador, Worker o arnés offline — y por eso la capacidad se publica como motor parse de nivel A y no como llamada a un modelo.
Cómo calcular el dígito o validar una CURP completa
Envíe un campo curp que contenga solo letras A–Z, la letra Ñ y dígitos del cero al nueve. El modo validate espera exactamente dieciocho caracteres. Esa forma facilita mostrar «usted escribió X, se esperaba Y» en un flujo KYC o de alta sin una segunda petición. Cadenas vacías, curp ausente, modos inválidos y longitudes incorrectas (por ejemplo dieciséis o diecinueve) fallan antes de cualquier suma ponderada y no se facturan. Espacios, guiones, puntos y otra puntuación se rechazan como entrada no CURP con invalid_input, para que un formulario no acepte un valor limpiado en silencio: quite el formato en su cliente si el usuario pega una cadena con espacios o guiones. El modo compute es el predeterminado: proporcione exactamente diecisiete caracteres base; el motor devuelve check_digit como un solo carácter, curp como el código completo de dieciocho y length dieciocho. La respuesta marca valid en true solo cuando el dígito final coincide con expected_check_digit recalculado; siempre incluye base (los primeros diecisiete), check_digit tal como se envió, expected_check_digit y la curp canónica formada con base más el dígito esperado. Como la ruta es parse puro, sin reloj, aleatoriedad ni red, la misma entrada produce el mismo JSON en la herramienta gratuita del navegador y en la API. A $0.002 por solicitud exitosa puede proteger importaciones CRM masivas, auditorías de archivos de socios y puertas de formulario sin negociar un nivel a medida.
Dónde encaja el dígito CURP en flujos de producto reales
Portales de salud y matrícula escolar que aceptan CURP como clave ciudadana pueden bloquear el avance hasta que valid sea true y mostrar expected_check_digit cuando el dígito sea incorrecto. Los trabajos de calidad de datos recalculan expected_check_digit en cada columna CURP de una exportación y marcan desajustes antes de facturación o reporte fiscal.
Casos de integración
Completar diecisiete caracteres base para fixtures y formularios
Tome una base de diecisiete caracteres de un plan de pruebas o un registro parcial, llame al modo compute y almacene o muestre la curp completa de dieciocho con el dígito verificador añadido.
Validar CURP tecleadas o importadas al ingresar
Cuando un formulario de alta, una importación CRM o una API de socio envíe dieciocho caracteres, llame al modo validate y bloquee el almacenamiento si valid es false, mostrando expected_check_digit para corregir un error de tipeo.
Preguntas técnicas
¿Cómo calculo un dígito verificador CURP con esta API?
Haga POST con curp de exactamente diecisiete caracteres y mode compute (u omita mode). La respuesta incluye check_digit y curp (el código completo de dieciocho caracteres).
¿Cómo valido una CURP completa de dieciocho caracteres?
Haga POST con la cadena de dieciocho caracteres y mode validate. La respuesta incluye valid, check_digit, expected_check_digit, base y la curp canónica.