Estrutura do CNPJ: raiz, ordem e dígitos verificadores
Como o CNPJ é formado: raiz, ordem da matriz e das filiais, dígitos verificadores, o formato alfanumérico e o cálculo de 12.ABC.345/01DE-35 passo a passo.
Um CNPJ parece um número de 14 dígitos com pontuação, mas cada parte tem uma função. As oito primeiras posições identificam a empresa, as quatro seguintes identificam o estabelecimento e as duas últimas existem só para detectar erros de digitação. Entender essa divisão ajuda a escrever validações corretas, a agrupar filiais em relatórios e a adaptar sistemas para o formato alfanumérico, em que as 12 primeiras posições podem conter letras.
Anatomia: raiz, ordem e dígitos
Tome como exemplo 11.222.333/0001-81, o CNPJ numérico clássico de documentação:
| Parte | Posições | No exemplo | O que identifica |
|---|---|---|---|
| Raiz | 1 a 8 | 11.222.333 |
A empresa |
| Ordem | 9 a 12 | 0001 |
O estabelecimento (matriz ou filial) |
| Dígitos verificadores | 13 e 14 | 81 |
Nada: servem para conferir os anteriores |
A máscara 00.000.000/0000-00 reflete essa divisão: os dois pontos separam a raiz em blocos de leitura, a barra separa a raiz da ordem e o hífen separa os verificadores. A pontuação é só apresentação e não entra no cálculo, então o armazenamento ideal é a sequência de 14 caracteres sem separadores.
No CPF, o nono dígito indica a região fiscal de emissão (veja o guia sobre dígitos do CPF e regiões fiscais). No CNPJ, a recomendação é tratar a raiz como um identificador opaco: o código não deve tentar extrair dela região, data ou tipo de empresa, só usá-la para comparar e agrupar.
Matriz e filiais
A ordem distingue os estabelecimentos de uma mesma empresa. Por convenção, a ordem 0001 identifica a matriz, e 0002, 0003 e assim por diante, as filiais. Todos compartilham a raiz, e cada um tem os próprios dígitos verificadores, porque a ordem entra no cálculo.
Com a raiz fictícia MW1MUDZG, por exemplo:
| Estabelecimento | CNPJ |
|---|---|
| Matriz | MW.1MU.DZG/0001-90 |
| Filial 0002 | MW.1MU.DZG/0002-71 |
| Filial 0003 | MW.1MU.DZG/0003-52 |
Duas consequências práticas. Primeira: para agrupar estabelecimentos de uma empresa, compare as oito primeiras posições, não o CNPJ inteiro. Segunda: os verificadores mudam de filial para filial, então não dá para derivar o CNPJ de uma filial copiando os dois últimos dígitos da matriz. O gerador de CNPJ cria matriz e filiais com uma raiz fixa, e o validador de CNPJ mostra raiz, ordem e se o número é de matriz.
No formato alfanumérico, a ordem também pode conter letras, como em 12.ABC.345/01DE-35. Para esse número, a ordem é 01DE; o número não é de matriz, porque a ordem não é 0001.
O formato alfanumérico
A Instrução Normativa RFB nº 2.229/2024 alterou o formato do CNPJ para comportar letras. Desde julho de 2026, novas inscrições recebem CNPJs alfanuméricos; os números já existentes não mudam. A estrutura continua a mesma:
- 14 posições, divididas em raiz (8), ordem (4) e dígitos verificadores (2);
- as 12 primeiras posições aceitam dígitos de 0 a 9 e letras de A a Z;
- os dois dígitos verificadores continuam numéricos;
- o cálculo usa o valor ASCII de cada caractere menos 48.
A última regra é a que permite que um único algoritmo trate os dois formatos. O código ASCII de 0 é 48, de 1 é 49 e assim por diante, então um dígito menos 48 vale ele mesmo. As letras maiúsculas começam em 65, o código de A, e por isso valem de 17 (A) a 42 (Z). Uma implementação antiga que converte cada caractere com parseInt ou int() funciona para dígitos e quebra com letras; uma que usa o código do caractere menos 48 funciona para os dois.
Letras minúsculas não fazem parte do formato. Um sistema bem comportado aceita 12.abc.345/01de-35 na entrada, converte para maiúsculas e só então valida e grava. O que muda para bancos de dados, máscaras e integrações está no guia CNPJ alfanumérico: o que muda no seu sistema.
Cálculo passo a passo com 12.ABC.345/01DE-35
Os dois verificadores são calculados com módulo 11, como no CPF (veja o algoritmo do módulo 11), mas com pesos diferentes. A base são as 12 primeiras posições: 12ABC34501DE.
Primeiro dígito. Cada caractere é convertido para o seu valor e multiplicado pelos pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2:
| Posição | Caractere | Valor (ASCII − 48) | Peso | Produto |
|---|---|---|---|---|
| 1 | 1 |
1 | 5 | 5 |
| 2 | 2 |
2 | 4 | 8 |
| 3 | A |
17 | 3 | 51 |
| 4 | B |
18 | 2 | 36 |
| 5 | C |
19 | 9 | 171 |
| 6 | 3 |
3 | 8 | 24 |
| 7 | 4 |
4 | 7 | 28 |
| 8 | 5 |
5 | 6 | 30 |
| 9 | 0 |
0 | 5 | 0 |
| 10 | 1 |
1 | 4 | 4 |
| 11 | D |
20 | 3 | 60 |
| 12 | E |
21 | 2 | 42 |
| Soma | 459 |
459 dividido por 11 dá 41, com resto 8. Como o resto não é menor que 2, o dígito é 11 − 8 = 3.
Segundo dígito. A base ganha o primeiro verificador, 12ABC34501DE3, e os pesos passam a ser 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2:
| Posição | Caractere | Valor (ASCII − 48) | Peso | Produto |
|---|---|---|---|---|
| 1 | 1 |
1 | 6 | 6 |
| 2 | 2 |
2 | 5 | 10 |
| 3 | A |
17 | 4 | 68 |
| 4 | B |
18 | 3 | 54 |
| 5 | C |
19 | 2 | 38 |
| 6 | 3 |
3 | 9 | 27 |
| 7 | 4 |
4 | 8 | 32 |
| 8 | 5 |
5 | 7 | 35 |
| 9 | 0 |
0 | 6 | 0 |
| 10 | 1 |
1 | 5 | 5 |
| 11 | D |
20 | 4 | 80 |
| 12 | E |
21 | 3 | 63 |
| 13 | 3 |
3 | 2 | 6 |
| Soma | 424 |
424 dividido por 11 dá 38, com resto 6. O dígito é 11 − 6 = 5. O CNPJ completo é 12.ABC.345/01DE-35.
Para conferir com um numérico, a mesma conta sobre 112223330001 dá somas 102 e 120, restos 3 e 10 e dígitos 8 e 1: 11.222.333/0001-81. A calculadora de dígitos de CNPJ mostra essa tabela para qualquer base.
Sequências repetidas
Se os 12 primeiros caracteres forem iguais, a conta ainda produz dois verificadores, e o resultado parece válido: 00.000.000/0000-00 fecha com 0 e 0, e ZZ.ZZZ.ZZZ/ZZZZ-62 fecha com 6 e 2. Por convenção, como no CPF, essas sequências não são consideradas válidas. Elas costumam aparecer quando alguém preenche um campo obrigatório só para avançar no formulário, e aceitá-las encheria o cadastro de valores sem sentido.
Na prática, a checagem é uma linha antes do cálculo:
if (/^(.)\1{11}/.test(cnpj)) return false; // 12 caracteres iguais
A regex compara só as 12 primeiras posições, porque os verificadores de uma sequência repetida nem sempre repetem o mesmo caractere, como mostra o 62 acima.
CNPJ e CPF: as diferenças
Os dois documentos usam módulo 11 e a mesma regra para o resto (menor que 2 vira 0), mas diferem em quase todo o resto:
| CPF | CNPJ | |
|---|---|---|
| Tamanho | 11 dígitos | 14 posições |
| Estrutura | 9 dígitos de base + 2 verificadores | raiz (8) + ordem (4) + 2 verificadores |
| Caracteres | só dígitos | dígitos; nas 12 primeiras posições, também letras de A a Z |
| Pesos do 1º dígito | 10 a 2 | 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 |
| Pesos do 2º dígito | 11 a 2 | 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 |
| Valor do caractere | o próprio dígito | ASCII − 48 |
| Máscara | 000.000.000-00 |
00.000.000/0000-00 |
Os pesos do CNPJ voltam a 9 depois de chegar a 2, em vez de continuar decrescendo. Esse detalhe é a causa de muitos bugs em implementações escritas a partir da versão do CPF, que usa pesos decrescentes contínuos. Implementações completas nas duas regras estão em CNPJ em JavaScript, TypeScript, Python e outras linguagens.
Perguntas frequentes
Como saber se um CNPJ é de matriz ou de filial?
Pela ordem, as quatro posições depois da barra. A ordem 0001 identifica a matriz; 0002 em diante, as filiais. A raiz, as oito primeiras posições, é a mesma para todos os estabelecimentos da empresa.
Por que a letra A vale 17 no cálculo?
Porque o valor de cada caractere é o seu código ASCII menos 48. O código de A é 65, e 65 menos 48 dá 17. A mesma regra aplicada a um dígito devolve o próprio dígito, já que o código de 0 é 48.
O dígito verificador do CNPJ pode ser uma letra?
Não. Mesmo no formato alfanumérico, os dois últimos caracteres são sempre dígitos de 0 a 9, porque o módulo 11 produz um número entre 0 e 9 depois da regra do resto menor que 2.