RENAPO · Validar CURP

Validar un CURP, del formato al registro oficial.

Prueba gratis la validación estructural aquí mismo. Cuando necesites el estatus real en RENAPO —a quién pertenece, si está vigente o dada de baja— el API responde en 298 ms (mediana medida en producción).

298 ms de mediana, medidoestatus oficial RENAPOcero retención
valida-un-curpGRATIS · EN TU NAVEGADOR

Validación estructural con el algoritmo oficial del dígito verificador — corre en tu navegador, no enviamos tu CURP a ningún servidor. El estatus en RENAPO lo responde el API.

La respuesta del API

No solo "válido o inválido": el estatus oficial completo.

Una validación contra RENAPO regresa el registro del titular y el estatus exacto del documento. Ahí vive la detección de fraude: una CURP puede tener formato perfecto y pertenecer a una persona fallecida.

Activos
ANAlta normalVigente y al corriente. El caso feliz.type: "SUCCESS"
AHAlta con homonimiaLos primeros 16 caracteres coinciden con otra CURP.type: "CURP_HOMONYMY"
RCCRegistro con correcciónUna corrección de datos modificó la clave.type: "SUCCESS"
RCNRegistro con notaCorrección menor de datos.type: "SUCCESS"
Inactivos
BDBaja por defunciónEl titular falleció — alerta máxima antes de otorgar un crédito.type: "CURP_DECEASED"
BAPDocumento apócrifoBaja por documento probatorio falso.type: "CURP_APOCRYPHAL"
BJDBaja judicial definitivaDada de baja por orden de un juez.type: "CURP_JUDICIAL_SUSPENSION"
BSUSin usoExiste pero nunca se ha usado — inactiva; se reactiva en un módulo RENAPO.type: "CURP_INACTIVE"
BDMDefunción (manual)Baja por defunción registrada manualmente.type: "CURP_DECEASED"
BDPDefunción presuntaBaja por defunción presunta (sin acta confirmada).type: "CURP_DECEASED"

Y no tienes que interpretar códigos: el envelope nombra el caso en el campo type. Las tres variantes de defunción (BD, BDM, BDP) llegan como un solo CURP_DECEASED; los registros vigentes y sus correcciones, como SUCCESS. Tu código es un switch sobre type — no un catálogo de claves de RENAPO que memorizar.

Además del estatus: nombres, sexo, fecha y entidad de nacimiento, datos de registro y —con generateRfc: true— el RFC de 13 caracteres en la misma llamada. ¿Necesitas la constancia oficial? Ese es otro servicio del mismo catálogo: la CURP certificada en PDF, con sus datos ya parseados — misma API, mismo envelope, otro endpoint.

Infraestructura cruda · 100% API REST

Una llamada. Datos siempre en vivo.

Consultamos la fuente oficial en el 100% de las llamadas, sin cache — y aun así la mediana es 298 ms (p95: 836 ms, medido en producción). Servir un cache sería más rápido; también sería darte el estatus de ayer.

Sin cache, sin copiasCada validación va a la fuente. Si una fuente falla, vamos por la siguiente —sin que lo notes.
Formato inválido = sin cobroUn CURP mal formado se rechaza con INVALID_REQUEST y billable: false — no gastas crédito en basura.
Cero retenciónLa consulta se valida, se responde y se descarta. Ni base de datos, ni logs.

Telemetría de producción de Validar CURP — 8 de julio de 2026, últimos 85 runs: mediana (p50) 298 ms · p95 836 ms, consultando RENAPO en vivo en cada llamada.

valida-curp
import { OrigoidApiClient } from "@origoid/sdk";

const client = new OrigoidApiClient({ apiKey: process.env.ORIGOID_API_KEY });

const result = await client.renapo.validateCurp({
  curp: "TEST900101HDFRRN09",
  generateRfc: true,
});
from origoid import OrigoID

client = OrigoID(api_key=os.environ["ORIGOID_API_KEY"])

