Artigo Build·Desenvolvimento·11 min de leitura

O que é CNPJ? Estrutura, Significado e Novo CNPJ Alfanumérico

O CNPJ identifica empresas no Brasil com 14 dígitos divididos em raiz, ordem e dígitos verificadores. Em 2026 começa a transição para o formato alfanumérico, e sistemas precisam se preparar agora. Veja o guia completo.

Vitor Morais

Por Vitor Morais

Fundador do MochaLabz ·

🏢

Gere CNPJs válidos para testes

Formato com máscara ou só dígitos. Em lote, 100% no navegador.

Usar gerador de CNPJ →

CNPJ (Cadastro Nacional da Pessoa Jurídica) é o número de identificação fiscal de cada empresa, organização ou estabelecimento no Brasil, emitido pela Receita Federal. São 14 dígitos no formato XX.XXX.XXX/XXXX-DD, divididos em três blocos com significados específicos. Em julho de 2026 começa a transição para o formato alfanumérico — sistemas que processam CNPJ precisam se preparar agora para evitar refatoração emergencial.

O que é o CNPJ na prática

O CNPJ foi criado em 1998, substituindo o antigo CGC (Cadastro Geral de Contribuintes). Toda empresa, autônomo equiparado a empresa, condomínio, ONG, MEI, EIRELI, S.A., LTDA — qualquer entidade que emite nota fiscal ou tem CNAE — precisa ter um CNPJ. É o equivalente do CPF para pessoas jurídicas.

Para sistemas, o CNPJ é dado obrigatório em B2B, e-commerce que aceita compras PJ, cadastro de fornecedores, integração com sistemas governamentais (eSocial, SPED, NF-e). Validar o CNPJ corretamente — antes de gravar no banco — é higiene básica que evita ruído, suporte e problemas fiscais.

A estrutura completa dos 14 dígitos

Cada bloco do CNPJ carrega informação sobre a entidade:

1 1 . 2 2 2 . 3 3 3 / 0 0 0 1 - 8 1 └──── raiz ────┘ └ordem┘ └DV┘ (8 dígitos) (4) (2) ↑ identificador ↑ matriz ↑ verificadores da empresa (0001) módulo 11 ou filial (0002,0003…)
  • Raiz (8 dígitos): identifica a empresa em si. Toda matriz e todas as filiais compartilham a mesma raiz.
  • Ordem (4 dígitos): indica qual estabelecimento. 0001 é sempre a matriz; 0002, 0003 em diante são filiais.
  • Dígitos verificadores (2 dígitos): calculados via módulo 11 sobre os 12 primeiros.

Por que matriz e filiais têm DV diferente?

A raiz é igual, mas como o bloco de ordem muda (0001, 0002, 0003...), o cálculo de módulo 11 produz dígitos verificadores distintos para cada estabelecimento — ainda que pertençam à mesma empresa.

Matriz vs filial: como diferenciar

O bloco de ordem é o que diferencia. Empresas grandes podem ter dezenas ou centenas de filiais — todas com a mesma raiz, e ordens sequenciais:

Exemplo de matriz e filiais com a mesma raiz
CritérioEstabelecimentoOrdemDV
11.222.333/0001-81Matriz000181
11.222.333/0002-62Filial 1000262
11.222.333/0003-43Filial 2000343
11.222.333/0010-89Filial 9001089

Para identificar a matriz programaticamente, basta olhar os 4 dígitos após a barra: se for 0001, é matriz.

O algoritmo de módulo 11 para CNPJ

O CNPJ usa o mesmo princípio do CPF (módulo 11), mas com pesos diferentes. O cálculo é feito duas vezes — uma para cada dígito verificador.

Calculando o primeiro DV

  1. Pegue os 12 primeiros dígitos do CNPJ.
  2. Multiplique pelos pesos cíclicos: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
  3. Some todos os produtos.
  4. Calcule o resto da divisão por 11.
  5. Se resto < 2 → DV = 0. Caso contrário → DV = 11 - resto.

Calculando o segundo DV

Repita usando os 13 primeiros dígitos (12 + primeiro DV recém-calculado) com pesos 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.

Exemplo — CNPJ base: 11.222.333/0001 (sem DV ainda) Posição: 1 2 3 4 5 6 7 8 9 10 11 12 Dígito: 1 1 2 2 2 3 3 3 0 0 0 1 Peso: 5 4 3 2 9 8 7 6 5 4 3 2 Produto: 5 4 6 4 18 24 21 18 0 0 0 2 = 102 Resto = 102 mod 11 = 3 DV1 = 11 - 3 = 8 ✅ Para o DV2, agora com 13 dígitos: Dígito: 1 1 2 2 2 3 3 3 0 0 0 1 8 Peso: 6 5 4 3 2 9 8 7 6 5 4 3 2 Produto: 6 5 8 6 4 27 24 21 0 0 0 3 16 = 120 Resto = 120 mod 11 = 10 DV2 = 11 - 10 = 1 ✅ CNPJ completo: 11.222.333/0001-81

