Ramos da InformáticaComo Validar o Novo CNPJ Alfanumérico (2026): Código e...

Como Validar o Novo CNPJ Alfanumérico (2026): Código e Regex

Novo modelo do CNPJ vai entrar em vigor em 2026 e apenas para novas empresas registradas. Entenda as mudanças e códigos em Java, Python, Javascript e TypeScript.

-

CNPJ é a sigla para Cadastro Nacional de Pessoas Jurídicas e trata-se de um número registrado pela Receita Federal durante a abertura de uma empresa.

Em poucas palavras, o CNPJ trata-se de um documento básico de identificação que todo negócio precisa ter antes mesmo de iniciar as suas atividades no mercado.

O documento funciona basicamente como um CPF para empresas, que permite que o governo, outras empresas ou até mesmo pessoas físicas, possam identificar a empresa durante as suas atividades e acessar informações,

Dica de Leitura: Se você está se preparando para as mudanças no CNPJ e precisa de ajuda para implementar validações de forma eficiente, talvez seja útil explorar como utilizar tecnologias de código aberto e inteligência artificial para automatizar processos. Leia nosso guia sobre como usar o OpenAI Codex com mais eficiência para descobrir como essas ferramentas podem ajudar na validação e processamento de dados.

Mudanças no CNPJ

Acontece que o CNPJ vai mudar a partir de julho de 2026 e passará a ser alfanumérico, contendo letras e números Até então com formato apenas numérico, esse código passará a ser composto por uma combinação de letras e números a partir de julho de 2026.

O Serpro, em parceria com a RFB, disponibiliza, na pasta cnpj-alfanumerico.zip, códigos de validação do dígito verificador do CNPJ desenvolvidos nas linguagens Java, Python e TypeScript.

Além disso, o documento CalculoDVCNPJAlfanumerico.pdf oferece uma explicação detalhada sobre o cálculo do dígito verificador, permitindo sua implementação em outras linguagens de programação. Basta acessar os links.

Onde localizar os códigos de validação no ZIP

Você deve acessar o repositório (provavelmente hospedado pelo Serpro ou GitHub próprio), dentro dele encontrará:

  • validate_cnpj.java ou similar (Java)
  • validate_cnpj.py (Python)
  • validateCnpj.ts (TypeScript)
  • PDF explicando o cálculo do dígito verificador

A mudança no CNPJ foi anunciada oficialmente pela Receita Federal. O objetivo do CNPJ alfanumérico, como o novo formato vem sendo chamado, é aumentar a capacidade de geração de novas inscrições deste documento.

O formato atual, que continuará válido para cadastros já existentes, o CNPJ é formado por 14 dígitos. Como explica o Serpro (Serviço Federal de Processamento de Dados), os oito primeiros dígitos servem para identificar a pessoa jurídica (como uma empresa).

Os quatro dígitos seguintes correspondem ao número de ordem e servem para identificar os estabelecimentos da organização, como matriz ou filiais. Os últimos dois dígitos servem para validar toda a sequência por meio de um cálculo específico chamado de “módulo 11”.

Como será o CNPJ alfanumérico?

O CNPJ alfanumérico continuará sendo composto por 14 caracteres, mas qualquer um dos 12 primeiros dígitos poderá ser um número ou uma letra maiúscula. Apenas os dois últimos dígitos permanecerão sendo somente numéricos para cumprir a função de verificação de toda a sequência.

Segundo o Serpro, o novo formato permitirá o registro de mais de 1 quadrilhão de organizações, com cada uma delas podendo registrar mais de 1 milhão de filiais.

Por outro lado, sistemas de gestão empresarial e tantos outros terão que ser adaptados para o novo formato do CNPJ. O Serpro explica que esse trabalho envolverá três processos principais:

  • adaptação para “receber” e “ler” o CNPJ alfanumérico;
  • adaptação nos bancos de dados para armazenar o novo formato;
  • incorporação da nova rotina para o cálculo dos dígitos verificadores.

Dessa forma, a implementação do CNPJ alfanumérico visa garantir a continuidade das políticas públicas e assegurar a disponibilidade de números de identificação, sem causar impactos técnicos significativos para a sociedade brasileira.


