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.
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,0003em 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:
| Critério | Estabelecimento | Ordem | DV |
|---|---|---|---|
| 11.222.333/0001-81 | Matriz | 0001 | 81 |
| 11.222.333/0002-62 | Filial 1 | 0002 | 62 |
| 11.222.333/0003-43 | Filial 2 | 0003 | 43 |
| 11.222.333/0010-89 | Filial 9 | 0010 | 89 |
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
- Pegue os 12 primeiros dígitos do CNPJ.
- Multiplique pelos pesos cíclicos:
5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2. - Some todos os produtos.
- Calcule o resto da divisão por 11.
- 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-81Implementaçã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:
| Critério | CNPJ atual (até 2026) | CNPJ alfanumérico |
|---|---|---|
| Caracteres permitidos (raiz e ordem) | Apenas dígitos 0–9 | Letras A–Z (maiúsculas) + dígitos 0–9 |
| Dígitos verificadores | Apenas dígitos 0–9 | Apenas dígitos 0–9 (sem mudança) |
| Tamanho total | 14 caracteres | 14 caracteres |
| Formato visual | XX.XXX.XXX/XXXX-DD | XX.XXX.XXX/XXXX-DD |
| Algoritmo de validação | Módulo 11 sobre dígitos | Módulo 11 sobre (ASCII - 48) de cada caractere |
| CNPJs antigos | Continuam válidos para sempre | Continuam 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 XXValidar 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:
| Critério | Validação local | API externa |
|---|---|---|
| O que verifica | Estrutura e DV | Existência, situação cadastral, razão social |
| Latência | < 1 ms | 100 ms a 5s |
| Custo | Zero | BrasilAPI grátis (rate limit) ou pagas |
| Dependência externa | Nenhuma | Sim — pode falhar |
| Quando usar | Validar formulário em tempo real | KYC 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.
Continue lendo
Como Validar CPF e CNPJ (2026): Algoritmo, Código em JavaScript e Boas Práticas
Guia completo de validação de CPF e CNPJ: algoritmo do módulo 11 passo a passo, implementação em JavaScript, máscara em formulários, erros clássicos e LGPD.
Como Gerar CNPJ Válido em JavaScript (2026): Algoritmo Passo a Passo
Implementação completa do algoritmo gerador de CNPJ em JavaScript: módulo 11, pesos corretos, função pronta em TypeScript, batch em lote, uso em testes e LGPD.
O que é CPF? Estrutura, Significado de Cada Dígito e Como Validar
Guia completo do CPF: estrutura, região fiscal, algoritmo de módulo 11 dos dígitos verificadores com passo a passo, validação local em JavaScript e o novo CPF alfanumérico.
Validação de Documentos Brasileiros em Formulários (2026): CPF, CNPJ, CEP, Telefone
Guia completo de validação de documentos BR em formulários web: CPF, CNPJ, CEP, telefone, RG, PIS. Máscara em tempo real, regex, frontend vs backend e UX recomendada.