Pular para o conteúdo
Obtani
Documentos e Empresas

Validar CPF e CNPJ no Seu Sistema: Checklist de Banco, API e Formulário

5 min de leitura

Quer o número agora? Confira o dígito verificador de CPF e de CNPJ (inclusive alfanumérico) e veja o cálculo passo a passo.

Validador de CPF e CNPJ

Validar CPF e CNPJ parece assunto resolvido: copia-se uma função da internet, chama-se no formulário e pronto. Só que a maior parte dos problemas não está na conta do dígito verificador — está em onde a validação roda, o que é guardado no banco e como a entrada é normalizada antes de tudo isso. E, desde julho de 2026, há um complicador novo: o CNPJ pode ter letras.

Este é o checklist que eu seguiria em uma revisão de código.

1. Normalize antes de validar

Toda entrada deveria passar por uma única função de normalização:

  • Remova a máscara (pontos, barra, hífen) e espaços das pontas — gente cola o número com espaço invisível no fim mais vezes do que você imagina.
  • Converta letras para maiúsculas. O CNPJ alfanumérico usa maiúsculas; aceitar 12abc34501de35 e gravar em caixa alta evita duplicata de cadastro.
  • Rejeite o resto. Depois de limpar, só podem sobrar 0-9 nas onze posições do CPF e 0-9A-Z nas doze primeiras do CNPJ, com os dois verificadores sempre numéricos.

A regra de ouro: normalize na borda (no controlador, na entrada da API) e trabalhe com o valor limpo daí para dentro. Normalizar em três lugares diferentes é como não normalizar.

2. Guarde texto, não número

CPF e CNPJ não são números — são identificadores. Guardar em coluna numérica causa três problemas clássicos: zeros à esquerda somem, o CNPJ alfanumérico não cabe e comparações de igualdade passam a depender de conversão.

  • Use VARCHAR(11) para CPF e VARCHAR(14) para CNPJ (sem máscara).
  • Guarde sempre no mesmo formato — normalizado, sem pontuação. Formatar é responsabilidade da camada de apresentação.
  • Se hoje a coluna é numérica, a migração para texto é o item mais urgente da sua lista: é o que vai quebrar quando chegar o primeiro cliente com CNPJ alfanumérico.

Quer um índice único? Crie sobre a coluna normalizada, não sobre o valor formatado.

3. Valide no servidor, sempre

Validação no navegador é conforto: melhora a experiência e evita uma ida ao servidor. Não é segurança. Qualquer pessoa envia um POST direto.

Então:

  • No formulário: valide enquanto a pessoa digita (ou ao sair do campo) para dar retorno imediato.
  • Na API: valide de novo, sempre, antes de gravar.
  • No banco: se o seu SGBD permite, uma CHECK de formato (tamanho e alfabeto) barra o dado torto que escapou por um script ou uma carga manual.

Uma função de validação, três chamadas. Não três implementações.

4. Use uma implementação só — e que aceite o formato novo

O algoritmo do CNPJ alfanumérico, publicado pela Receita Federal, é retrocompatível: o valor de cada caractere é o código ASCII menos 48 (dígitos continuam valendo eles mesmos; A = 17, até Z = 42), com pesos de 2 a 9 da direita para a esquerda e módulo 11. Aplicado a um CNPJ só de dígitos, ele devolve os mesmos verificadores de antes.

Consequência prática: não crie um caminho separado para o CNPJ novo. Substitua a função antiga por uma que trate caracteres em vez de dígitos e você cobre os dois formatos com o mesmo código. O passo a passo completo está em CNPJ alfanumérico: o que mudou e como validar, e o Validador de CPF e CNPJ mostra a conta posição a posição para você conferir a sua implementação contra um caso conhecido.

Não esqueça de rejeitar as sequências repetidas (000.000.000-00, 111.111.111-11 e as demais): elas passam no módulo 11 e não são emitidas pela Receita Federal.

5. Escreva mensagens de erro que ajudam

"CPF inválido" é uma mensagem ruim: a pessoa não sabe se errou um dígito, se faltou um número ou se o campo não aceita pontuação. Separe os casos:

  • Tamanho: "Um CPF tem 11 dígitos; você digitou 10."
  • Caracteres: "O CNPJ aceita letras e números nas 12 primeiras posições; os dois últimos são sempre numéricos."
  • Dígito verificador: "Os últimos dois dígitos não conferem. Confira o número digitado."
  • Sequência repetida: "Esse número não é emitido pela Receita Federal."

E cuide da acessibilidade: associe o erro ao campo (aria-describedby), anuncie a mudança em uma região viva (aria-live) e não use só a cor vermelha para indicar o problema.

6. Cuide do campo no formulário

  • Teclado certo no celular: inputmode="numeric" para CPF; para CNPJ, deixe o teclado normal, porque agora entram letras.
  • Máscara que não atrapalha: ela deve aceitar colar o número com ou sem pontuação, e não pode apagar letras no campo de CNPJ.
  • Não bloqueie o paste. Bloquear colagem em campo de documento é hostilidade sem ganho de segurança.
  • Um campo, não dois. Se o seu produto aceita CPF e CNPJ no mesmo cadastro, detecte o tipo pelo conteúdo em vez de obrigar a pessoa a escolher em um seletor.

7. Trate o dado como dado pessoal

CPF é dado pessoal pela LGPD (Lei 13.709/2018). Na prática:

  • Não colete se não vai usar.
  • Não registre em log. Corpo de requisição inteiro no log é a forma mais comum de espalhar CPF pela sua infraestrutura.
  • Mascare na exibição quando o valor completo não for necessário na tela.
  • Não use dados reais em desenvolvimento — veja por que nunca usar um CPF real em ambiente de teste.

8. Teste com casos ruins

Uma suíte mínima de validação deveria cobrir:

  • CPF e CNPJ válidos, com e sem máscara;
  • CNPJ alfanumérico válido (o caso que a sua suíte provavelmente não tem);
  • CNPJ em minúsculas (tem de ser aceito e normalizado);
  • dígito verificador errado;
  • tamanho errado (a mais e a menos);
  • caractere inválido, inclusive letra nas duas últimas posições do CNPJ;
  • as dez sequências repetidas do CPF e 00.000.000/0000-00;
  • string vazia, só espaços, null.

Precisa de números para isso? O Gerador de CPF e CNPJ produz lotes válidos, com ou sem máscara, numéricos ou alfanuméricos — e nenhum deles pertence a uma pessoa real.

Uma coisa que validação nenhuma resolve

Dígito verificador certo significa número bem formado. Não significa que o documento existe, que está regular ou que pertence a quem digitou. Se o seu fluxo depende disso — crédito, onboarding regulado, contrato de valor alto —, a conferência tem de ser feita nos sistemas oficiais da Receita Federal ou por um serviço autorizado, com a base legal adequada. O validador local é o primeiro filtro, não a última palavra.

Fontes

Leia também