Tecnologia além do código.
Régys Borges da Silveira
← Voltar para explorar os artigos

CNPJ alfanumérico no ERP: cadastros, validação e integrações

Ilustração de cadastro alfanumérico conectado a banco de dados e sistema empresarial.
Neste artigo 10 tópicos

Um identificador com letras pode atravessar a tela de cadastro e falhar somente na integração bancária, no relatório ou na montagem de um documento fiscal. Essa é a dificuldade do CNPJ alfanumérico: atualizar um campo não resolve todas as suposições de que o cadastro contém apenas números.

O Cadastro Nacional da Pessoa Jurídica, CNPJ, identifica entidades e estabelecimentos nos procedimentos pertinentes. Seu novo formato amplia as combinações possíveis, sem transformar o identificador em valor para cálculo aritmético. Para um sistema de gestão empresarial, ou ERP, ele deve ser tratado como informação textual desde a entrada até a transmissão.

Este artigo considera as fontes consultadas em 5 de outubro de 2026 e propõe uma revisão técnica, especialmente útil para equipes Delphi. A mudança cadastral não foi criada pela reforma tributária, embora se encontre com a preparação dos sistemas fiscais. O guia de 2027 contextualiza essa preparação, e a discussão de conformidade além da autorização ajuda a avaliar os testes.

A implantação já aconteceu

A Receita Federal informou a geração do primeiro CNPJ alfanumérico em 31 de julho de 2026. A inscrição foi atribuída a uma filial do Banco do Brasil, com identificação 00.000.000/E08G-12. Portanto, não é adequado escrever em outubro que a mudança ainda vai começar em julho.

O documento de perguntas e respostas explica que os identificadores existentes permanecem válidos. Não é necessário converter o CNPJ numérico de uma empresa em outro identificador, nem pedir uma nova inscrição apenas porque o formato foi ampliado.

Também há coexistência: sistemas devem aceitar formatos numérico e alfanumérico. Novas inscrições, inclusive filiais de empresas já existentes, podem ter letras. Isso impede uma suposição comum de sistemas antigos: que a ordem do estabelecimento será sempre uma sequência exclusivamente numérica.

A conclusão técnica é conservar dados existentes e ampliar a capacidade de leitura e validação. Não substitua caracteres arbitrariamente, não renumere clientes e não invente uma conversão entre CNPJ antigo e novo. O identificador atribuído deve permanecer reconhecível em toda a cadeia.

Quatorze posições não significam quatorze números

Conforme o documento oficial, são mantidas quatorze posições. As primeiras doze podem conter números de 0 a 9 e letras maiúsculas de A a Z; as duas finais são dígitos verificadores numéricos. A máscara continua separando raiz, ordem e verificação.

Raiz é a parte inicial usada na identificação básica; ordem identifica o estabelecimento conforme a estrutura cadastral. O dígito verificador, chamado DV, é calculado para detectar determinadas inconsistências de digitação. DV correto não prova existência, situação ativa ou titularidade do cadastro.

A diferença afeta armazenamento, validação e apresentação. Um campo numérico não representa adequadamente letras nem preserva necessariamente zeros iniciais. Uma máscara que impede digitar letras também falha, mesmo quando o banco de dados já utiliza texto.

A recomendação é uma representação interna textual com quatorze caracteres, quando isso estiver de acordo com o contrato da integração. A máscara pode ser aplicada na apresentação. Se o serviço externo exigir outro formato, a transformação deve ocorrer de modo explícito e testado na fronteira, sem modificar o identificador original.

O cálculo não usa A igual a um

A pergunta 14 do documento oficial descreve o cálculo por módulo 11. Cada caractere é convertido para seu valor ASCII, padrão de codificação, e dele se subtrai 48. Assim, o caractere zero vale zero no cálculo, mas a letra A vale 17, não um.

Os pesos são aplicados às posições para obter o primeiro DV e depois o segundo. O exemplo publicado é 12.ABC.345/01DE-35. A aplicação da regra preserva compatibilidade com os identificadores numéricos, cujos caracteres seguem correspondências já conhecidas.

Essa explicação deve estar na revisão técnica. Trocar uma expressão regular de números por letras e números permite entrada, mas não implementa a verificação correta. Também não basta tentar converter o texto inteiro para um inteiro e reaproveitar uma rotina antiga.

