Publicado el 5 de mayo de 2026·6 min de lectura

RFC vs CURP en México: cuando usar cada uno

Si estas construyendo un producto para el mercado mexicano, tarde o temprano vas a necesitar trabajar con dos identificadores: el RFC y el CURP. Son similares en apariencia — ambos son cadenas alfanumericas derivadas del nombre y fecha de nacimiento de la persona — pero sirven propositos completamente distintos y son emitidos por autoridades diferentes. Esta guia explica la estructura de cada uno, cuando necesitas uno vs el otro, y como validarlos en produccion.

RFC: el identificador fiscal

El RFC (Registro Federal de Contribuyentes) es emitido por el SAT (Servicio de Administración Tributaria) y es el identificador fiscal de México. Lo necesitas para emitir y recibir facturas (CFDI), declarar impuestos, abrir cuentas bancarias empresariales, y cualquier transaccion formal en el sistema tributario mexicano.

Estructura del RFC para persona fisica (individual): 4 letras derivadas del nombre y apellidos + 6 digitos de fecha de nacimiento (AAMMDD) + 3 caracteres de homoclave asignados por SAT. Total: 13 caracteres. Ejemplo: LOEM800101ABC. Para persona moral (empresa): 3 letras del nombre de la empresa + 6 digitos de fecha de constitucion (AAMMDD) + 3 caracteres de homoclave. Total: 12 caracteres. Ejemplo: SAT901114Q28. La homoclave la asigna el SAT — no se puede calcular de forma independiente sin el algoritmo completo del registro, aunque algunos sistemas lo intentan aproximar.

CURP: el identificador de identidad civil

El CURP (Clave Única de Registro de Población) es emitido por RENAPO (Registro Nacional de Población) y es el identificador de identidad civil de México, no un identificador fiscal. Tiene siempre 18 caracteres alfanumericos y se asigna a todas las personas nacidas o naturalizadas en México.

Estructura del CURP (siempre 18 caracteres): 4 letras del nombre (apellido paterno, apellido materno, primer nombre) + 6 digitos de fecha de nacimiento (AAMMDD) + 1 letra de sexo (H/M) + 2 letras del estado de nacimiento + 3 consonantes del nombre + 2 caracteres de diferenciadores + 1 digito verificador. Ejemplo: LOEM800101HDFLNS09. El digito verificador es calculado con un algoritmo propio de RENAPO.

Tabla comparativa

Las diferencias clave entre RFC y CURP:

  • Autoridad: RFC -> SAT (impuestos) | CURP -> RENAPO (identidad civil)
  • Propósito: RFC -> tributario, facturación | CURP -> identidad, gobierno
  • Personas físicas: RFC -> 13 chars | CURP -> 18 chars siempre
  • Personas morales: RFC -> 12 chars | CURP -> no aplica (solo personas físicas)
  • Extranjeros: RFC -> con o sin CURP | CURP -> con clave de estado XX para extranjeros
  • Obligatorio para facturar: RFC -> sí | CURP -> no
  • Obligatorio para trámites civiles: RFC -> no | CURP -> sí

Cuando necesitas el RFC vs el CURP

La regla es simple: si el flujo involucra impuestos, facturación, o el SAT — necesitas el RFC. Si el flujo involucra identidad civil, seguridad social, salud, o educacion — necesitas el CURP. En muchos sistemas gubernamentales y bancarios, se solicitan ambos.

  • Necesitas RFC: emitir CFDI (facturas electronicas), onboarding de clientes para cumplimiento fiscal, apertura de cuentas bancarias empresariales, nómina formal, declaraciones impositivas.
  • Necesitas CURP: verificación de identidad en seguro social (IMSS/ISSSTE), tramites de pasaporte, inscripción en instituciones educativas, acceso a programas de gobierno, identificación de empleados en nómina.
  • Necesitas ambos: apertura de cuentas bancarias personas fisicas, sistemas de nómina completos, KYC con verificación de identidad y fiscal, plataformas de trabajo formal.

Validar RFC y CURP con la API de Normadata

Podes validar tanto el RFC como el CURP con un endpoint consistente de la API de Normadata, pasando el tipo correspondiente en cada llamada.

Validar RFC (cURL)
curl -X POST https://api.normadata.io/v1/validate/tax-ids \
  -H "X-API-Key: nd_tu_clave" \
  -H "Content-Type: application/json" \
  -d {
    "value": "LOEM800101ABC",
    "country": "MX",
    "type": "rfc"
  }
Validar CURP (cURL)
curl -X POST https://api.normadata.io/v1/validate/tax-ids \
  -H "X-API-Key: nd_tu_clave" \
  -H "Content-Type: application/json" \
  -d {
    "value": "LOEM800101HDFLNS09",
    "country": "MX",
    "type": "curp"
  }
Respuesta RFC
{
  "valid": true,
  "country": "MX",
  "type": "rfc",
  "value": {
    "raw": "LOEM800101ABC",
    "formatted": "LOEM800101ABC"
  },
  "metadata": {
    "entity_type": "persona_fisica",
    "birthdate": "1980-01-01",
    "homoclave": "ABC"
  }
}

Proximos pasos

Si tu producto opera en México, revisar la cobertura completa de identificadores mexicanos en /coverage. La API de Normadata valida RFC, CURP, y los demas identificadores de LATAM con el mismo endpoint. Para integrarte, unirte a la lista de espera en /waitlist. Si trabajas con identificadores de otros países de la region, leer la guia completa de tax IDs de LATAM en /blog/latam-tax-ids-developer-guide.

¿Listo para empezar a construir?

Solicitá tu accesoLeer documentación

Artículos relacionados

5 de mayo de 2026Tax IDs en Latinoamérica: guía para desarrolladores5 de mayo de 2026Validar CUIT en Argentina: algoritmo, formato y API5 de mayo de 2026Validación de CPF: algoritmo, ejemplos y API REST15 de marzo de 2026Cómo validar un número de CUIT con una API1 de abril de 2026Validación de CPF: Formato, algoritmo e integración con API para Brasil2 de abril de 2026RFC en México: Formato, estructura y validación para desarrolladores10 de marzo de 2026La guía completa de tax IDs en Latinoamérica1 de marzo de 2026Mejores prácticas para integrar APIs de terceros en aplicaciones de LATAM11 de mayo de 2026Cuánto presupuesto KYC se te va en data malformada (y cómo medirlo)16 de mayo de 2026Cómo validar todos los tax IDs de LATAM con una sola API16 de mayo de 2026Por qué pre-validar datos antes del KYC te ahorra dinero — con números16 de mayo de 2026Construyendo un formulario de checkout consciente de LATAM16 de mayo de 2026El costo oculto de los errores de mod-11 en tu onboarding LATAM