result = client.renapo.validate_curp(
    curp="TEST900101HDFRRN09",
    generate_rfc=True,
)
import (
  sdkgo "github.com/origoid/sdk-go"
  "github.com/origoid/sdk-go/client"
  "github.com/origoid/sdk-go/option"
)

c := client.NewClient(option.WithAPIKey(os.Getenv("ORIGOID_API_KEY")))

result, err := c.Renapo.ValidateCurp(context.Background(), &sdkgo.ValidateCurpRequest{
  Curp:        "TEST900101HDFRRN09",
  GenerateRfc: sdkgo.Bool(true),
})
curl -X POST https://api.origoid.com/mex/renapo/v1/curp-validations \
  -H "x-api-key: $ORIGOID_API_KEY" \
  -H "content-type: application/json" \
  -d '{"curp": "TEST900101HDFRRN09", "generateRfc": true}'
Respuesta medida: p50 298 ms · p95 836 ms
{
  "status": "OK",
  "type": "SUCCESS",
  "message": "CURP found and validated",
  "data": {
    "personalInfo": { "givenNames": "JUAN", "rfc": "PELJ900101AB7",  },
    "documentDetails": { "curpStatus": "AN",  }
  },
  "billable": true
}
Por qué OrigoID

El dato oficial es el mismo. La diferencia es todo lo demás.

Varios proveedores validan CURP. Lo que cambia: cómo de fresco llega el dato, qué pasa con los datos de tu usuario después, y cuánto te cuesta integrarlo.

Datos siempre en vivoSin cache: el estatus es el de este momento. Y con fuentes redundantes — si una falla, vamos por la siguiente.
Cero retenciónGuardar consultas es la norma en la industria. Nosotros no: ni base de datos, ni logs. Se valida, se responde, se descarta.
{}
Un solo envelopeEl mismo JSON en CURP, INE, RFC, IMSS y más. Aprendes el contrato una vez.
$
Precios publicadosHasta $0.28 por validación según tu volumen — todos los planes públicos, sin "contáctanos" para saber cuánto cuesta. Ver precios
Preguntas frecuentes

Lo que suelen preguntarnos.

¿Cómo validar un CURP contra RENAPO?

Dos niveles: la validación estructural (formato, entidad, fecha y dígito verificador) se hace sin conexión — la demo de arriba la hace gratis en tu navegador. La validación real contra RENAPO — si existe, a quién pertenece y su estatus — la responde el API en milisegundos.

¿Qué estatus puede tener un CURP?

Cuatro activos — AN (alta normal), AH (alta con homonimia), RCC y RCN (correcciones de datos) — y seis inactivos: BD (defunción), BAP (documento apócrifo), BJD (baja judicial definitiva), BSU (sin uso — inactiva, reactivable) y BDM/BDP (defunción manual y presunta). El API regresa el estatus exacto y su type — las tres defunciones llegan como un solo CURP_DECEASED — una CURP con formato perfecto puede pertenecer a una persona fallecida, y eso solo lo sabes consultando el registro.

¿Puedo obtener el RFC desde el CURP?

Sí: envía generateRfc: true y la misma respuesta incluye el RFC de 13 caracteres. Una llamada, dos datos.

¿Y la constancia oficial en PDF?

Es otro servicio del catálogo: la CURP certificada — el PDF oficial de la constancia con sus datos ya parseados. Misma API y mismo envelope que Validar CURP, endpoint distinto: validar te dice el estatus; la constancia te entrega el documento.

¿Guardan los datos que valido?

No. Cada consulta se valida, se responde y se descarta: sin base de datos de consultas, sin rastro en logs.

¿Cuánto cuesta?

Empiezas gratis: créditos de cortesía para validar CURPs reales en producción, sin tarjeta. Después, 1 validación = 1 crédito, y el precio baja con tu volumen — hasta $0.28 por validación. Todos los planes están publicados, sin "contáctanos". Y el formato inválido no se cobra (billable: false).

Empieza gratis, sin tarjeta.

Créditos de cortesía para validar CURPs reales en producción. El acceso se habilita tras una breve validación de tu empresa.

Solicitar acceso