Nas equipes Delphi, a implementação pode trabalhar com caracteres previamente validados e seu código, conforme a regra oficial. Contudo, não se deve aceitar qualquer caractere Unicode porque a função de conversão fornece um número: o conjunto permitido continua restrito.

Quatro camadas de revisão do CNPJ: entrada textual, validação de formato e dígitos, persistência sem perda e contratos de integração.

Roteiro de revisão proposto. Fonte técnica: Receita Federal, CNPJ alfanumérico: perguntas e respostas, questões 2, 6, 14, 15 e 21.

Um exemplo executável de validação

O exemplo abaixo foi executado em Node.js 25.4.0 com casos numéricos, alfanuméricos e entradas inválidas. Não é uma biblioteca oficial nem uma consulta cadastral. A rejeição de sequência numérica repetida é uma política adicional explícita deste exemplo, não uma etapa do cálculo descrito pela Receita.

Ele aceita identificador sem máscara ou com a máscara completa esperada. Não remove indiscriminadamente todos os caracteres desconhecidos, porque isso poderia transformar uma entrada incorreta em outra aparentemente válida. Letras minúsculas e espaços são rejeitados; uma interface pode orientar correção antes de chamar a função.

export function cnpjFormatoEDvValidos(texto) {
  if (typeof texto !== 'string') return false;
  let cnpj = texto;
  const semMascara = /^[A-Z0-9]{12}[0-9]{2}$/;
  const comMascara =
    /^[A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/[A-Z0-9]{4}-[0-9]{2}$/;

  if (comMascara.test(cnpj)) {
    cnpj = cnpj.replace(/[.\/-]/g, '');
  } else if (!semMascara.test(cnpj)) {
    return false;
  }
  // Política adicional: não aceitar sequência numérica repetida.
  if (/^([0-9])\1{13}$/.test(cnpj)) return false;

  const digito = (parte, pesos) => {
    const soma = [...parte].reduce(
      (total, ch, i) => total + (ch.charCodeAt(0) - 48) * pesos[i],
      0
    );
    const resto = soma % 11;
    return resto < 2 ? '0' : String(11 - resto);
  };

  const primeiro = digito(cnpj.slice(0, 12),
    [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
  const segundo = digito(cnpj.slice(0, 12) + primeiro,
    [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
  return cnpj.slice(12) === primeiro + segundo;
}

Foram conferidos o exemplo oficial 12ABC34501DE35, o identificador 00000000E08G12 informado na notícia e um caso numérico, além de variantes com erro no DV, caracteres não permitidos e máscara incorreta. O registro dos testes foi preservado na pesquisa local do artigo.

A função retorna apenas coerência de formato e cálculo. Um CNPJ fictício pode passar por essa análise; a confirmação de existência e situação requer fonte cadastral autorizada. Não use o resultado para afirmar que o fornecedor está regular ou que um documento fiscal será autorizado.

Onde procurar problemas em um projeto Delphi

Comece pelos tipos e pelas conversões. Campos inteiros, uso de conversão para número, filtros que mantêm somente dígitos e funções de preenchimento automático merecem revisão. O problema pode estar em uma unidade compartilhada utilizada por vários módulos, não na tela em que apareceu a primeira falha.

Depois examine componentes visuais e validações de campos. A máscara permite A a Z nas posições corretas? O usuário vê a identificação completa? Existe rotina de saída do campo que remove letras? O teste deve acompanhar o valor antes e depois de cada evento relevante.

Revise também consultas, parâmetros e gravação. Em um banco de dados, um parâmetro enviado como número pode converter o valor ou falhar. A recomendação é preservar tipo textual compatível com o contrato e verificar leitura posterior, não concluir que a gravação funcionou apenas porque não houve exceção.

Por fim, procure comparações e regras sobre matriz e filial. Uma condição que extrai a ordem e a interpreta como número precisa ser confrontada com o novo formato. Esse exame é uma recomendação de manutenção: o artigo não estabelece uma regra geral para descobrir a matriz a partir de uma comparação simplificada.

Cadastros antigos devem sobreviver à atualização

Antes de qualquer migração estrutural, faça backup e teste a recuperação em ambiente controlado. Não execute uma alteração de coluna diretamente na base de produção com a expectativa de que o banco corrigirá todas as dependências. Índices, restrições e integrações podem precisar de revisão conjunta.

Compare uma amostra de identificadores antes e depois, especialmente os que começam com zero. A sequência deve permanecer idêntica na representação adotada. Se a versão antiga já havia perdido zeros, a recuperação requer evidência cadastral: completar automaticamente pode mascarar dados incorretos.

Também confira unicidade. O mesmo CNPJ com e sem máscara não deve criar entidades duplicadas quando a aplicação utiliza representação normalizada. Essa normalização precisa ser definida de maneira consistente na importação, na pesquisa e na gravação.

Durante a transição do software, conserve uma estratégia de retorno. Se for necessário reverter uma versão, o sistema antigo não pode corromper identificadores com letras já registrados. A recuperação deve considerar os dados novos, não apenas o código anterior.

Integrações não devem ser presumidas compatíveis

Uma API é uma interface de programação utilizada para trocar informações. Seu contrato define formato, tipo e restrições dos campos. Revise cadastros externos, emissão fiscal, serviços financeiros, arquivos de troca e exportações, identificando qual contrato cada operação realmente utiliza.

Um serviço que descreve CNPJ como número pode precisar de atualização; outro pode usar texto, mas validar com expressão exclusivamente numérica. Não presuma compatibilidade porque o formato JSON aceita uma cadeia de caracteres. A aplicação receptora pode rejeitar o conteúdo depois.

No formato JSON, a recomendação é transmitir CNPJ como texto conforme o contrato, preservando as posições. Em arquivos de planilha ou texto separado por delimitadores, teste também a importação: programas podem converter uma coluna aparentemente numérica e eliminar zeros.

A comprovação útil é uma ida e volta. Envie a identificação em ambiente permitido, leia o retorno e compare o valor. Registre versão, ambiente e resultado, sem expor dados de clientes. Um teste local de DV não demonstra funcionamento de uma integração externa.

Um roteiro de testes para não depender de um único exemplo

O conjunto mínimo deve incluir CNPJ numérico com zero inicial, exemplo alfanumérico, formato com máscara, erro em cada DV, caractere fora do conjunto permitido, letra na posição do DV e tamanho incorreto. Acrescente casos em que a interface recebe espaços ou letras minúsculas para verificar a orientação ao usuário.

Também teste pesquisa e duplicidade. Um registro inserido sem máscara deve ser encontrado quando a tela aceita pesquisa formatada, conforme a política de normalização. A alteração não pode criar dois fornecedores apenas porque a pontuação mudou.

Na emissão, acompanhe cadastro, objeto do componente, arquivo gerado e retorno. No relatório, confira que o texto não foi truncado. Na integração financeira, confira o contrato e o valor recebido. Esses ensaios externos são recomendações; não foram executados com contas reais neste artigo.

Defina como critério de aprovação a preservação completa do identificador. “O cadastro salvou” é uma observação insuficiente se um módulo remove letras logo depois. A equipe deve demonstrar entrada, processamento, persistência, consulta e saída sem alteração indevida.

Conclusão

CNPJ alfanumérico é uma mudança de representação que já está em operação e exige coexistência com os identificadores anteriores. O trabalho correto não é trocar números existentes, mas eliminar suposições numéricas nos sistemas que recebem e transmitem o cadastro.

Para o desenvolvedor, o caminho é revisar tipos, máscaras, algoritmo de DV e contratos, com testes de ponta a ponta. Para a empresa, é pedir evidências de preservação e integração, não apenas uma declaração de que a tela aceita letras. O identificador só está bem tratado quando chega íntegro ao destino e continua reconhecível no histórico.

Referências

BRASIL. Receita Federal. CNPJ alfanumérico: perguntas e respostas. Brasília, DF, [s. d.]. Disponível em: https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/perguntas-e-respostas/cnpj/cnpj-alfanumerico.pdf. Acesso em: 5 out. 2026.

BRASIL. Receita Federal. Receita Federal gera o primeiro CNPJ em formato alfanumérico. Brasília, DF, 31 jul. 2026. Disponível em: https://www.gov.br/receitafederal/pt-br/assuntos/noticias/2026/julho/receita-federal-gera-o-primeiro-cnpj-em-formato-alfanumerico. Acesso em: 5 out. 2026.

Capa do livro FireDAC na Prática

FireDAC na Prática

Acesso a dados com Delphi, da primeira conexão às decisões do dia a dia.

Conhecer o livro →
Compartilhar por e-mail

0 comentário(s)

Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Um próximo passo para cada interesse.

Continue estudando com os livros, acompanhe as videoaulas ou consulte as soluções para o seu projeto.

Descubra mais sobre Régys Borges da Silveira

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo