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

Validando o CUIT Argentino: Algoritmo, Formato e API

Teste — valide um CUIT

A validação roda no seu navegador. Nenhum dado sai do seu dispositivo.

Valida localmente — seus dados nunca saem do seu navegador. Sem tracking no input.

O CUIT (Clave Unica de Identificacion Tributaria) é o identificador fiscal universal da Argentina, emitido pela AFIP (agora ARCA). Se você está desenvolvendo um sistema de faturamento, um fluxo de onboarding para empresas argentinas ou uma integração com a AFIP, validar o CUIT corretamente é um dos primeiros problemas que você vai precisar resolver. Este guia cobre a estrutura, os prefixos, o algoritmo do dígito verificador com um exemplo completo resolvido e como validar CUITs em produção usando a API da Normadata.

O que é o CUIT

O CUIT é o número de identificação fiscal da Argentina, equivalente ao RFC no México ou ao EIN nos Estados Unidos. Aparece em faturas, declarações fiscais, registros em cartórios públicos e transações bancárias. Toda empresa registrada na Argentina tem um CUIT, e pessoas físicas que trabalham formalmente também recebem um. Ao contrário do DNI (identidade nacional), o CUIT inclui um prefixo de tipo e um dígito verificador, o que permite validá-lo matematicamente sem consultar nenhum banco de dados externo.

O CUIL (Clave Unica de Identificacion Laboral) usa exatamente o mesmo formato e algoritmo que o CUIT. A diferença é administrativa: o CUIL é usado em sistemas de trabalho e previdência social, o CUIT no sistema fiscal. Para fins de validação, são idênticos.

Estrutura do CUIT

Um CUIT tem 11 dígitos escritos no formato XX-XXXXXXXX-X, dividido em três partes:

  • Prefixo (2 dígitos): indica o tipo de entidade
  • Corpo (8 dígitos): o DNI da pessoa ou um número atribuído pela AFIP para empresas
  • Dígito verificador (1 dígito): calculado com o algoritmo módulo 11

Prefixos válidos: 20 (pessoa física masculina), 23 (masculino alternativo), 24 (masculino segundo alternativo), 27 (pessoa física feminina), 30 (empresa / entidade jurídica), 33 (entidade jurídica alternativo), 34 (entidade jurídica segundo alternativo). Prefixos alternativos (23, 24, 33, 34) existem para casos onde o prefixo primário produz um dígito verificador de 10, que o algoritmo considera inválido.

O algoritmo módulo 11

O dígito verificador do CUIT é calculado usando módulo 11. Veja como funciona:

  1. Escreva os primeiros 10 dígitos do CUIT (prefixo + corpo).
  2. Atribua os pesos [5, 4, 3, 2, 7, 6, 5, 4, 3, 2] a cada posição.
  3. Multiplique cada dígito pelo seu peso correspondente.
  4. Some todos os produtos.
  5. Calcule o resto: soma mod 11.
  6. Subtraia de 11: verificador = 11 - (soma mod 11).
  7. Se o resultado for 11, o dígito verificador é 0.
  8. Se o resultado for 10, o CUIT é inválido para aquele prefixo (a AFIP reemite com um prefixo alternativo).

Exemplo resolvido com 20-31456789-?. Dígitos: 2, 0, 3, 1, 4, 5, 6, 7, 8, 9. Pesos: 5, 4, 3, 2, 7, 6, 5, 4, 3, 2. Produtos: 10, 0, 9, 2, 28, 30, 30, 28, 24, 18. Soma: 179. 179 mod 11 = 3. 11 - 3 = 8. O CUIT completo é 20-31456789-8.

Armadilhas comuns

Estes são os problemas mais frequentes em integrações reais:

  • Tratar CUIT como inteiro — Zeros à esquerda no corpo são eliminados. Sempre armazene e transmita como strings.
  • Não normalizar separadores — Sistemas armazenam CUITs com hífens, sem hífens, com espaços ou com pontos. Sempre remova caracteres não numéricos antes de validar.
  • Assumindo que prefixo 20 = masculino e 30 = empresa — Prefixos alternativos (23, 24, 33, 34) são válidos e comuns. Não rejeite um CUIT simplesmente porque seu prefixo não é 20 ou 30.
  • Não tratar o resultado 10 — Se o algoritmo produzir 10 como verificador, o CUIT é inválido para aquele prefixo; 10 não é o dígito verificador.
  • Confundir CUIT com CUIL — Validam de forma idêntica, mas existem em sistemas administrativos separados.

Validando CUIT com a API da Normadata

Em vez de implementar o algoritmo manualmente, é possível validar CUITs com uma única chamada de API à Normadata. A API normaliza a entrada, verifica o formato e o checksum, e retorna metadados estruturados incluindo o tipo de entidade e o valor formatado.

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": "20-31456789-8",
    "country": "AR",
    "type": "cuit"
  }
Python
import requests

response = requests.post(
    "https://api.normadata.io/v1/validate/tax-ids",
    headers={"X-API-Key": "nd_your_key_here"},
    json={
        "value": "20-31456789-8",
        "country": "AR",
        "type": "cuit"
    }
)
data = response.json()
print(data["valid"])  # True
Resposta — CUIT válido
{
  "valid": true,
  "country": "AR",
  "type": "cuit",
  "value": {
    "raw": "20314567898",
    "formatted": "20-31456789-8"
  },
  "metadata": {
    "prefix": "20",
    "entity_type": "persona_fisica_masculino",
    "dni": "31456789",
    "check_digit": "8"
  }
}

Próximos passos

Agora que você entende a estrutura e o algoritmo do CUIT, pode integrá-lo ao seu fluxo de onboarding, sistema de faturamento ou pipeline de compliance. A API da Normadata cobre não apenas o CUIT, mas também o CUIL, o CBU e outros identificadores argentinos, mais IDs fiscais de 8 outros países sul-americanos pelo mesmo endpoint consistente. Veja a cobertura completa em /coverage ou entre na lista de espera em /waitlist para obter acesso à API.

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 2026Validação de CPF: Algoritmo, Exemplos e API REST5 de maio de 2026RFC vs CURP no México: Quando Usar Cada Um15 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