Ferramentas gratuitas para desenvolvedores. Nenhum dado real de pessoas é consultado ou armazenado.Como funciona o algoritmo do CPF →
Fundamentos

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.

Roberto GuerraPublicado em 05 de outubro de 2026Editar no GitHub

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.

Leia também