Validação do novo CNPJ alfanumérico em Delphi
A Receita Federal anunciou que a partir de julho de 2026, o CNPJ passará a ser alfanumérico, combinando letras e números e exigindo ajustes…
Validação do novo CNPJ alfanumérico em Delphi
A Receita Federal anunciou que a partir de julho de 2026, o CNPJ passará a ser alfanumérico, combinando letras e números e exigindo ajustes nas rotinas de validação de empresas. O cálculo do dígito verificador seguirá o módulo 11, agora considerando a conversão das letras em valores ASCII. Para evitar rejeições e falhas fiscais, será necessário atualizar regras, bancos de dados e integrações, garantindo compatibilidade com sistemas fiscais e financeiros.

Criei uma função em delphi para verificar se um CNPJ é válido, de acordo com esse novo padrão alfanumérico:
function IsValidCnpj(const ACnpj: string): Boolean;
function OnlyAlphaNumbers(const S: string): string;
var
I: Integer;
begin
Result := '';
for I := 1 to Length(S) do
if CharInSet(S[I], ['0'..'9', 'A'..'Z']) then
Result := Result + S[I];
end;
const
Multiplier1: array[1..12] of Integer = (5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
Multiplier2: array[1..13] of Integer = (6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
BaseSub: Integer = Ord('0');
var
Cnpj: string;
I, Sum, Remainder, Digit1, Digit2: Integer;
AllEqual: Boolean;
begin
Cnpj := OnlyAlphaNumbers(ACnpj);
if Length(Cnpj) <> 14 then
Exit(False);
// Verifica se todos os dígitos são iguais
AllEqual := True;
for I := 2 to 14 do
if Cnpj[I] <> Cnpj[1] then
begin
AllEqual := False;
Break;
end;
if AllEqual then
Exit(False);
// Cálculo do 1º digito verificador
Sum := 0;
for I := 1 to 12 do
Sum := Sum + (Ord(Cnpj[I]) - BaseSub) * Multiplier1[I];
Remainder := Sum mod 11;
if Remainder < 2 then
Digit1 := 0
else
Digit1 := 11 - Remainder;
// Cálculo do 2º digito verificador
Sum := 0;
for I := 1 to 13 do
Sum := Sum + (Ord(Cnpj[I]) - BaseSub) * Multiplier2[I];
Remainder := Sum mod 11;
if Remainder < 2 then
Digit2 := 0
else
Digit2 := 11 - Remainder;
Result := (Ord(Cnpj[13]) - BaseSub = Digit1) and
(Ord(Cnpj[14]) - BaseSub = Digit2);
end; 메타데이터
- post_id
- 9f60cd97bc23
- slug
- validação-do-novo-cnpj-alfanumérico-em-delphi-9f60cd97bc23
- url
- https://medium.com/@joaoduarte19/valida%C3%A7%C3%A3o-do-novo-cnpj-alfanum%C3%A9rico-em-delphi-9f60cd97bc23
- canonical_url
- https://medium.com/@joaoduarte19/valida%C3%A7%C3%A3o-do-novo-cnpj-alfanum%C3%A9rico-em-delphi-9f60cd97bc23
- author_url
- https://medium.com/@joaoduarte19
- status
- ok
- fetched_at
- 2026-06-15 20:49:13