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 CNPJValidar 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
12abc34501de35e gravar em caixa alta evita duplicata de cadastro. - Rejeite o resto. Depois de limpar, só podem sobrar
0-9nas onze posições do CPF e0-9A-Znas 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 eVARCHAR(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
CHECKde 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
- Receita Federal / Serpro — Manual de cálculo do DV do CNPJ.
- Receita Federal — CNPJ Alfanumérico (IN RFB nº 2.229/2024).
- Lei nº 13.709/2018 (LGPD).