Publicado em 5 de maio de 2026·6 min de leitura

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.

Validar RFC (cURL)
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"
  }
Validar CURP (cURL)
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"
  }
Resposta RFC
{
  "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.

Pronto para começar a desenvolver?

Solicitar acessoLer documentação

Artigos relacionados

5 de maio de 2026IDs Fiscais Latino-Americanos: Um Guia para Desenvolvedores5 de maio de 2026Validando o CUIT Argentino: Algoritmo, Formato e API5 de maio de 2026Validação de CPF: Algoritmo, Exemplos e API REST15 de março de 2026Como Validar um Número de CUIT com uma API1 de abril de 2026Validação de CPF: Formato, Algoritmo e Integração com API para o Brasil2 de abril de 2026RFC no México: Formato, Estrutura e Validação para Desenvolvedores10 de março de 2026O Guia Completo de IDs Fiscais na América Latina1 de março de 2026Boas Práticas para Integrar APIs de Terceiros em Aplicações LATAM11 de maio de 2026Quanto orçamento KYC você desperdiça com dados malformados (e como medir)16 de maio de 2026Como validar todos os tax IDs da LATAM com uma única API16 de maio de 2026Por que pré-validar dados antes do KYC economiza dinheiro — com números16 de maio de 2026Construindo um formulário de checkout consciente da LATAM16 de maio de 2026O custo oculto dos erros de mod-11 no seu onboarding LATAM