Tech Lead Setup


Arquitetura & Refatoração Segura

⚡ 3 Hacks de Migração (Sênior/DBA)

1. Indexação Otimizada (DBA Hack):

Mudar colunas indexadas para VARCHAR(14) UTF-8 destrói o cache. Use CHAR(14) ASCII. O novo CNPJ só usa A-Z/0-9, isso corta o peso do índice pela metade e salva seus JOINs.

2. Validação O(1) na Memória:

O novo cálculo do dígito verificador exige converter letras (A=10, B=11). Evite Switches/IFs pesados. Carregue um mapa Hash na inicialização do microsserviço para fazer a busca em tempo constante.

3. Zero Downtime (Strangler Pattern):

Não faça ALTER TABLE na coluna de produção. Crie documento_novo, use Dual-Write na API e rode um worker em background para sincronizar o passado. Quando estabilizar, assuma a coluna nova.

Mais para desenvolvedores

Exemplos simplificados (adaptados a partir dos códigos oficiais)

Java

javaCopiarEditarprivate static final Pattern PATTERN = Pattern.compile("[0-9A-Z]{2}\\.[0-9A-Z]{3}\\.[0-9A-Z]{3}/[0-9A-Z]{4}-[0-9]{2}");
int[] weights = {6,5,4,3,2,9,8,7,6,5,4,3,2};

boolean isValid(String cnpj) {
  if (!PATTERN.matcher(cnpj).matches()) return false;
  String s = cnpj.replaceAll("[\\./-]", "");
  String core = s.substring(0, 12);
  int dv1 = calcDv(core, 1);
  int dv2 = calcDv(core + dv1, 0);
  return s.charAt(12)-'0' == dv1 && s.charAt(13)-'0' == dv2;
}
int calcDv(String s, int shift) { ... }  // módulo 11 adaptado via ASCII-48

O cálculo do dígito usa multiplicadores fixos e a regra resultado = (11 – (soma % 11)), se ≥2; senão zero, aplicando a tabela ASCII-48 para letras serpro.gov.brdomvsit.com.br+11welyab.dev+11serpro.gov.br+11techshake.com+7tecnoblog.net+7serpro.gov.br+7.

Python

Baseado em repositórios no GitHub (ex.: TigoP e JCLucieto):

pythonCopiarEditarimport re
class NovoCNPJ:
    PATTERN = re.compile(r"[0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}/[0-9A-Z]{4}-[0-9]{2}")
    def __init__(self, cnpj): ...
    def normalize(self):
        self.raw = re.sub(r"[^\dA-Z]", "", self.cnpj)
    def to_values(self):
        return [(ord(ch)-48) for ch in self.raw[:12]]
    def calc_dv(self, values, shift):
        ...
    def validate(self):
        ...

Esses projetos também fazem normalização, cálculo e validação completa github.com.

TypeScript

Provavelmente semelhante ao GitHub “CNpjAlfaNumerico” ou gist:

tsCopiarEditarconst regex = /^[0-9A-Z]{14}$/;
function validCnpj(cnpj: string): boolean {
  if (!regex.test(cnpj)) return false;
  const nums = cnpj.split("").map(ch => {
    const code = ch.charCodeAt(0) - 48;
    return code;
  });
  // mesmo cálculo com weights e módulo 11...
}

Alguns gists usam a função validCalc com loop e fator que reinicia em 9 techshake.com+13gist.github.com+13github.com+13.


🧪 Exemplos de regex para validação de formato

Aqui estão expressões regulares para validar o formato do CNPJ alfanumérico (14 caracteres, letras maiúsculas nos 12 primeiros e números nos 2 finais), suportando com e sem formatação:

Regex Permite Comentário
^[0-9A-Z]{12}[0-9]{2}$ Sem pontos, barras ou hífen Apenas caracteres diretos
^[0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}/[0-9A-Z]{4}-[0-9]{2}$ Com máscara clássica Requer pontuação correta
^[0-9A-Z]{2}\.?[0-9A-Z]{3}\.?[0-9A-Z]{3}/?[0-9A-Z]{4}-?[0-9]{2}$ Com máscara opcional Flexível com ou sem formatação

