CNPJ alfanumérico
Desde 31/07/2026, novas inscrições no CNPJ saem em formato alfanumérico, conforme a Instrução Normativa RFB nº 2.229/2024.
O que muda
- As 12 primeiras posições passam a aceitar letras maiúsculas além de dígitos.
- Os 2 dígitos verificadores continuam numéricos.
- O total segue em 14 caracteres, e a máscara não muda:
12.ABC.345/01DE-35. - CNPJs existentes continuam válidos e inalterados. A mudança só vale para inscrições novas.
A API aceita os dois formatos, assim como o validador e o gerador.
Dígito verificador
O algoritmo continua sendo módulo 11 com os mesmos pesos. Muda apenas como cada caractere vira número: código ASCII menos 48.
| Caractere | ASCII | Valor |
|---|---|---|
0 | 48 | 0 |
9 | 57 | 9 |
A | 65 | 17 |
Z | 90 | 42 |
Para dígitos o valor continua sendo o próprio número, então um CNPJ numérico dá o mesmo resultado do algoritmo antigo.
Pesos: 5,4,3,2,9,8,7,6,5,4,3,2 para o primeiro dígito, sobre as 12 posições; 6,5,4,3,2,9,8,7,6,5,4,3,2 para o segundo, sobre 13. Somam-se os produtos, toma-se o resto da divisão por 11, e o dígito é 0 se o resto for menor que 2, ou 11 - resto caso contrário.
const valorDe = (c) => c.charCodeAt(0) - 48;
const digito = (chars, pesos) => {
const soma = chars.split('').reduce((total, c, i) => total + valorDe(c) * pesos[i], 0);
const resto = soma % 11;
return resto < 2 ? 0 : 11 - resto;
};
const base = '12ABC34501DE';
const dv1 = digito(base, [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
const dv2 = digito(base + dv1, [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
// 12ABC34501DE35 O validador mostra esse cálculo posição por posição.