CNPJ Alfanumérico 2026: o que muda para desenvolvedores

Atualizado em 10/03/2026: A Nota Técnica ENCAT 2025.001 confirmou as datas de homologação (06/04/2026) e produção (06/07/2026) para os documentos fiscais eletrônicos. A Receita Federal também sinalizou que o rollout será gradual, começando por grandes empresas. Em breve publicaremos um artigo dedicado aos desdobramentos da implementação.

Cronograma — CNPJ Alfanumérico

A Receita Federal publicou em outubro de 2024 a Instrução Normativa RFB nº 2.229/2024, determinando que a partir de julho de 2026, novas inscrições no CNPJ passarão a incluir caracteres alfanuméricos — letras de A a Z além dos dígitos de 0 a 9.

A mudança não afeta CNPJs já existentes. Se a sua empresa tem CNPJ 12.345.678/0001-95, ele continua exatamente assim. O novo formato vale apenas para novas inscrições a partir da data de corte.

O motivo é prático: o sistema numérico atual suporta cerca de 100 milhões de combinações. Com aproximadamente 60 milhões de registros ativos e cerca de 6 milhões de novas empresas por ano, o esgotamento das combinações disponíveis é uma questão de poucos anos. A introdução de letras expande o espaço de endereçamento para bilhões de combinações.

Este artigo aborda o tema sob a ótica do desenvolvedor: o que muda no formato, como calcular o novo dígito verificador, o que revisar nos seus sistemas e código funcional para validação.


O que muda no formato

O CNPJ continuará com 14 posições — o mesmo tamanho de hoje. A diferença está no conjunto de caracteres aceitos em cada grupo de posições:

Posições Função Formato atual Formato novo
1–8 Raiz (identificação) Somente dígitos (0–9) Alfanumérico (0–9, A–Z)
9–12 Ordem do estabelecimento Somente dígitos (0–9) Alfanumérico (0–9, A–Z)
13–14 Dígitos verificadores Somente dígitos (0–9) Somente dígitos (0–9)

Na prática, as 12 primeiras posições passam a aceitar letras maiúsculas, enquanto os dois dígitos verificadores permanecem numéricos.

Estrutura do CNPJ: formato atual vs. alfanumérico

A máscara de exibição com pontos, barra e hífen segue o mesmo padrão — o que muda é o conteúdo de cada posição.

Letras aceitas

Há indicações em discussões técnicas do ENCAT de que algumas letras podem ser excluídas do conjunto permitido (possivelmente I, O, U, Q e F, para evitar confusão visual). Até a data de publicação deste artigo, a Receita Federal não confirmou oficialmente a lista restrita. A recomendação é codificar de forma defensiva: aceitar A–Z por enquanto e ajustar quando a lista definitiva for publicada.

Acompanhe a página oficial da RFB: CNPJ Alfanumérico.


Novo cálculo do dígito verificador

O cálculo do dígito verificador continua usando Módulo 11 com pesos de 2 a 9 — o mesmo algoritmo conceitual dos CNPJs numéricos. A diferença é como cada caractere é convertido para valor numérico antes da multiplicação.

Regra de conversão

Conversão de caractere para valor DV — tabela ASCII

Cada caractere (dígito ou letra) é convertido pelo seu valor decimal ASCII subtraído de 48:

Valor para DV = código ASCII do caractere − 48

Isso produz a seguinte tabela:

Caractere ASCII Valor DV
0 48 0
1 49 1
2 50 2
... ... ...
9 57 9
A 65 17
B 66 18
C 67 19
... ... ...
Z 90 42

O detalhe elegante dessa abordagem: para CNPJs numéricos, ord('0') - 48 = 0, ord('1') - 48 = 1, etc. — ou seja, a conversão reproduz o comportamento atual. O novo algoritmo é retrocompatível por design.

Passo a passo com exemplo

Fluxo de cálculo do dígito verificador do CNPJ alfanumérico

Usando o CNPJ alfanumérico fictício 12ABC34501DE (exemplo da documentação oficial do SERPRO):

Primeiro dígito verificador:

  1. Converter cada caractere para o valor DV:
CNPJ:  1   2   A   B   C   3   4   5   0   1   D   E
Valor: 1   2   17  18  19  3   4   5   0   1   20  21
  1. Distribuir pesos de 2 a 9 da direita para a esquerda (reiniciando após o 9):
Peso:  5   4   3   2   9   8   7   6   5   4   3   2
  1. Multiplicar valor × peso e somar:
5 + 8 + 51 + 36 + 171 + 24 + 28 + 30 + 0 + 4 + 60 + 42 = 459
  1. Calcular o resto: 459 % 11 = 8
  2. Como o resto é ≥ 2: 1º DV = 11 − 8 = 3

Segundo dígito verificador:

Repetir o processo incluindo o primeiro DV como 13º caractere:

