RFC vs CURP no México: Quando Usar Cada Um
Se você está desenvolvendo um produto para o mercado mexicano, vai eventualmente precisar trabalhar com dois identificadores: o RFC e o CURP. Eles parecem similares — ambos são strings alfanuméricos derivados do nome e da data de nascimento de uma pessoa — mas servem a propósitos completamente diferentes e são emitidos por autoridades distintas. Este guia explica a estrutura de cada um, quando você precisa de um em vez do outro e como validá-los em produção.
RFC: o identificador fiscal
O RFC (Registro Federal de Contribuyentes) é emitido pelo SAT (Servicio de Administracion Tributaria) e é o identificador fiscal do México. Você precisa dele para emitir e receber faturas (CFDI), declarar impostos, abrir contas bancárias empresariais e qualquer transação formal no sistema fiscal mexicano.
Estrutura do RFC para pessoas físicas: 4 letras do nome e sobrenomes + 6 dígitos da data de nascimento (YYMMDD) + 3 caracteres alfanuméricos de homoclave atribuídos pelo SAT. Total: 13 caracteres. Exemplo: LOEM800101ABC. Para empresas (persona moral): 3 letras do nome da empresa + 6 dígitos da data de constituição (YYMMDD) + 3 caracteres de homoclave. Total: 12 caracteres. Exemplo: SAT901114Q28. A homoclave é atribuída pelo SAT e não pode ser calculada de forma independente sem o algoritmo completo do registro do SAT.
CURP: o identificador de identidade civil
O CURP (Clave Unica de Registro de Poblacion) é emitido pelo RENAPO (Registro Nacional de Poblacion) e é o identificador de identidade civil do México, não um identificador fiscal. Tem sempre 18 caracteres alfanuméricos e é atribuído a todas as pessoas nascidas ou naturalizadas no México.
Estrutura do CURP (sempre 18 caracteres): 4 letras do nome (sobrenome paterno, sobrenome materno, primeiro nome) + 6 dígitos da data de nascimento (YYMMDD) + 1 letra do sexo (H/M) + 2 letras do estado de nascimento + 3 consoantes do nome + 2 caracteres diferenciadores + 1 dígito verificador. Exemplo: LOEM800101HDFLNS09. O dígito verificador é calculado com um algoritmo específico do RENAPO.
Tabela comparativa
Diferenças principais entre RFC e CURP:
- Autoridade: RFC -> SAT (impostos) | CURP -> RENAPO (identidade civil)
- Finalidade: RFC -> fiscal, faturamento | CURP -> identidade, serviços governamentais
- Pessoas físicas: RFC -> 13 chars | CURP -> 18 chars sempre
- Empresas: RFC -> 12 chars | CURP -> não se aplica (apenas pessoas físicas)
- Estrangeiros: RFC -> com ou sem CURP | CURP -> com código de estado XX para estrangeiros
- Necessário para faturamento: RFC -> sim | CURP -> não
- Necessário para registros civis: RFC -> não | CURP -> sim
Quando você precisa do RFC vs. CURP
A regra é simples: se o fluxo envolve impostos, faturamento ou o SAT — você precisa do RFC. Se o fluxo envolve identidade civil, previdência social, saúde ou educação — você precisa do CURP. Muitos sistemas governamentais e bancários exigem ambos.
- Você precisa do RFC: emissão de CFDI (faturas eletrônicas), onboarding de clientes para compliance fiscal, abertura de conta bancária empresarial, folha de pagamento formal, declarações fiscais.
- Você precisa do CURP: verificação de identidade para previdência social (IMSS/ISSSTE), solicitações de passaporte, matrícula em instituições educacionais, acesso a programas governamentais, identificação de funcionários na folha de pagamento.
- Você precisa de ambos: abertura de conta bancária individual, sistemas completos de folha de pagamento, verificação de identidade e fiscal combinadas, plataformas de emprego formal.
Validando RFC e CURP com a API da Normadata
É possível validar tanto o RFC quanto o CURP com um endpoint consistente da API da Normadata, passando o tipo correspondente em cada chamada.
curl -X POST https://api.normadata.io/v1/validate/tax-ids \
-H "X-API-Key: nd_your_key_here" \
-H "Content-Type: application/json" \
-d {
"value": "LOEM800101ABC",
"country": "MX",
"type": "rfc"
}curl -X POST https://api.normadata.io/v1/validate/tax-ids \
-H "X-API-Key: nd_your_key_here" \
-H "Content-Type: application/json" \
-d {
"value": "LOEM800101HDFLNS09",
"country": "MX",
"type": "curp"
}{
"valid": true,
"country": "MX",
"type": "rfc",
"value": {
"raw": "LOEM800101ABC",
"formatted": "LOEM800101ABC"
},
"metadata": {
"entity_type": "persona_fisica",
"birthdate": "1980-01-01",
"homoclave": "ABC"
}
}Próximos passos
Se o seu produto opera no México, consulte a cobertura completa de identificadores mexicanos em /coverage. A API da Normadata valida RFC, CURP e outros identificadores da LATAM com o mesmo endpoint. Para integrar, entre na lista de espera em /waitlist. Se você trabalha com identificadores de outros países da região, leia o guia completo de IDs fiscais da LATAM em /blog/latam-tax-ids-developer-guide.