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

Validação de CPF: Algoritmo, Exemplos e API REST

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) é o número de identificação fiscal do Brasil para pessoas naturais, emitido pela Receita Federal. Se você está desenvolvendo um produto que atende usuários ou empresas brasileiras — um sistema de pagamentos, um fluxo de onboarding ou uma integração com NF-e — validar CPFs corretamente é um dos primeiros requisitos que seu backend deve atender. Este guia cobre a estrutura completa do CPF, o algoritmo de dígito verificador módulo 11 em dois passos com um exemplo resolvido, casos especiais inválidos e como validar CPFs em produção usando a API da Normadata.

O que é o CPF

O CPF é emitido pela Receita Federal do Brasil e identifica de forma única cada cidadão ou residente para fins fiscais. É usado em declarações de imposto de renda, abertura de contas bancárias, contratos, faturas e praticamente toda transação econômica formal no Brasil. O número é vitalício — não expira e não muda, exceto em casos excepcionais de fraude documentada. Empresas usam o CNPJ (Cadastro Nacional da Pessoa Jurídica), que tem uma estrutura e algoritmo distintos.

Estrutura do CPF

Um CPF tem 11 dígitos no formato XXX.XXX.XXX-DD, dividido em duas partes:

  • Base (9 dígitos): identifica o contribuinte. Os três primeiros dígitos indicam a região fiscal de emissão (não é um indicador confiável da localização atual).
  • Dígitos verificadores (2 dígitos): calculados a partir da base por um algoritmo ponderado de módulo 11 em dois passos.

A exibição formatada usa pontos e um hífen. Para transmissão e validação, normalize sempre removendo toda pontuação, resultando em 11 dígitos numéricos.

O algoritmo de validação

A validação do CPF usa dois passos consecutivos de módulo 11 ponderado para calcular cada dígito verificador.

  1. PASSO 1 — Calcular o primeiro dígito verificador (D1):
  2. - Pegue os 9 dígitos de base.
  3. - Multiplique pelos pesos [10, 9, 8, 7, 6, 5, 4, 3, 2].
  4. - Some os produtos.
  5. - Calcule: resto = soma mod 11.
  6. - Se resto < 2, então D1 = 0. Caso contrário, D1 = 11 - resto.
  7. PASSO 2 — Calcular o segundo dígito verificador (D2):
  8. - Pegue os 9 dígitos de base mais D1 (10 dígitos no total).
  9. - Multiplique pelos pesos [11, 10, 9, 8, 7, 6, 5, 4, 3, 2].
  10. - Some os produtos.
  11. - Calcule: resto = soma mod 11.
  12. - Se resto < 2, então D2 = 0. Caso contrário, D2 = 11 - resto.

Exemplo resolvido com 111.444.777-35. Base: 1,1,1,4,4,4,7,7,7. Passo 1: pesos [10,9,8,7,6,5,4,3,2] -> produtos [10,9,8,28,24,20,28,21,14] -> soma = 162 -> 162 mod 11 = 8 -> 11 - 8 = 3 -> D1 = 3. Passo 2: base + D1 = [1,1,1,4,4,4,7,7,7,3], pesos [11,10,9,8,7,6,5,4,3,2] -> produtos [11,10,9,32,28,24,35,28,21,6] -> soma = 204 -> 204 mod 11 = 6 -> 11 - 6 = 5 -> D2 = 5. CPF válido: 111.444.777-35.

Casos especiais inválidos

Existem casos onde o algoritmo produz dígitos verificadores corretos, mas o CPF ainda é inválido:

  • CPFs com todos os dígitos idênticos são inválidos por definição: 000.000.000-00 a 999.999.999-99. Esses passam pelo algoritmo, mas nunca são emitidos pela Receita Federal. Qualquer validador correto deve rejeitá-los explicitamente.
  • CPFs com menos de 11 dígitos após remover os separadores são inválidos. Alguns sistemas removem zeros à esquerda — nunca trate um CPF como inteiro.

Validando CPF com a API da Normadata

Em vez de implementar o algoritmo você mesmo, é possível validar CPFs com uma única chamada de API à Normadata. A API normaliza a entrada, verifica o formato e ambos os dígitos verificadores, rejeita casos especiais inválidos e retorna metadados estruturados.

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": "111.444.777-35",
    "country": "BR",
    "type": "cpf"
  }
Python
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
Resposta — CPF válido
{
  "valid": true,
  "country": "BR",
  "type": "cpf",
  "value": {
    "raw": "11144477735",
    "formatted": "111.444.777-35"
  },
  "metadata": {
    "check_digits": "35",
    "entity_type": "pessoa_fisica"
  }
}

Próximos passos

Agora que você entende a estrutura e o algoritmo do CPF, pode integrá-lo ao seu fluxo de onboarding ou sistema de pagamentos. A API da Normadata cobre não apenas o CPF, mas também o CNPJ (empresas) e identificadores 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 2026Validando o CUIT Argentino: Algoritmo, Formato e API5 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