Skip to content

💼 RFC

The RFC (Registro Federal de Contribuyentes) validation report retrieves and validates Mexico’s Federal Taxpayer Registry number from the Servicio de Administración Tributaria (SAT). This report is essential for tax compliance verification and financial background checks in Mexico.

RFC validation provides access to Mexico’s tax system to verify taxpayer registration, tax compliance status, and business legitimacy. This report is crucial for financial verification and compliance with Mexican tax regulations.

Field Type Description Example
document_id string CURP (Clave Única de Registro de Población) ABCD123456EFGHIJ78
Field Type Description Default
full_name string Expected full name for verification Auto from CURP
rfc string Known RFC for direct validation Auto-retrieved
report_settings object Configuration options {}

Registry: Servicio de Administración Tributaria (SAT) Authority: Secretaría de Hacienda y Crédito Público (SHCP) Coverage: All Mexican taxpayers (individuals and businesses) Update Frequency: Real-time for active taxpayers, daily for status changes

{
"rfc": {
"state": "COMPLETED",
"created_at": "2021-03-30T03:18:36.801902",
"updated_at": "2021-03-30T03:19:53.536683",
"outcome": "PASSED",
"details": {
"success": true,
"rfc": "ABCD123456EF7H",
"registration_year": "2001",
"taxpayer_type": "INDIVIDUAL",
"status": "ACTIVE",
"regime": "SUELDOS_Y_SALARIOS",
"validation": {
"rfc_format_valid": true,
"check_digit_valid": true,
"active_in_system": true,
"document_type": "RFC"
},
"registration_info": {
"initial_registration": "2001-03-15",
"last_update": "2023-12-01",
"taxpayer_name": "JUAN MIGUEL DOE ROE"
},
"_spider": "mx_sat_rfc_by_curp",
"_timestamp": "2021-03-30T03:19:51.292766"
}
}
}
{
"rfc": {
"state": "COMPLETED",
"created_at": "2021-03-30T03:18:36.801902",
"updated_at": "2021-03-30T03:19:53.536683",
"outcome": "PASSED",
"details": {
"success": true,
"rfc": "ABCD123456EF7H",
"registration_year": "2001",
"taxpayer_type": "INDIVIDUAL",
"status": "INACTIVE",
"regime": "SUELDOS_Y_SALARIOS",
"validation": {
"rfc_format_valid": true,
"check_digit_valid": true,
"active_in_system": false,
"document_type": "RFC"
},
"registration_info": {
"initial_registration": "2001-03-15",
"last_update": "2020-06-30",
"deactivation_date": "2020-06-30",
"deactivation_reason": "VOLUNTARY_CANCELLATION"
},
"_spider": "mx_sat_rfc_by_curp",
"_timestamp": "2021-03-30T03:19:51.292766"
}
}
}
{
"rfc": {
"state": "COMPLETED",
"created_at": "2021-03-30T03:18:36.801902",
"updated_at": "2021-03-30T03:19:53.536683",
"outcome": "FAILED",
"details": {
"success": false,
"rfc": null,
"message": "No RFC registration found for provided CURP",
"possible_reasons": [
"Person never registered as taxpayer",
"Income below tax registration threshold",
"Recent graduate without tax obligations",
"Informal economy worker"
],
"_spider": "mx_sat_rfc_by_curp",
"_timestamp": "2021-03-30T03:19:51.292766"
}
}
}

The RFC for individuals (personas físicas) is a 13-character code:

ABCD123456EF7

The RFC for businesses (personas morales) is a 12-character code:

ABC123456EF7
Position Characters Description Example
1-4 Letters Name and surname initials ABCD
5-10 Numbers Birth date (YYMMDD) 123456
11-12 Letters Homonym differentiator EF
13 Number/Letter Check digit 7
Position Characters Description Example
1-3 Letters Business name initials ABC
4-9 Numbers Registration date (YYMMDD) 123456
10-11 Letters Homonym differentiator EF
12 Number/Letter Check digit 7
function validateRFCCheckDigit(rfc) {
const isIndividual = rfc.length === 13;
const isBusiness = rfc.length === 12;
if (!isIndividual && !isBusiness) return false;
const weights = [13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2];
const startPos = isIndividual ? 1 : 0;
const checkDigitPos = isIndividual ? 12 : 11;
let sum = 0;
for (let i = 0; i < weights.length; i++) {
const char = rfc[startPos + i];
const value = isNaN(char) ? char.charCodeAt(0) - 55 : parseInt(char);
sum += value * weights[i];
}
const remainder = sum % 11;
const calculatedCheckDigit = remainder < 2 ? remainder : 11 - remainder;
const expectedCheckDigit = rfc[checkDigitPos];
return calculatedCheckDigit.toString() === expectedCheckDigit;
}
  • Tax Compliance Verification: Confirm taxpayer registration status
  • Financial Background Checks: Verify tax compliance history
  • Business Legitimacy: Validate business registration and status
  • Invoice Validation: Verify RFC for billing purposes
  • Employment Verification: Confirm tax registration for employees
  • Current Taxpayer: Person is registered and active with SAT
  • Tax Obligations: Subject to tax filing requirements
  • Invoice Authority: Can issue tax-compliant invoices
  • Compliance Status: Meeting tax registration requirements
  • Deregistered: No longer active in tax system
  • Historical Record: Previous tax registration available
  • Limited Authority: Cannot issue valid tax invoices
  • Compliance Issues: May indicate tax compliance problems
  • No Tax Registration: Never registered with SAT
  • Below Threshold: Income may be below registration requirements
  • Informal Economy: May work without tax registration
  • Recent Status: May be new to workforce
Regime Code Description Typical Users
SUELDOS_Y_SALARIOS Salary and Wages Employees
ACTIVIDAD_EMPRESARIAL Business Activity Business owners
ARRENDAMIENTO Rental Income Property owners
HONORARIOS Professional Fees Freelancers
DIVIDENDOS Dividends Investors
REGIMEN_SIMPLIFICADO Simplified Regime Small businesses
{
"report_settings": {
"rfc": {
"include_regime_details": true,
"include_registration_history": true
}
}
}
{
"report_settings": {
"rfc": {
"include_regime_details": true,
"include_registration_history": true,
"include_compliance_status": false,
"verify_business_status": true,
"historical_depth_years": 5
}
}
}
Parameter Type Description Default Options
include_regime_details boolean Include tax regime information true true/false
include_registration_history boolean Include registration timeline true true/false
include_compliance_status boolean Include tax compliance details false true/false
verify_business_status boolean Verify business entity status false true/false
historical_depth_years integer Years of history to retrieve 3 1-10
Error Type Description Resolution
INVALID_CURP CURP format invalid or not found Verify CURP with RENAPO first
SAT_TIMEOUT SAT database timeout Retry after 15-30 minutes
ACCESS_RESTRICTED Limited access to tax information Contact support for enhanced access
PRIVACY_RESTRICTION Tax details restricted by privacy laws Remove sensitive settings from configuration
SYSTEM_MAINTENANCE SAT system under maintenance Check SAT service status
  • CURP Validation First: Always validate CURP before RFC lookup
  • Privacy Compliance: Handle tax data according to Mexican privacy laws
  • Data Retention: Follow data retention policies for tax information
  • Error Handling: Implement proper retry logic for system timeouts
  • Compliance Monitoring: Regular checks for tax status changes
Terminal window
curl -X POST "https://api.emptor.io/v3/mx/persons" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document_id": "ABCD123456EFGHIJ78",
"city_locode": "MX MEX",
"pipeline": {
"name": "standard_background_check"
},
"report_settings": {
"rfc": {
"include_regime_details": true,
"include_registration_history": true,
"verify_business_status": false
}
}
}'
Terminal window
curl -X GET "https://api.emptor.io/v3/mx/details/{person_id}/rfc" \
-H "X-Api-Key: YOUR_API_KEY"
  • Código Fiscal de la Federación: Tax registration requirements
  • Ley del Impuesto Sobre la Renta: Income tax obligations
  • Data Protection: LFPDPPP compliance for tax data
  • Taxpayer Rights: Respect for taxpayer privacy and data rights
  • Verify employee tax registration
  • Confirm tax compliance status
  • Validate invoice issuing authority
  • Assess formal economy participation
  • Validate business legitimacy
  • Confirm tax registration status
  • Verify invoice issuing capability
  • Assess business compliance
  • Tax compliance verification
  • Business legitimacy assessment
  • Invoice validation for payments
  • Risk assessment for lending