Implementação em JavaScript

A função abaixo limpa máscara, rejeita sequências repetidas, calcula os dois DVs e compara com os recebidos:

function validarCNPJ(input: string): boolean { const cnpj = input.replace(/[^\d]/g, ''); if (cnpj.length !== 14) return false; if (/^(\d)\1+$/.test(cnpj)) return false; // todos iguais const PESOS_DV1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; const PESOS_DV2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; const calcDV = (base: string, pesos: number[]): number => { const soma = [...base].reduce( (acc, d, i) => acc + Number(d) * pesos[i], 0, ); const resto = soma % 11; return resto < 2 ? 0 : 11 - resto; }; const dv1 = calcDV(cnpj.slice(0, 12), PESOS_DV1); const dv2 = calcDV(cnpj.slice(0, 13), PESOS_DV2); return dv1 === Number(cnpj[12]) && dv2 === Number(cnpj[13]); } validarCNPJ('11.222.333/0001-81'); // true validarCNPJ('11.111.111/1111-11'); // false (todos iguais) validarCNPJ('11.222.333/0001-00'); // false (DV errado)

O novo CNPJ alfanumérico (a partir de julho 2026)

A Instrução Normativa RFB 2.229/2024 oficializou a transição para o CNPJ alfanumérico. Mudanças principais:

CNPJ atual vs CNPJ alfanumérico (a partir de jul/2026)
CritérioCNPJ atual (até 2026)CNPJ alfanumérico
Caracteres permitidos (raiz e ordem)Apenas dígitos 0–9Letras A–Z (maiúsculas) + dígitos 0–9
Dígitos verificadoresApenas dígitos 0–9Apenas dígitos 0–9 (sem mudança)
Tamanho total14 caracteres14 caracteres
Formato visualXX.XXX.XXX/XXXX-DDXX.XXX.XXX/XXXX-DD
Algoritmo de validaçãoMódulo 11 sobre dígitosMódulo 11 sobre (ASCII - 48) de cada caractere
CNPJs antigosContinuam válidos para sempreContinuam válidos para sempre

O que muda no seu sistema

Inputs precisam aceitar A–Z em maiúsculas. Validações precisam calcular módulo 11 sobre o valor ASCII menos 48 de cada caractere (assim ‘0’=0, ‘9’=9, ‘A’=17, ‘Z’=42). Bancos de dados devem usar VARCHAR/CHAR, não INT. Comece a aceitar agora, mesmo que ainda não circulem CNPJs alfanuméricos.

Implementação para o CNPJ alfanumérico

A validação genérica que cobre os dois formatos:

function validarCNPJAlfanumerico(input: string): boolean { const limpo = input .toUpperCase() .replace(/[^0-9A-Z]/g, ''); if (limpo.length !== 14) return false; // Os 2 últimos sempre são dígitos numéricos if (!/^[0-9]{2}$/.test(limpo.slice(12, 14))) return false; // Rejeita sequências repetidas if (/^(.)\1+$/.test(limpo)) return false; const charValue = (c: string): number => c.charCodeAt(0) - 48; const PESOS_DV1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; const PESOS_DV2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; const calcDV = (base: string, pesos: number[]): number => { const soma = [...base].reduce( (acc, c, i) => acc + charValue(c) * pesos[i], 0, ); const resto = soma % 11; return resto < 2 ? 0 : 11 - resto; }; const dv1 = calcDV(limpo.slice(0, 12), PESOS_DV1); const dv2 = calcDV(limpo.slice(0, 13), PESOS_DV2); return dv1 === Number(limpo[12]) && dv2 === Number(limpo[13]); } // Funciona com CNPJ atual e com CNPJ alfanumérico futuro validarCNPJAlfanumerico('11.222.333/0001-81'); // true validarCNPJAlfanumerico('A1.B23.456/7890-XX'); // depende do XX

Validar localmente vs consultar a Receita

Validação local resolve a estrutura matemática. Para confirmar que a empresa existe e está ativa, você precisa de uma consulta externa:

Validação local vs consulta a APIs externas
CritérioValidação localAPI externa
O que verificaEstrutura e DVExistência, situação cadastral, razão social
Latência< 1 ms100 ms a 5s
CustoZeroBrasilAPI grátis (rate limit) ou pagas
Dependência externaNenhumaSim — pode falhar
Quando usarValidar formulário em tempo realKYC PJ, abertura de crédito, contratos

Boas APIs gratuitas para consulta: brasilapi.com.br/api/cnpj/v1/{cnpj} (sem autenticação, com rate limit). Para volume maior: ReceitaWS, CNPJá, Speedio.

Erros comuns ao trabalhar com CNPJ

Lista negra

  • Armazenar como inteiro: perde zeros à esquerda. CNPJ é string sempre.
  • Validar só por regex de tamanho: aceita CNPJs inválidos.
  • Não rejeitar sequências repetidas: 11.111.111/1111-11 passa no módulo 11 mas é inválido.
  • Usar type="number" no input: quebra com a transição alfanumérica e perde a máscara.
  • Misturar CNPJ formatado e cru no banco: guarde sempre só os 14 caracteres limpos, formate na exibição.
  • Confundir matriz com filial: regras tributárias diferem; sempre cheque a ordem.

Checklist para sistemas com CNPJ

  • ✅ Input aceita A-Z maiúsculas + 0-9 (preparado para 2026).
  • ✅ Banco de dados como VARCHAR(14) ou CHAR(14).
  • ✅ Função de validação implementa módulo 11 com pesos corretos.
  • ✅ Rejeição explícita de sequências de dígitos repetidos.
  • ✅ Diferenciação programática entre matriz (0001) e filial.
  • ✅ Para fluxos críticos: consulta na Receita ou BrasilAPI.
  • ✅ Geração de CNPJs fictícios para testes (LGPD-friendly).
  • ✅ UX: máscara automática + validação em tempo real.

Para mão na massa, veja como gerar e validar CNPJ em JavaScript ou validação de CPF e CNPJ em formulários web.

Perguntas frequentes

O que significa CNPJ e para que serve?+

CNPJ significa Cadastro Nacional da Pessoa Jurídica. É um número de 14 dígitos emitido pela Receita Federal que identifica unicamente cada empresa, organização ou estabelecimento no Brasil. É exigido para emitir nota fiscal, abrir conta bancária PJ, contratar funcionários, declarar impostos e em qualquer relação formal entre pessoas jurídicas e o governo ou outras empresas.

O que cada bloco do CNPJ representa?+

Os 8 primeiros dígitos formam a raiz do CNPJ — identificador único da empresa. Os 4 dígitos seguintes representam a ordem do estabelecimento: 0001 sempre é a matriz, 0002 em diante são filiais. Os 2 últimos dígitos são verificadores, calculados pelo algoritmo de módulo 11 sobre os 12 anteriores.

Qual a diferença entre CNPJ da matriz e da filial?+

A raiz (8 primeiros dígitos) é igual para matriz e todas as filiais — sinaliza que pertencem à mesma empresa. O que muda é o bloco de 4 dígitos após a barra: 0001 para matriz, 0002 para a primeira filial, 0003 para a segunda, e assim por diante. Os dígitos verificadores também serão diferentes para cada estabelecimento.

O que é o novo CNPJ alfanumérico de 2026?+

A Receita Federal aprovou a transição para CNPJ alfanumérico, com início em julho de 2026. Os 8 primeiros caracteres (raiz) e os 4 seguintes (ordem) poderão ser letras maiúsculas ou dígitos. Os 2 dígitos verificadores continuam sendo numéricos. Formato: XX.XXX.XXX/XXXX-DD, com letras possíveis nos primeiros 12 caracteres. CNPJs já existentes não mudam.

Como funciona o algoritmo de validação do CNPJ?+

Usa-se módulo 11 com pesos cíclicos. Para o primeiro dígito verificador, multiplica-se cada um dos 12 primeiros dígitos pelos pesos 5,4,3,2,9,8,7,6,5,4,3,2 (nessa ordem), soma-se, divide-se por 11 e calcula-se o resto. Se resto < 2, DV = 0; senão DV = 11 - resto. Para o segundo DV, repete-se com os 13 primeiros dígitos e pesos 6,5,4,3,2,9,8,7,6,5,4,3,2.

Posso validar CNPJ no front-end sem chamar a Receita Federal?+

Sim — e deve. A validação dos dígitos verificadores é puramente matemática e roda em milissegundos no navegador. Use no formulário para feedback instantâneo. A consulta na Receita só é necessária quando você precisa confirmar que o CNPJ existe, está ativo e quem é a razão social — útil para contratos, KYC PJ e prevenção de fraude. Para isso, há a API gratuita do BrasilAPI ou serviços pagos.

CNPJ com todos os dígitos iguais é válido?+

Não. Sequências como 11.111.111/1111-11 a 99.999.999/9999-99 passam matematicamente no cálculo de módulo 11 (os DVs ficam corretos por coincidência), mas a Receita Federal as trata como inválidas. Sempre adicione checagem específica que rejeita CNPJs com 14 dígitos repetidos antes de calcular o DV.

Como meu sistema deve se preparar para o CNPJ alfanumérico?+

Atualizar três pontos: (1) campos de input devem aceitar A-Z em maiúsculas, não só dígitos — remover type="number" e máscaras restritivas; (2) lógica de validação deve operar sobre o valor ASCII menos 48 de cada caractere para o cálculo do módulo 11; (3) banco de dados deve armazenar como string (CHAR(14)/VARCHAR(14)), não como inteiro. A Receita publicou documentação oficial e exemplos.

#cnpj#brasil#algoritmo#módulo 11#receita federal#empresa#cnpj alfanumérico#validação#javascript#matriz filial

Continue lendo