Combine esses regexes com o algoritmo módulo 11 adaptado para uma validação completa: formato + dígito verificador.

FAQ: Migração CNPJ Alfanumérico

O que muda na estrutura do novo CNPJ?
+
O formato continua com 14 posições. No entanto, as 12 primeiras posições (raiz e filial) passam a aceitar letras maiúsculas (A-Z) e números (0-9). Os dois últimos dígitos (Dígitos Verificadores) continuarão sendo obrigatoriamente numéricos.
Qual é o prazo oficial para a mudança?
+
A Receita Federal determinou que a transição e a emissão dos novos CNPJs alfanuméricos começarão em julho de 2026. Todos os CNPJs numéricos existentes continuarão válidos sem necessidade de recadastramento.
Como adaptar o Banco de Dados (SQL/NoSQL)?
+
Colunas tipadas como BIGINT ou numéricas quebram com o novo formato. A recomendação técnica é migrar o schema para VARCHAR(14) ou CHAR(14). Para manter a performance de indexação B-Tree, configure a Collation da coluna para ASCII.
Como calcular o novo Dígito Verificador (DV)?
+
O cálculo do módulo 11 é mantido. A diferença é que os caracteres alfanuméricos devem ser convertidos para valores decimais baseados na tabela ASCII, subtraindo 48. Assim, ‘A’ equivale a 17, ‘B’ equivale a 18, até ‘Z’ que equivale a 42. Os números de ‘0’ a ‘9’ mantêm seus valores nominais.

Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade dedicado a linguagens de programação, banco de dados, DevOps, Internet das Coisas (IoT), tecnologias da Indústria 4.0, cibersegurança e startups. Com curadoria de conteúdos de qualidade, o projeto é mantido por Ramos de Souza Janones.

Mais recentes

Como aprender a programar, um guia definitivo

Última atualização em 23/04/2026. Guia completo sobre: Como aprender a programar. Espero que este “guia” ou “manifesto”, como prefiro chamar, seja...

Stream Deck para Desenvolvedores: o Console de Comando do Futuro

Esqueça os streamers. Descubra como o Stream Deck se tornou o hardware essencial para Engenheiros de IA e Full...

Como Usar o Skills in Chrome no Brasil: Tutorial Completo de IA

A inteligência artificial já faz parte do nosso fluxo de trabalho, mas ter que reescrever os mesmos prompts repetidamente...

Context Engineering: Como Arquitetar Dados para LLMs e RAG

Na edição desta newsletter intitulada “Engenharia de Prompt: Não é só mais uma buzzword“: https://www.linkedin.com/pulse/engenharia-de-prompt-n%C3%A3o-%C3%A9-s%C3%B3-mais-uma-buzzword-de-souza-janones-tpkxf tratei sobre o tema...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Aprender Idiomas com Google Tradutor: Na Prática

O Google está lançando um novo recurso experimental com tecnologia de IA no Google Tradutor, projetado para ajudar as...

Comunidades Internacionais de Desenvolvedores

Descubra as melhores comunidades internacionais de devs para 2026: GitHub, Stack Overflow, Discord e mais. Comparativo de salários Brasil vs. exterior e guia de carreira remota.

Mais Lidos

Scrum: Como o Bom Humor Aumenta o Engajamento

Descubra como a ciência do riso e o bom humor reduzem o burnout e aumentam a produtividade em equipas tech. Aprenda a aplicar a segurança psicológica nas suas cerimónias Scrum.

Guia Definitivo de PHP: Funcionalidades e Uso

PHP é uma linguagem interpretada livre, usada originalmente apenas...

Otimização de Performance no MySQL: Guia Avançado

Aprenda a otimizar a performance do MySQL. Guia prático...

Benefícios Ocultos dos Cartões de Crédito

Descubra os benefícios práticos e os segredos do seu...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Você vai gostarrelacionados
Continue aprendendo

E-Zine Dev Ramos

Quer dominar arquitetura e IA?

Junte-se a +10.000 profissionais. Receba semanalmente estratégias de Node.js, React e IA que nunca publicamos no blog.

Assinar Gratuitamente Zero spam. Cancele quando quiser.