CodePráticov3.4.0
CNPJAtualização 2026

CNPJ alfanumérico: o que muda para desenvolvedores em 2026

O CNPJ deixou de ser uma informação que pode ser tratada como “apenas 14 números”. Desde 31 de julho de 2026, a Receita Federal iniciou a geração do CNPJ alfanumérico para novas inscrições. Sistemas que assumem somente dígitos precisam ser revisados.

O que mudou no CNPJ?

O tamanho continua sendo de 14 posições. A diferença é a composição:

  • 1ª a 8ª posições: raiz alfanumérica;
  • 9ª a 12ª posições: ordem do estabelecimento também alfanumérica;
  • 13ª e 14ª posições: dígitos verificadores, que continuam numéricos.

Nas 12 primeiras posições podem aparecer números de 0 a 9 e letras maiúsculas de A a Z. Os CNPJs numéricos já existentes continuam válidos e os dois formatos precisam coexistir nos sistemas.

Exemplo real: a Receita Federal informou que o primeiro CNPJ alfanumérico gerado no país foi 00.000.000/E08G-12, em 31/07/2026.

Que tipo de código pode quebrar?

O maior risco está em regras antigas que não tratavam o CNPJ como um identificador textual.

1. Remover tudo que não é número

Este padrão, muito comum em PHP, passa a destruir um CNPJ alfanumérico:

$cnpj = preg_replace('/\D/', '', $cnpj);

Se o valor contiver E08G, as letras serão apagadas. Para normalizar o novo formato sem validar o dígito verificador, uma abordagem compatível é:

function normalizarCnpj(string $cnpj): string
{
    $cnpj = strtoupper(trim($cnpj));

    return preg_replace('/[^A-Z0-9]/', '', $cnpj);
}

Depois da normalização, uma verificação estrutural pode aceitar 12 caracteres alfanuméricos seguidos de dois dígitos:

function formatoCnpjValido(string $cnpj): bool
{
    $cnpj = normalizarCnpj($cnpj);

    return (bool) preg_match(
        '/^[A-Z0-9]{12}[0-9]{2}$/',
        $cnpj
    );
}
Importante: essa regex valida somente o formato. Ela não calcula os dois dígitos verificadores e não consulta a situação cadastral da empresa.

2. CNPJ armazenado como número

Um CNPJ nunca deveria ser tratado como valor matemático. Além de letras agora serem válidas, CNPJs podem começar com zero.

Para armazenar o valor normalizado, prefira um tipo textual de tamanho fixo, por exemplo:

cnpj CHAR(14) NOT NULL

A máscara deve ser aplicada somente na apresentação. Assim o banco guarda algo como:

00000000E08G12

e a interface pode exibir:

00.000.000/E08G-12

3. Models e DTOs usando number

No frontend e nas APIs, o CNPJ deve ser string.

export interface Empresa {
  id: number;
  cnpj: string;
  razaoSocial: string;
}

Evite converter CNPJ com Number(), parseInt() ou equivalentes.

Inputs e máscaras precisam aceitar letras

Campos configurados com teclado exclusivamente numérico, máscaras fixas de dígitos ou expressões como \d{14} precisam ser revistos.

Alguns pontos para conferir:

  • remover inputmode="numeric" quando ele impedir a entrada de letras;
  • aceitar letras de A a Z nas 12 primeiras posições;
  • normalizar letras para maiúsculas;
  • manter os dois dígitos finais como numéricos;
  • continuar aceitando CNPJs numéricos antigos.

A validação de tela não deve substituir a validação feita no backend.

APIs, JSON e integrações

Revise contratos que descrevem CNPJ como número ou usam pattern exclusivamente numérico. O valor deve trafegar como texto:

{
  "cnpj": "00000000E08G12"
}

Em um schema próprio, a estrutura normalizada pode ser representada conceitualmente por:

^[A-Z0-9]{12}[0-9]{2}$

Mas lembre-se: a regra de formato é apenas uma parte. Para validação completa, também é necessário implementar o cálculo oficial do dígito verificador.

Se sua integração serializa/deserializa CNPJ, revise DTOs, validações, documentação OpenAPI, mensageria, arquivos CSV e qualquer rotina que aplique conversão numérica.

O cálculo do dígito verificador também mudou?

O cálculo continua baseado em Módulo 11, porém o formato alfanumérico exige transformar letras e números em valores usados no cálculo. A especificação oficial utiliza valores baseados na tabela ASCII, com a regra técnica definida pela Receita Federal.

Por isso, não é seguro adaptar uma função antiga simplesmente removendo as letras. A validação correta deve seguir o algoritmo oficial.

Vamos publicar um artigo separado com a implementação completa em PHP para manter esta explicação focada na adaptação dos sistemas.

XML, XSD, NF-e e documentos fiscais

Integrações fiscais merecem atenção especial. Não altere schemas oficiais manualmente com uma regex criada por conta própria.

Para NF-e e NFC-e, o Portal Nacional publicou a Nota Técnica 2026.004 e os respectivos schemas para adequação ao CNPJ alfanumérico. Sistemas emissores e consumidores devem usar a versão oficial aplicável ao documento.

Faça a mesma verificação para outros leiautes governamentais, web services e XSDs que contenham CNPJ.

Checklist para revisar um sistema existente

  1. Pesquisar no banco por colunas CNPJ definidas como tipos numéricos.
  2. Pesquisar no backend por intval, parseInt, casts e funções que removem tudo que não é dígito.
  3. Revisar regex do tipo \d{14} ou [0-9]{14}.
  4. Revisar máscaras e componentes de input.
  5. Revisar DTOs, models e contratos de API.
  6. Revisar JSON, CSV, importadores e exportadores.
  7. Revisar XSDs e integrações fiscais usando as versões oficiais.
  8. Implementar o cálculo oficial dos dígitos verificadores.
  9. Criar testes automatizados para CNPJ numérico e alfanumérico.
  10. Manter compatibilidade com os CNPJs numéricos já existentes.

Casos mínimos de teste

Mesmo antes de implementar a validação completa do DV, sua suíte de testes deve comprovar que o sistema não destrói letras nem rejeita o formato novo prematuramente.

// formato numérico legado
11222333000181

// formato alfanumérico real divulgado pela Receita
00000000E08G12

Além dos casos válidos, teste letras em posições proibidas, tamanho incorreto, caracteres especiais, letras minúsculas antes da normalização e DV não numérico.

Próximas publicações deste assunto

Este artigo abre um pequeno conjunto de conteúdos sobre a migração. Os próximos serão:

  • Como validar CNPJ numérico e alfanumérico em PHP — incluindo o cálculo oficial do DV;
  • Regex para CNPJ alfanumérico — formato versus dígito verificador;
  • Como adaptar banco de dados, inputs e APIs para CNPJ alfanumérico — checklist técnico mais detalhado.

Fontes oficiais

Referências conferidas em 09/09/2026.