Em 31 de julho de 2026 a Receita Federal emitiu o primeiro CNPJ com letras no meio dos números. Depois de quase trinta anos com um formato estritamente numérico, o cadastro de empresas mudou de regra — e quem escreve software brasileiro precisa saber exatamente o que fazer.
Este guia reúne o que já está definido: a estrutura do novo número, o cálculo do dígito verificador adaptado, o que revisar no código e no banco de dados, o que ainda não foi confirmado pela Receita e como testar tudo hoje mesmo.
O que aconteceu, em ordem
A mudança não foi uma surpresa: ela vinha sendo construída desde 2024.
| Data | Marco |
|---|---|
| 15/10/2024 | Publicação da Instrução Normativa RFB nº 2.229, que altera a regra de formação do CNPJ |
| 25/10/2024 | Entrada em vigor da Instrução Normativa |
| 06/04/2026 | Início do ambiente de homologação para documentos fiscais eletrônicos |
| 06/07/2026 | Entrada em produção nos documentos fiscais eletrônicos |
| 23 a 27/07/2026 | Base do CNPJ indisponível para a migração final |
| 27/07/2026 | Sistemas da Receita entram em produção com o novo formato |
| 31/07/2026 | Emissão do primeiro CNPJ alfanumérico do país |
A emissão é gradual. Nem toda nova inscrição feita depois dessa data recebe letras — a atribuição é aleatória, então um CNPJ totalmente numérico ainda pode ser gerado hoje. Na prática, isso significa que seu sistema precisa aceitar os dois formatos ao mesmo tempo, por tempo indeterminado.
Por que o CNPJ precisou de letras
Motivo puramente aritmético: as combinações estavam acabando. O Brasil acumula dezenas de milhões de inscrições entre empresas ativas, filiais, baixadas e MEIs, e o ritmo de abertura de novos negócios vinha consumindo o estoque restante mais rápido do que o modelo comportava.
Com letras nas doze primeiras posições, o universo de combinações possíveis sai da casa dos milhões e vai para uma escala que não preocupa ninguém pelas próximas décadas. A Receita escolheu essa saída em vez de aumentar a quantidade de caracteres justamente porque manter as 14 posições evita mexer no tamanho de campo de milhares de sistemas, telas e documentos.
Como o novo número é formado
O CNPJ continua com 14 caracteres e a mesma máscara visual. O que muda é o que pode ocupar cada posição:
- Posições 1 a 8 — raiz: letras maiúsculas e números. Identifica a entidade.
- Posições 9 a 12 — ordem do estabelecimento: letras maiúsculas e números. É o antigo
0001da matriz. - Posições 13 e 14 — dígitos verificadores: continuam sempre numéricos.
Um exemplo no formato mascarado fica assim:
12.ABC.345/01DE-35→ sem máscara:12ABC34501DE35
Repare que a raiz continua sendo a mesma para matriz e filiais da mesma empresa. A ordem do estabelecimento é que varia — e agora ela também pode conter letras, tanto na primeira filial quanto nas seguintes.
O cálculo do dígito verificador
Aqui está a parte que mais gera dúvida, e a boa notícia é que a solução foi elegante: a fórmula não mudou. Continua sendo módulo 11, com os mesmos pesos de sempre. O que mudou foi a etapa anterior à soma.
Cada caractere passa a ser convertido pelo seu valor na tabela ASCII menos 48. Como o caractere 0 tem código ASCII 48, essa subtração faz os dígitos continuarem valendo exatamente o que valiam antes — e é por isso que todo CNPJ numérico já emitido continua válido sem nenhum ajuste.
| Caractere | Valor para o cálculo |
|---|---|
| 0 a 9 | 0 a 9 (sem alteração) |
| A | 17 |
| B | 18 |
| C | 19 |
| … | … |
| Z | 42 |
O procedimento completo:
- Converta cada um dos 12 primeiros caracteres para o valor da tabela acima.
- Multiplique pelos pesos
5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2e some tudo. - Divida a soma por 11. Se o resto for 0 ou 1, o primeiro dígito é 0; senão, é 11 menos o resto.
- Repita com os 13 caracteres já formados, usando os pesos
6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, para obter o segundo dígito.
Validação em JavaScript
function validarCNPJ(valor) {
const cnpj = String(valor).toUpperCase().replace(/[^0-9A-Z]/g, '');
if (cnpj.length !== 14) return false;
if (!/^\d{2}$/.test(cnpj.slice(12))) return false; // DV é sempre numérico
const valorChar = c => c.charCodeAt(0) - 48; // '0'=0 … 'A'=17 … 'Z'=42
const dv = (base) => {
const pesos = base.length === 12
? [5,4,3,2,9,8,7,6,5,4,3,2]
: [6,5,4,3,2,9,8,7,6,5,4,3,2];
let soma = 0;
for (let i = 0; i < base.length; i++) soma += valorChar(base[i]) * pesos[i];
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
};
const d1 = dv(cnpj.slice(0, 12));
const d2 = dv(cnpj.slice(0, 12) + d1);
return cnpj.slice(12) === `${d1}${d2}`;
}
Validação em PHP
function validarCnpj(string $valor): bool {
$cnpj = preg_replace('/[^0-9A-Z]/', '', strtoupper($valor));
if (strlen($cnpj) !== 14) return false;
if (!ctype_digit(substr($cnpj, 12))) return false;
$dv = function (string $base): int {
$pesos = strlen($base) === 12
? [5,4,3,2,9,8,7,6,5,4,3,2]
: [6,5,4,3,2,9,8,7,6,5,4,3,2];
$soma = 0;
for ($i = 0; $i < strlen($base); $i++) {
$soma += (ord($base[$i]) - 48) * $pesos[$i];
}
$resto = $soma % 11;
return $resto < 2 ? 0 : 11 - $resto;
};
$d1 = $dv(substr($cnpj, 0, 12));
$d2 = $dv(substr($cnpj, 0, 12) . $d1);
return substr($cnpj, 12) === "{$d1}{$d2}";
}
As duas funções aceitam CNPJ numérico e alfanumérico, com ou sem máscara. Vale reforçar um detalhe: teste com os dois formatos. Um erro comum é adaptar a validação para letras e, no caminho, quebrar o suporte aos números antigos.
A regex que você precisa corrigir
Se em algum canto do seu código existe algo assim:
/^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/
ele vai rejeitar todo CNPJ novo. A versão que aceita os dois formatos, mascarados:
/^[0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}\/[0-9A-Z]{4}-\d{2}$/
E sem máscara:
/^[0-9A-Z]{12}\d{2}$/
Só que regex sozinha não valida CNPJ — ela valida formato. A conferência dos dígitos verificadores continua sendo obrigatória.
Checklist de adaptação do sistema
O impacto é transversal. Vale varrer o projeto inteiro atrás de cada ponto em que um CNPJ entra, sai, é comparado ou é armazenado.
- Banco de dados: colunas do tipo inteiro ou numérico precisam virar texto. Esse costuma ser o ponto de ruptura mais grave, porque a falha aparece só na hora da gravação, em produção.
- Índices, constraints e procedures: qualquer regra que assuma conteúdo numérico precisa ser revista junto com a coluna.
- Validação de formulário: máscaras de input,
type="number", filtros que removem tudo o que não é dígito. - APIs e integrações: schemas, DTOs, contratos JSON e XML que declaram o CNPJ como inteiro.
- Importação e exportação: planilhas e CSVs em que o campo é interpretado como número — o mesmo problema clássico do zero à esquerda, agora com letras.
- Buscas e comparações: rotinas que comparam CNPJs precisam normalizar caixa alta antes de comparar.
- Documentos fiscais: o CNPJ compõe a chave de acesso de 44 posições dos documentos fiscais eletrônicos, então a geração e a validação da chave também mudam.
- Código de barras: o padrão CODE-128C usado em boletos e DANFEs só comporta números. Impressões que envolvem o CNPJ precisam alternar para um conjunto que aceite letras.
O ponto que ainda não está fechado: as letras proibidas
Circula com força a informação de que as letras I, O, U, Q e F não seriam usadas, para evitar confusão visual com números e ambiguidade na leitura. A origem é uma solicitação técnica feita pelo ENCAT à Receita Federal.
Acontece que, na documentação oficial publicada, a definição segue sendo letras maiúsculas de A a Z. Até que a Receita confirme formalmente uma lista reduzida, a recomendação para quem escreve código é defensiva e simples: aceite A a Z na validação. Rejeitar uma letra que a Receita venha a usar cria um bug silencioso e caro; aceitar uma letra que ela nunca use não causa dano nenhum.
O que não muda (e o que é golpe)
Para quem tem empresa, a lista de tarefas é curta:
- CNPJs já emitidos continuam válidos, sem recadastramento, sem substituição e sem cancelamento.
- Não existe taxa para "atualizar" o CNPJ ao novo formato.
- Os dois formatos convivem e ambos valem para todos os efeitos legais.
- O único trabalho real é técnico: garantir que os sistemas usados no dia a dia aceitem o número com letras.
Atenção: a Receita Federal não envia e-mail, SMS ou mensagem de WhatsApp pedindo atualização cadastral ou cobrando taxa por causa do CNPJ alfanumérico. Qualquer contato nesse sentido é tentativa de golpe.
Como testar hoje
Você não precisa esperar um cliente aparecer com CNPJ novo para descobrir se o seu sistema quebra. Duas formas rápidas de testar:
- O gerador de CNPJ do Vaicon Web tem opção de formato alfanumérico. Gere até 10 números de uma vez, com ou sem máscara, para matriz ou filial, e jogue direto nos seus formulários e endpoints. O validador da mesma página aceita os dois formatos e mostra a raiz e a ordem separadas.
- A Receita Federal disponibiliza um simulador de inscrição oficial no portal gov.br, útil para conferir o comportamento esperado do número.
Um roteiro de teste mínimo que costuma revelar quase todos os problemas: cadastre um CNPJ alfanumérico, salve, recarregue a tela, exporte para planilha, importe de volta, faça uma busca por ele e emita um documento que o utilize. Se passar por essa sequência inteira sem erro, o essencial está resolvido.
Resumo
O CNPJ alfanumérico mantém 14 caracteres, aceita letras maiúsculas nas 12 primeiras posições, conserva os dois dígitos verificadores numéricos e usa o mesmo módulo 11 de sempre — com os caracteres convertidos por ASCII menos 48. Nada do que já existe é invalidado, e a transição é gradual.
O risco não está na regra, que é simples. Está nos lugares esquecidos do sistema: aquela coluna bigint, aquele regex escondido num arquivo de validação antigo, aquele relatório que converte o campo para número na exportação. Vale varrer agora, com calma, em vez de descobrir no meio de um faturamento travado.
Perguntas frequentes
Meu CNPJ atual vai mudar?
Não. CNPJs já emitidos continuam exatamente como estão, válidos para todos os fins. O formato alfanumérico vale apenas para inscrições novas, e mesmo assim de forma gradual.
Quando começou a emissão do CNPJ alfanumérico?
O primeiro CNPJ alfanumérico foi gerado em 31 de julho de 2026, após a entrada em produção dos sistemas da Receita Federal em 27 de julho. A emissão segue gradual ao longo de 2026.
Como calcular o dígito verificador do CNPJ alfanumérico?
Pelo módulo 11, com os mesmos pesos de antes. Cada caractere é convertido pelo seu valor ASCII menos 48, então os números seguem valendo o mesmo e as letras valem de 17 (A) a 42 (Z). Os dois dígitos resultantes são sempre numéricos.
As letras I, O, U, Q e F podem aparecer no CNPJ?
A documentação oficial define o conjunto como A a Z. A exclusão dessas cinco letras foi sugerida por motivos de legibilidade, mas não há confirmação formal da Receita Federal. A recomendação prática é aceitar A a Z na validação e ajustar caso uma lista reduzida seja publicada.
Preciso pagar alguma taxa ou fazer recadastramento?
Não. Não há taxa nem recadastramento. Mensagens cobrando valores ou pedindo atualização cadastral por causa do CNPJ alfanumérico são tentativas de golpe.
O que quebra primeiro num sistema legado?
Normalmente a gravação no banco, quando a coluna do CNPJ é de tipo numérico. Em seguida vêm as validações de front-end com regex restrita a dígitos e as integrações cujo schema declara o campo como inteiro.
Fontes
- Receita Federal — página oficial do projeto CNPJ Alfanumérico, com cronograma, documento técnico do cálculo do DV, perguntas e respostas e simulador de inscrição.
- Instrução Normativa RFB nº 2.229, de 15 de outubro de 2024.
- Nota Técnica Conjunta 2025.001, sobre o CNPJ alfanumérico nos documentos fiscais eletrônicos.
- Notícia da Receita Federal sobre a emissão do primeiro CNPJ alfanumérico, em 31 de julho de 2026.