Validação de Tax IDs na América do Sul, uma API.
Cada país roda um checksum diferente. CUIT usa Mod-11 com pesos custom, CPF roda duas rodadas seguidas de Mod-11, RFC carrega uma homoclave alfanumérica, RUT tem dígito verificador que pode ser a letra K. A Normadata implementa todos atrás de um único endpoint.
10 países, 10 algoritmos de checksum
Um CUIT argentino e um CPF brasileiro não compartilham nenhuma regra. O RFC mexicano inclui uma homoclave alfanumérica que poucas bibliotecas open-source resolvem direito. O RUT chileno é Mod-11 da direita pra esquerda com dígito verificador que pode ser K. O RUT uruguaio (o outro) usa outro vetor de pesos. Todo time que escreve os próprios validadores copia um snippet de Stack Overflow que falha em algum edge case ou paga licença enterprise pra rodar um regex. A Normadata centraliza a lógica por país — formato, checksum e normalização — num endpoint com um único schema JSON.
Cada checksum, cada formato
Doze tipos de tax ID validados em produção, cada um com seu algoritmo.
Argentina · CUIT, CUIL
Mod-11 com pesos custom, 11 dígitos, verificador no final com regra especial 10 → swap.
Brasil · CPF, CNPJ
Duas rodadas seguidas de Mod-11, 11 dígitos para CPF, 14 para CNPJ. Formato com pontos e traços na saída.
México · RFC
12 chars para moral, 13 para físico. Homoclave alfanumérica contra a tabela oficial do SAT.
Chile, Uruguai · RUT
Mod-11 da direita pra esquerda. Chile permite letra K como verificador. Uruguai usa outro vetor de pesos.
Colômbia, Bolívia · NIT, Cédula
NIT com checksum ponderado estilo DIAN. Cédula validada contra comprimento e perfil do país.
Peru, Equador, Paraguai · RUC
Variantes de RUC por país — 11 dígitos no Peru, 13 no Equador com o terceiro dígito indicando tipo de contribuinte.
10 países · 12 tax IDs
Cada mercado sul-americano vivo tem pelo menos um validador de tax ID em produção. A tabela completa — tipo, categoria, exemplo e algoritmo — está na página de cobertura.
Uma request, um resultado normalizado
Mande value com country e type explícitos pra validação rápida, ou omita pra deixar o Smart Parse rankear candidatos. Em ambos os casos o shape da resposta é idêntico.
$ curl -X POST https://api.normadata.io/v1/verify/tax-id \
-H "X-API-Key: nd_your_key_here_22_random_bytes" \
-d '{"value":"20-12345678-9","country":"AR","type":"cuit"}'{
"contains_pii": true,
"processed_at": "2026-05-15T01: 00: 00Z",
"value": {
"source": "20-12345678-9",
"normalized": "20123456789",
"formatted": "20-12345678-9",
"country": "AR",
"type": "cuit",
"valid": true,
"confidence": 0.98
}
}Como o Normadata se compara?
Comparações honestas contra as alternativas que mais nos perguntam.
Normadata vs. validator.js
A biblioteca NPM open-source de fato para strings genéricos — e onde fica aquém com tax IDs LATAM.
Normadata vs. AFIP scraper
O site da AFIP expõe dados reais do contribuinte — quando não quebra antes.
Normadata vs. Receita Federal scraper
O cadastro da Receita Federal expõe dados reais do contribuinte — quando o WS está no ar.
Pare de manter validadores de tax ID por país
Grátis durante o acesso antecipado. Manda um email e respondemos em 24 horas.