Validação de CPF: Formato, Algoritmo e Integração com API para o Brasil
Teste — valide um CPF
A validação roda no seu navegador. Nenhum dado sai do seu dispositivo.
Valida localmente — seus dados nunca saem do navegador. Sem rastreamento do input.
O CPF (Cadastro de Pessoas Físicas) é a espinha dorsal da identificação individual no Brasil. Se você está desenvolvendo qualquer aplicação que atenda usuários brasileiros — fintech, e-commerce, folha de pagamento ou compliance — vai precisar validar números de CPF em algum momento. Um único CPF inválido pode bloquear uma transferência PIX, rejeitar uma Nota Fiscal Eletrônica ou sinalizar um onboarding de cliente como fraudulento. No entanto, a lógica de validação do CPF é mais complexa do que a maioria dos desenvolvedores espera. Além das verificações básicas de formato, é preciso entender o algoritmo de dígito verificador em duas etapas, reconhecer padrões inválidos conhecidos e tratar casos extremos que surgem em produção. Este guia cobre tudo: o que é um CPF, sua estrutura de 11 dígitos, o algoritmo completo de módulo 11 para ambos os dígitos verificadores, armadilhas comuns e como validar CPFs instantaneamente usando a API Validate da Normadata.
O que é um CPF?
O CPF (Cadastro de Pessoas Físicas) é o número de identificação de contribuinte individual do Brasil, emitido pela Receita Federal. Todo cidadão ou residente brasileiro que declara imposto de renda, abre uma conta bancária, assina um contrato ou até compra um chip de celular precisa de um CPF. É o identificador mais importante para pessoas físicas no Brasil, comparável ao Social Security Number nos Estados Unidos ou ao CUIT na Argentina. Ao contrário de identificadores corporativos como o CNPJ (que identifica empresas), o CPF é estritamente pessoal. Acompanha a pessoa por toda a vida e não muda quando ela se muda de estado ou troca de emprego. O número em si tem 11 dígitos e inclui dois dígitos verificadores calculados por um algoritmo de módulo 11, o que significa que é possível verificar sua validade matemática sem consultar nenhum banco de dados externo.
Formato e estrutura do CPF
Um CPF é escrito como XXX.XXX.XXX-XX, onde os primeiros nove dígitos identificam o contribuinte e os dois últimos são dígitos verificadores. O corpo de nove dígitos não é completamente aleatório: o nono dígito (antes dos dígitos verificadores) indica a região fiscal onde o CPF foi originalmente emitido. Por exemplo, 0 corresponde ao Rio Grande do Sul, 1 ao Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul e Tocantins, e assim por diante até 9 para São Paulo. Embora esse dígito regional seja um artefato histórico e não afete a validação, é um contexto útil. Quando transmitido eletronicamente, o CPF sempre tem 11 dígitos sem separadores. Em interfaces voltadas ao usuário, é exibido com pontos e um hífen para facilitar a leitura: 123.456.789-09. Seu sistema deve aceitar ambos os formatos e normalizar para a versão de 11 dígitos antes da validação.
O algoritmo do dígito verificador
O CPF usa dois dígitos verificadores, cada um calculado de forma independente usando um algoritmo de módulo 11 com sequências de pesos diferentes. Esta verificação em duas etapas torna o CPF mais robusto contra erros de transcrição do que esquemas de dígito único. Veja o algoritmo completo:
- Primeiro dígito verificador (10º dígito): pegue os primeiros 9 dígitos. Multiplique cada um por pesos decrescentes de 10 a 2 (primeiro dígito x 10, segundo dígito x 9, ..., nono dígito x 2). Some todos os produtos. Calcule o resto: soma módulo 11. Se o resto for menor que 2, o primeiro dígito verificador é 0. Caso contrário, o primeiro dígito verificador é 11 menos o resto.
- Segundo dígito verificador (11º dígito): pegue os primeiros 10 dígitos (incluindo o dígito verificador que acabou de calcular). Multiplique cada um por pesos decrescentes de 11 a 2 (primeiro dígito x 11, segundo dígito x 10, ..., décimo dígito x 2). Some todos os produtos. Calcule o resto: soma módulo 11. Se o resto for menor que 2, o segundo dígito verificador é 0. Caso contrário, o segundo dígito verificador é 11 menos o resto.
Vamos percorrer um exemplo com o CPF 111.444.777-35. Os primeiros 9 dígitos são 5, 2, 9, 9, 8, 2, 2, 4, 7. Multiplique pelos pesos 10 a 2: (5x10)+(2x9)+(9x8)+(9x7)+(8x6)+(2x5)+(2x4)+(4x3)+(7x2) = 50+18+72+63+48+10+8+12+14 = 295. Então 295 mod 11 = 9 e, como 9 >= 2, o primeiro dígito verificador é 11-9 = 2. Para o segundo dígito verificador, pegue os 10 dígitos 5,2,9,9,8,2,2,4,7,2 e multiplique pelos pesos 11 a 2: (5x11)+(2x10)+(9x9)+(9x8)+(8x7)+(2x6)+(2x5)+(4x4)+(7x3)+(2x2) = 55+20+81+72+56+12+10+16+21+4 = 347. Então 347 mod 11 = 6, e 11-6 = 5. O CPF completo é 111.444.777-35, e ambos os dígitos verificadores correspondem.
Padrões inválidos comuns
Além do algoritmo do dígito verificador, há vários padrões de CPF que são matematicamente válidos, mas conhecidamente inválidos. Sua lógica de validação deve rejeitar estes:
- Todos os dígitos iguais — CPFs como 000.000.000-00, 111.111.111-11, 222.222.222-22, até 999.999.999-99 passam pela verificação módulo 11, mas não são CPFs reais. A Receita Federal nunca emite essas sequências. Sempre verifique este padrão antes de executar o algoritmo.
- Todos zeros — 000.000.000-00 é a entrada inválida mais comum e deve ser rejeitada diretamente.
- Dígitos sequenciais — Embora não sejam oficialmente proibidos, padrões como 123.456.789-09 às vezes são usados como dados de teste e devem ser sinalizados em ambientes de produção.
- Erros de comprimento — Entradas com menos ou mais de 11 dígitos (após remover a formatação) são inválidas. Atenção para zeros à esquerda ausentes: CPFs que começam com 0 são legítimos, e remover esse zero produz um número de 10 dígitos que vai falhar na validação.
Validando com a API da Normadata
A API Validate da Normadata lida com toda a lógica de validação de CPF — o algoritmo módulo 11, detecção de padrões inválidos, normalização de formato e extração de metadados — em uma única chamada de API. Isso significa que você não precisa implementar nem manter o algoritmo. Veja os exemplos:
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": "111.444.777-35",
"country": "BR",
"type": "cpf"
}import requests
response = requests.post(
"https://api.normadata.io/v1/validate/tax-ids",
headers={"X-API-Key": "nd_your_key_here"},
json={
"value": "111.444.777-35",
"country": "BR",
"type": "cpf"
}
)
data = response.json()
print(data["valid"]) # True{
"valid": true,
"country": "BR",
"type": "cpf",
"value": {
"raw": "11144477735",
"formatted": "111.444.777-35"
},
"metadata": {
"fiscal_region": "7",
"fiscal_region_name": "Amazonas, Para, Maranhao, Piaui",
"check_digits": "25"
}
}{
"valid": false,
"country": "BR",
"type": "cpf",
"value": {
"raw": "11111111111",
"formatted": "111.111.111-11"
},
"error": {
"code": "err_known_invalid",
"message": "CPF matches known invalid pattern (all same digits)."
}
}Próximos passos
A validação de CPF é um bloco fundamental para qualquer aplicação que atenda usuários brasileiros. Seja verificando clientes durante o onboarding, validando dados de Nota Fiscal ou processando transferências PIX, acertar a validação do CPF previne erros downstream e problemas de compliance. A API Validate da Normadata suporta não apenas CPFs, mas também CNPJs, detecção automática CPF/CNPJ e dezenas de outros identificadores latino-americanos — tudo pelo mesmo endpoint consistente. Acesse a página do produto Validate para a lista completa de tipos de documentos suportados, ou consulte a documentação da API para começar a integrar.