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.

FieldTypeDescriptionExample
document_idstringCURP (Clave Única de Registro de Población)ABCD123456EFGHIJ78
FieldTypeDescriptionDefault
full_namestringExpected full name for verificationAuto from CURP
rfcstringKnown RFC for direct validationAuto-retrieved
report_settingsobjectConfiguration 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
PositionCharactersDescriptionExample
1-4LettersName and surname initialsABCD
5-10NumbersBirth date (YYMMDD)123456
11-12LettersHomonym differentiatorEF
13Number/LetterCheck digit7
PositionCharactersDescriptionExample
1-3LettersBusiness name initialsABC
4-9NumbersRegistration date (YYMMDD)123456
10-11LettersHomonym differentiatorEF
12Number/LetterCheck digit7
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 CodeDescriptionTypical Users
SUELDOS_Y_SALARIOSSalary and WagesEmployees
ACTIVIDAD_EMPRESARIALBusiness ActivityBusiness owners
ARRENDAMIENTORental IncomeProperty owners
HONORARIOSProfessional FeesFreelancers
DIVIDENDOSDividendsInvestors
REGIMEN_SIMPLIFICADOSimplified RegimeSmall 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
}
}
}
ParameterTypeDescriptionDefaultOptions
include_regime_detailsbooleanInclude tax regime informationtruetrue/false
include_registration_historybooleanInclude registration timelinetruetrue/false
include_compliance_statusbooleanInclude tax compliance detailsfalsetrue/false
verify_business_statusbooleanVerify business entity statusfalsetrue/false
historical_depth_yearsintegerYears of history to retrieve31-10
Error TypeDescriptionResolution
INVALID_CURPCURP format invalid or not foundVerify CURP with RENAPO first
SAT_TIMEOUTSAT database timeoutRetry after 15-30 minutes
ACCESS_RESTRICTEDLimited access to tax informationContact support for enhanced access
PRIVACY_RESTRICTIONTax details restricted by privacy lawsRemove sensitive settings from configuration
SYSTEM_MAINTENANCESAT system under maintenanceCheck 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