Mexico โ RFC & Tax Compliance (CURP โ RFC)
Verifik's Mexico RFC API enables bidirectional resolution and tax compliance verification between a Mexican CURP (Clave รnica de Registro de Poblaciรณn) and an official RFC (Registro Federal de Contribuyentes):
- Forward Resolution (
CURP โ RFC): Pass an 18-character CURP to retrieve the citizen's validated full name, demographic profile, 13-character RFC, 3-character homoclave, and tax compliance status. - Reverse Resolution (
RFC โ CURP) & Entity Lookup: Pass a 13-character Persona Fรญsica RFC or a 12-character Persona Moral RFC to validate its official structure and check digit, resolve the citizen's 18-character CURP and full demographic record (for individuals), or retrieve the registered entity profile and tax compliance standing. - Official Tax Compliance Screening (Art. 69 & 69-B): Every lookup automatically screens the RFC against official tax compliance registries (including Article 69-B simulated operations lists and Article 69 firm, exigible, unlocated, convicted, and canceled tax credit lists).
What does this API validate?โ
- Bidirectional
CURP โ RFC& Homoclave: Retrieves the active 13-character RFC and 3-character homoclave from a CURP, or reverse-resolves the 18-charactercurpand demographic identity from a 13-character RFC. - Structural & Modulo-11 Check Digit Verification: Validates both 12-character (Persona Moral) and 13-character (Persona Fรญsica) RFCs against the official Annex III modulo-11 verification algorithm (
checkDigitValid,personType). - Demographic & Name Confirmation: Returns the registered legal name parsed into
firstName,paternalSurname,maternalSurname,dateOfBirth(orincorporationDatefor legal entities),gender, andstate. - Tax Compliance & Blacklist Screening (
satCompliance): Screens the RFC against official Article 69-B (Presuntos, Definitivos, Desvirtuados, Sentencia Favorable) and Article 69 (Crรฉditos Firmes, Exigibles, No Localizados, Sentencias, Cancelados) registries. - Cryptographic Signature: Includes a Verifik cryptographic signature with timestamp certifying origin and integrity.
API Referenceโ
Endpointsโ
GET https://api.verifik.co/v2/mx/rfc
Alias endpoint:
GET https://api.verifik.co/v2/mx/sat/rfc
Headersโ
| Name | Value | Description |
|---|---|---|
Accept | application/json | Required response content type. |
Authorization | Bearer <token> | Your Verifik API JWT or client token. |
Parametersโ
| Name | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
documentNumber | string | Yes | โ | Mexican CURP (18 chars) or RFC (12 chars Persona Moral, 13 chars Persona Fรญsica). Case-insensitive. | LOPE900501HDFGRN01 or LOPE9005011A8 |
documentType | string | No | Auto-detected | Document type: CURP or RFC. Automatically inferred from documentNumber length if omitted. | CURP / RFC |
Request Examplesโ
- cURL (by CURP)
- cURL (by 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", // or "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" # or "RFC"
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
Responsesโ
- 200 (Persona Fรญsica โ Clean)
- 200 (RFC Lookup โ Flagged in Art. 69 / 69-B)
- 404 (Not Found)
- 409 (Invalid Format)
- 409 (Missing Parameter)
{
"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"
}
Response Fieldsโ
| Field | Type | Description |
|---|---|---|
documentType | string | Requested or auto-detected input document type ("CURP" or "RFC"). |
documentNumber | string | Normalized uppercase input identifier (CURP or RFC). |
curp | string | null | Citizen's 18-character CURP (present for Personas Fรญsicas both when querying by CURP and when reverse-resolved from a 13-char RFC). |
rfc | string | Full 12-character (Persona Moral) or 13-character (Persona Fรญsica) Mexican RFC. |
homoclave | string | Official 3-character SAT homoclave (2 homonymy characters + 1 check digit). |
personType | string | "FISICA" (13-character individual RFC) or "MORAL" (12-character corporate RFC). |
checkDigitValid | boolean | Indicates whether the final character matches the official SAT Annex III modulo-11 check digit. |
firstName | string | null | Given name(s) for Personas Fรญsicas. |
paternalSurname | string | null | First surname (apellido paterno) for Personas Fรญsicas. |
maternalSurname | string | null | Second surname (apellido materno) for Personas Fรญsicas. |
fullName | string | Full legal name (Persona Fรญsica) or corporate legal name (Razรณn Social for Persona Moral). |
dateOfBirth | string | null | Date of birth in YYYY-MM-DD format (Personas Fรญsicas). |
incorporationDate | string | null | Date of incorporation in YYYY-MM-DD format (Personas Morales when querying a 12-character RFC). |
state / stateCode | string | null | Mexican federal entity name and 2-letter RENAPO code. |
satCompliance | object | Official SAT Article 69 & 69-B tax compliance summary (isFlagged, in69B, status69B, inArt69, categoriesArt69, records). |
Pricingโ
| Endpoint Code | Endpoint URL | Price per Successful Query |
|---|---|---|
mexico_api_rfc_lookup | GET /v2/mx/rfc | $0.30 USD |
Note: As with other Mexican identity endpoints (/v2/mx/curp, /v2/mx/cedula-profesional), failed queries (such as 404 or 409) do not consume credits.
Sandbox & Testingโ
When testing in the Sandbox environment (mode: sandbox), no live credits are deducted and deterministic mock data is returned:
- CURP Success Profile: Use
documentNumber=LOPE900501HDFGRN01&documentType=CURP. Returns test personaANA LOPEZ RUIZwith RFCLOPE9005011A8,homoclave: "1A8", and cleansatCompliance. - RFC Success Profile: Use
documentNumber=LOPE9005011A8&documentType=RFC(or any valid 12/13-char RFC). Returns deterministic identity andsatCompliancefields. - 404 Trigger: Use
documentNumber=LOPE900404HDFNTF01(CURP) ordocumentNumber=LOPE900404NTF(RFC). Returns HTTP 404Record not found..
Common Use Casesโ
- Bidirectional KYC & Tax Onboarding: Collect both CURP and official SAT RFC regardless of whether the user provides their CURP or their RFC.
- KYB Supplier & Vendor Screening (Art. 69-B EFOS): Automatically screen suppliers and counterparties against official SAT Article 69-B (Empresas que Facturan Operaciones Simuladas) and Article 69 tax debtor lists before issuing payments or deducting CFDI invoices.
- Fintech & CFDI Billing Compliance: Validate that a customer's 12 or 13-character RFC has a valid check digit and matches their legal name before issuing electronic invoices.
- Payroll & HR Validation: Verify that newly hired employees have an active RFC and consistent demographic records.
Related Endpointsโ
- ๐ฒ๐ฝ Mexico โ CURP: Comprehensive demographic validation via CURP.
- ๐ฒ๐ฝ Mexico โ Professional License: Query official university degrees and professional licenses.
- ๐ฒ๐ฝ Mexico โ INE Validation: Validate official Mexican voting credentials.