México — RFC y Cumplimiento Fiscal (CURP ↔ RFC)
La API de RFC para México de Verifik permite la resolución bidireccional y validación de cumplimiento tributario entre la CURP (Clave Única de Registro de Población) y el RFC (Registro Federal de Contribuyentes):
- Resolución Directa (
CURP → RFC): Envía una CURP de 18 caracteres para obtener el nombre legal validado, perfil demográfico, el RFC completo de 13 caracteres, su homoclave de 3 caracteres y el estatus de cumplimiento fiscal. - Resolución Inversa (
RFC → CURP) y Consulta de Personas Morales: Envía un RFC de Persona Física (13 caracteres) o un RFC de Persona Moral (12 caracteres) para validar su estructura y dígito verificador, recuperar la CURP de 18 caracteres y los datos demográficos del ciudadano, o consultar la razón social y situación fiscal del contribuyente. - Verificación en Listas Oficiales del Art. 69 y 69-B (
satCompliance): Cada consulta verifica automáticamente si el RFC se encuentra reportado en los listados oficiales del Artículo 69-B (operaciones presuntamente inexistentes / EFOS) y del Artículo 69 (créditos firmes, exigibles, no localizados, sentencias condenatorias y cancelados).
¿Qué valida esta API?
- Resolución Bidireccional
CURP ↔ RFCy Homoclave: Obtiene la clave de 13 caracteres y su homoclave de 3 caracteres a partir de una CURP, o resuelve de forma inversa lacurpde 18 caracteres y la identidad completa a partir de un RFC de 13 caracteres. - Validación Estructural y Dígito Verificador Módulo 11: Valida tanto RFCs de 12 caracteres (Persona Moral) como de 13 caracteres (Persona Física) conforme al algoritmo oficial del Anexo III (
checkDigitValid,personType). - Confirmación Demográfica y de Nombre: Retorna el nombre legal registrado desglosado en
firstName,paternalSurname,maternalSurname,dateOfBirth(oincorporationDatepara personas morales),genderystate. - Monitoreo de Cumplimiento Fiscal (
satCompliance): Cruza el RFC contra los listados oficiales del Artículo 69-B (Presuntos, Definitivos, Desvirtuados, Sentencia Favorable) y Artículo 69 (Créditos Firmes, Exigibles, No Localizados, Sentencias, Cancelados). - Firma Criptográfica: Incluye una firma digital de Verifik con fecha y hora que certifica el origen y la integridad de los datos.
Referencia de API
Endpoints
GET https://api.verifik.co/v2/mx/rfc
Endpoint alternativo (alias):
GET https://api.verifik.co/v2/mx/sat/rfc
Encabezados
| Nombre | Valor | Descripción |
|---|---|---|
Accept | application/json | Formato de respuesta requerido. |
Authorization | Bearer <token> | Token JWT o API key de cliente Verifik. |
Parámetros
| Nombre | Tipo | Requerido | Valor por defecto | Descripción | Ejemplo |
|---|---|---|---|---|---|
documentNumber | string | Sí | — | CURP mexicana (18 caracteres) o RFC (12 caracteres Persona Moral, 13 caracteres Persona Física). Insensible a mayúsculas/minúsculas. | LOPE900501HDFGRN01 o LOPE9005011A8 |
documentType | string | No | Autodetectado | Tipo de documento: CURP o RFC. Se detecta automáticamente según la longitud de documentNumber si se omite. | CURP / RFC |
Ejemplos de Solicitud
- cURL (por CURP)
- cURL (por RFC)
- Node.js
- Python
curl -X GET "https://api.verifik.co/v2/mx/rfc?documentNumber=LOPE900501HDFGRN01&documentType=CURP" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN"
curl -X GET "https://api.verifik.co/v2/mx/rfc?documentNumber=LOPE9005011A8&documentType=RFC" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN"
import axios from "axios";
const response = await axios.get("https://api.verifik.co/v2/mx/rfc", {
params: {
documentNumber: "LOPE900501HDFGRN01",
documentType: "CURP", // o "RFC"
},
headers: {
Accept: "application/json",
Authorization: `Bearer ${process.env.VERIFIK_TOKEN}`,
},
});
console.log(response.data);
import os
import requests
url = "https://api.verifik.co/v2/mx/rfc"
headers = {
"Accept": "application/json",
"Authorization": f"Bearer {os.getenv('VERIFIK_TOKEN')}"
}
params = {
"documentNumber": "LOPE900501HDFGRN01",
"documentType": "CURP" # o "RFC"
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
Respuestas
- 200 (Persona Física — Sin Alertas)
- 200 (Consulta por RFC — Con Alerta Art. 69 / 69-B)
- 404 (No Encontrado)
- 409 (Formato Inválido)
- 409 (Parámetro Faltante)
{
"data": {
"documentType": "CURP",
"documentNumber": "LOPE900501HDFGRN01",
"curp": "LOPE900501HDFGRN01",
"rfc": "LOPE9005011A8",
"homoclave": "1A8",
"personType": "FISICA",
"checkDigitValid": true,
"firstName": "ANA",
"lastName": "LOPEZ RUIZ",
"fullName": "ANA LOPEZ RUIZ",
"paternalSurname": "LOPEZ",
"maternalSurname": "RUIZ",
"dateOfBirth": "1990-05-01",
"gender": "FEMENINO",
"sex": "M",
"state": "CIUDAD DE MEXICO",
"stateCode": "DF",
"country": "Mexico",
"nationality": "Mexican",
"satCompliance": {
"isFlagged": false,
"in69B": false,
"status69B": null,
"inArt69": false,
"categoriesArt69": [],
"records": []
}
},
"signature": {
"dateTime": "October 29, 2026 2:30 PM",
"message": "Certified by Verifik.co"
}
}
{
"data": {
"documentType": "RFC",
"documentNumber": "AAA080808HL8",
"curp": null,
"rfc": "AAA080808HL8",
"homoclave": "HL8",
"personType": "MORAL",
"checkDigitValid": true,
"firstName": null,
"lastName": null,
"fullName": "AAA Y ASOCIADOS DISTRIBUIDORA, S.A. DE C.V.",
"paternalSurname": null,
"maternalSurname": null,
"dateOfBirth": null,
"incorporationDate": "2008-08-08",
"gender": null,
"sex": null,
"state": null,
"stateCode": null,
"country": "Mexico",
"nationality": "Mexican",
"satCompliance": {
"isFlagged": true,
"in69B": true,
"status69B": "Definitivo",
"inArt69": false,
"categoriesArt69": [],
"records": [
{
"listType": "69B",
"taxpayerName": "AAA Y ASOCIADOS DISTRIBUIDORA, S.A. DE C.V.",
"personType": "MORAL",
"situation": "Definitivo",
"presumptionSatNotice": "500-05-2016-39369 de fecha 01 de diciembre de 2016",
"presumptionSatDate": "03/01/2017",
"presumptionDofDate": "09/01/2017",
"definitiveSatNotice": "500-05-2017-16236 de fecha 22 de mayo de 2017",
"definitiveSatDate": "22/06/2017",
"definitiveDofDate": "10/07/2017"
}
]
}
},
"signature": {
"dateTime": "October 29, 2026 2:30 PM",
"message": "Certified by Verifik.co"
}
}
{
"code": "NotFound",
"message": "Record not found."
}
{
"code": "InvalidRfc",
"message": "Invalid RFC format. Must be a valid 12-character (Persona Moral) or 13-character (Persona Física) Mexican RFC."
}
{
"code": "MissingParameter",
"message": "\"documentNumber\" is required"
}
Campos de la Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
documentType | string | Tipo de documento solicitado o autodetectado ("CURP" o "RFC"). |
documentNumber | string | Identificador normalizado en mayúsculas (CURP o RFC). |
curp | string | null | CURP de 18 caracteres del ciudadano (presente en Personas Físicas tanto al consultar por CURP como al resolver inversamente desde un RFC de 13 caracteres). |
rfc | string | Clave completa del RFC mexicano de 12 caracteres (Persona Moral) o 13 caracteres (Persona Física). |
homoclave | string | Homoclave oficial de 3 caracteres (2 caracteres de homonimia + 1 dígito verificador). |
personType | string | "FISICA" (RFC de 13 caracteres) o "MORAL" (RFC de 12 caracteres). |
checkDigitValid | boolean | Indica si el último carácter coincide con el dígito verificador oficial módulo 11 del Anexo III. |
firstName | string | null | Nombre(s) de pila (Personas Físicas). |
paternalSurname | string | null | Primer apellido (apellido paterno) para Personas Físicas. |
maternalSurname | string | null | Segundo apellido (apellido materno) para Personas Físicas. |
fullName | string | Nombre legal completo (Persona Física) o denominación / razón social (Persona Moral). |
dateOfBirth | string | null | Fecha de nacimiento en formato YYYY-MM-DD (Personas Físicas). |
incorporationDate | string | null | Fecha de constitución en formato YYYY-MM-DD (Personas Morales al consultar un RFC de 12 caracteres). |
state / stateCode | string | null | Nombre de la entidad federativa mexicana y código de 2 letras. |
satCompliance | object | Resumen oficial de cumplimiento fiscal Art. 69 y 69-B (isFlagged, in69B, status69B, inArt69, categoriesArt69, records). |
Precios
| Código de Endpoint | URL de Endpoint | Precio por Consulta Exitosa |
|---|---|---|
mexico_api_rfc_lookup | GET /v2/mx/rfc | $0.30 USD |
Nota: Al igual que en las demás consultas de identidad en México (/v2/mx/curp, /v2/mx/cedula-profesional), las consultas no exitosas (tales como 404 o 409) no descuentan créditos.
Entorno Sandbox y Pruebas
Al realizar consultas con credenciales en modo Sandbox (mode: sandbox), no se descuentan créditos reales y se devuelven respuestas deterministas:
- Perfil de Éxito por CURP: Utiliza
documentNumber=LOPE900501HDFGRN01&documentType=CURP. Retorna el usuario de pruebasANA LOPEZ RUIZcon RFCLOPE9005011A8,homoclave: "1A8"ysatCompliancesin alertas. - Perfil de Éxito por RFC: Utiliza
documentNumber=LOPE9005011A8&documentType=RFC(o cualquier RFC válido de 12 o 13 caracteres). Retorna identidad determinista y estructurasatCompliance. - Disparador de 404: Utiliza
documentNumber=LOPE900404HDFNTF01(CURP) odocumentNumber=LOPE900404NTF(RFC). Retorna HTTP 404Record not found..
Casos de Uso Comunes
- Onboarding Digital Bidireccional (
CURP ↔ RFC): Obtén tanto la CURP como el RFC oficial sin importar cuál de los dos documentos proporcione el usuario en tu flujo de registro. - Prevención de Riesgo Fiscal y Proveedores (Art. 69-B EFOS): Verifica automáticamente que tus proveedores o contrapartes no se encuentren en los listados definitivos o presuntos del Artículo 69-B ni tengan créditos fiscales firmes o no localizados en el Artículo 69 antes de dispersar pagos o deducir facturas CFDI.
- Fintech y Facturación Electrónica CFDI 4.0: Valida que el RFC de 12 o 13 caracteres tenga un dígito verificador válido y coincida con el nombre legal del contribuyente.
- Gestión de Nómina y Recursos Humanos: Confirma la identidad, CURP y RFC activo de colaboradores en segundos.
Endpoints Relacionados
- 🇲🇽 México — CURP: Validación demográfica y de estado civil mediante CURP.
- 🇲🇽 México — Cédula profesional: Consulta de títulos universitarios y cédulas profesionales.
- 🇲🇽 México — Validación INE: Validación oficial de credencial de elector.