CNPJ:  1   2   A   B   C   3   4   5   0   1   D   E   3
Valor: 1   2   17  18  19  3   4   5   0   1   20  21  3
Peso:  6   5   4   3   2   9   8   7   6   5   4   3   2

Somatório: 6 + 10 + 68 + 54 + 38 + 27 + 32 + 35 + 0 + 5 + 80 + 63 + 6 = 424

Resto: 424 % 11 = 62º DV = 11 − 6 = 5

Resultado final: 12.ABC.345/01DE-35

Se o resto for 0 ou 1, o dígito verificador é 0 (zero).


Impacto em sistemas existentes

Impacto do CNPJ alfanumérico em sistemas

A mudança é simples em conceito, mas o impacto depende de quantos pontos do seu sistema tocam em campos de CNPJ. Abaixo, os principais pontos de atenção.

Banco de dados

Se o campo de CNPJ está armazenado como INT, BIGINT ou qualquer tipo numérico, ele precisa migrar para VARCHAR(14) ou CHAR(14). Sem essa mudança, o banco rejeita qualquer CNPJ com letras.

Para quem já usa VARCHAR ou TEXT, verifique se há constraints que rejeitam letras — um CHECK com regex do tipo ^\d{14}$ vai barrar os novos CNPJs. Índices criados sobre colunas numéricas podem ter comportamento diferente (collation, ordenação) ao migrar para string — vale testar a performance de queries críticas após a conversão.

Validação no código

A maioria dos sistemas valida CNPJ com regex como ^\d{14}$ ou ^\d{2}\.\d{3}\.\d{3}/\d{4}-\d{2}$. Ambos rejeitam letras.

A regex atualizada para o CNPJ sem máscara deve aceitar alfanuméricos nas 12 primeiras posições e dígitos nos 2 últimos:

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

Com máscara:

^[A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}/[A-Z0-9]{4}-\d{2}$

Além da regex, a função de cálculo do DV precisa ser atualizada para usar a conversão ASCII descrita na seção anterior.

Frontend e máscaras de input

Campos de formulário que formatam CNPJ com máscara (pontos, barra, hífen) geralmente só aceitam dígitos. É necessário permitir letras maiúsculas nas 12 primeiras posições do input. O inputmode="numeric" em campos de CNPJ no mobile precisará ser removido ou ajustado, já que o teclado numérico não exibe letras.

Integrações

APIs que enviam ou recebem CNPJ precisam aceitar o novo formato. Isso inclui integrações com gateways de pagamento, emissores de nota fiscal (NF-e, NFS-e), sistemas bancários, CRMs e ERPs. Os schemas XML de documentos fiscais eletrônicos já foram atualizados pela SEFAZ para aceitar o formato alfanumérico.

Testes

A Receita Federal disponibilizou um Simulador Nacional de CNPJ Alfanumérico que gera CNPJs fictícios no novo formato. Use-o para criar dados de teste e inclua CNPJs alfanuméricos na sua suíte de testes automatizados desde já — não espere julho de 2026.

A Nota Técnica ENCAT 2025.001 confirmou que o ambiente de homologação das SEFAZs aceitará CNPJs alfanuméricos a partir de 06 de abril de 2026, e o ambiente de produção a partir de 06 de julho de 2026. Antes dessas datas, os sistemas rejeitarão qualquer CNPJ alfanumérico, mesmo que passe na validação de schema.


Código: validando CNPJ alfanumérico

Abaixo, implementações funcionais em Python e JavaScript. Ambas aceitam CNPJ com ou sem máscara, suportam o formato numérico atual e o novo alfanumérico, e calculam os dois dígitos verificadores pelo Módulo 11 com conversão ASCII.

Python

import re

def validar_cnpj(cnpj: str) -> bool:
    """
    Valida CNPJ numérico ou alfanumérico.
    Aceita com ou sem máscara (pontos, barra, hífen).
    """
    # Remove máscara
    cnpj = re.sub(r'[.\-/]', '', cnpj).upper()

    # 14 caracteres: 12 alfanuméricos + 2 dígitos
    if not re.match(r'^[A-Z0-9]{12}\d{2}$', cnpj):
        return False

    # Rejeitar sequências uniformes (ex: "00000000000000")
    if len(set(cnpj)) == 1:
        return False

    def char_value(c: str) -> int:
        return ord(c) - 48

    def calc_dv(chars: str, weights: list[int]) -> int:
        total = sum(char_value(c) * w for c, w in zip(chars, weights))
        remainder = total % 11
        return 0 if remainder < 2 else 11 - remainder

    # Primeiro DV: 12 caracteres, pesos [5,4,3,2,9,8,7,6,5,4,3,2]
    weights_1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
    dv1 = calc_dv(cnpj[:12], weights_1)

    # Segundo DV: 13 caracteres, pesos [6,5,4,3,2,9,8,7,6,5,4,3,2]
    weights_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
    dv2 = calc_dv(cnpj[:12] + str(dv1), weights_2)

    return cnpj[-2:] == f"{dv1}{dv2}"


