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,
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.
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 formatodo 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.