# Testes
assert validar_cnpj("12.ABC.345/01DE-35") == True   # alfanumérico (exemplo SERPRO)
assert validar_cnpj("12ABC34501DE35") == True         # sem máscara
assert validar_cnpj("11.222.333/0001-81") == True     # numérico tradicional
assert validar_cnpj("11.222.333/0001-82") == False    # DV inválido
assert validar_cnpj("00.000.000/0000-00") == False    # sequência uniforme

print("Todos os testes passaram.")

JavaScript / Node.js

/**
 * Valida CNPJ numérico ou alfanumérico.
 * Aceita com ou sem máscara (pontos, barra, hífen).
 * @param {string} cnpj
 * @returns {boolean}
 */
function validarCnpj(cnpj) {
  // Remove máscara
  cnpj = cnpj.replace(/[.\-/]/g, "").toUpperCase();

  // 14 caracteres: 12 alfanuméricos + 2 dígitos
  if (!/^[A-Z0-9]{12}\d{2}$/.test(cnpj)) return false;

  // Rejeitar sequências uniformes
  if (new Set(cnpj).size === 1) return false;

  const charValue = (c) => c.charCodeAt(0) - 48;

  function calcDv(chars, weights) {
    const total = chars
      .split("")
      .reduce((sum, c, i) => sum + charValue(c) * weights[i], 0);
    const remainder = total % 11;
    return remainder < 2 ? 0 : 11 - remainder;
  }

  const weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
  const weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];

  const dv1 = calcDv(cnpj.slice(0, 12), weights1);
  const dv2 = calcDv(cnpj.slice(0, 12) + dv1, weights2);

  return cnpj.slice(-2) === `${dv1}${dv2}`;
}

// Testes
console.assert(validarCnpj("12.ABC.345/01DE-35") === true);
console.assert(validarCnpj("12ABC34501DE35") === true);
console.assert(validarCnpj("11.222.333/0001-81") === true);
console.assert(validarCnpj("11.222.333/0001-82") === false);
console.assert(validarCnpj("00.000.000/0000-00") === false);

console.log("Todos os testes passaram.");

cURL + API FonteData

Se você não quer manter a lógica de validação no seu sistema, pode delegar para uma API que já trata ambos os formatos. A FonteData aceita CNPJ alfanumérico em todas as consultas:

# Consulta com CNPJ alfanumérico — a FonteData já suporta
curl -H "X-API-Key: SUA_API_KEY" \
  https://app.fontedata.com/api/v1/cnpj/A1B2C3D4E5F690

A resposta retorna os dados cadastrais completos do CNPJ, sem que o desenvolvedor precise implementar validação, conversão de formato ou tratamento de erro relacionado ao novo padrão. A API aceita tanto o formato numérico atual quanto o alfanumérico, com ou sem máscara.


Checklist de preparação

Resumo acionável para levar ao time de engenharia:

  • Banco de dados: auditar campos de CNPJ — migrar tipos numéricos para VARCHAR(14) ou CHAR(14), revisar constraints e índices
  • Regex de validação: atualizar para aceitar [A-Z0-9] nas 12 primeiras posições
  • Cálculo do DV: implementar conversão via ASCII (ord(char) - 48) ou adotar API que já suporta
  • Frontend: atualizar máscaras de input para aceitar letras maiúsculas, remover inputmode="numeric" de campos de CNPJ
  • Integrações: verificar que APIs, webhooks e schemas XML aceitam caracteres alfanuméricos no campo de CNPJ
  • Testes automatizados: incluir CNPJs alfanuméricos gerados pelo Simulador da RFB
  • Monitoramento: acompanhar comunicados da RFB sobre a lista definitiva de letras aceitas

Conclusão

A migração para CNPJ alfanumérico é direta em conceito — letras entram no identificador, o cálculo do DV ganha uma conversão via ASCII, e o tamanho permanece o mesmo. O impacto real depende de quantos sistemas na sua stack tocam campos de CNPJ: banco de dados, validações, máscaras, integrações fiscais, gateways de pagamento.

Quem se preparar antes de julho de 2026 evita a correria quando os primeiros CNPJs com letras começarem a circular. O checklist acima cobre os pontos principais — comece pela auditoria do banco de dados e pelas funções de validação.

A FonteData já suporta CNPJ alfanumérico em todas as consultas. Crie sua conta grátis e teste com R$50 em créditos — sem cartão de crédito.


Referências

Experimente a API da FonteData

Consulte dados empresariais e de pessoas via API — CNPJ, CPF, KYC, compliance e mais. R$50 em créditos grátis para testar.

Criar conta grátis →
Compartilhar: LinkedIn Twitter / X
R$ 50 em créditos grátis Criar conta grátis