Skip to main content

PROC005 - Ajustes Chave de Acesso Alfanumérica NF-e e NFC-e


image-1762776253666.png

Projeto/Sistema:
GERENCIAMENTO DE PROJETOS
Versão do Template:
1.2
Processo:
Descrição Processo
Versão do Documento:
1.0
Responsável(eis): 
-

Data: 

05/01/2026

1. Introdução

Este processo visa exemplificar a documentação padrão

2. Processo (adicionar fluxograma exemplo)

 

image-1724162109370.png

I - Fluxograma Exemplo

 

Processo

Envolvidos

Dados de Entrada

Dados de Saída

Processo

N/A

N/A

N/A

Processos Relacionados


Documentação Exemplo 1 

Documentação Exemplo 2

Especificação Funcional


PROC005 - Ajustes Chave de Acesso Alfanumérica NF-e e NFC-e:

Regras de Negócio:

1. Estrutura da chave de acesso (44 caracteres): A chave é composta por 9 blocos concatenados: UF(2) + AAMM(4) + CNPJ emitente(14) + modelo(2) + série(3) + número da nota(9) + tipo de emissão(1) + código numérico aleatório(8) + DV(1). Apenas o bloco do CNPJ pode conter letra, os demais blocos permanecem numéricos.

1.1 Exemplo de chave NUMÉRICA legada (referência): Para CNPJ numérico 12.345.678/0001-95 emitindo NF-e em SP (UF=35) em julho/2026, modelo 55, série 1, nota 123, tipo emissão normal (1), código 12345678 — a chave fica: 35 2607 12345678000195 55 001 000000123 1 12345678 + DV. Resultado: 35260712345678000195550010000001231123456786 (DV=6 calculado).

1.2. Exemplo de chave ALFANUMÉRICA nova: Para o mesmo cenário mas com CNPJ alfanumérico oficial 12.ABC.345/01DE-35 (publicado pela RFB como exemplo), a chave fica: 35 2607 12ABC34501DE35 55 001 000000123 1 12345678 + DV. Resultado: 35260712ABC34501DE3555001000000123112345678 + DV. O DV é calculado pelo mesmo algoritmo, agora considerando os valores ASCII das letras.

2. DV da chave gerado localmente (não pela lib): O dígito verificador da chave de acesso (44º caractere) é calculado pelo próprio projeto antes de enviar para a SEFAZ. A biblioteca de comunicação fiscal apenas recebe a chave já pronta. O algoritmo de cálculo (módulo 11 sobre os 43 caracteres anteriores, usando ASCII menos 48 para cada caractere) já é compatível com o formato alfanumérico.

2.1 Calculo: Serão utilizados, no cálculo do módulo 11, os valores relativos a letras maiúsculas da tabela código ASCII, como solução para unificar a representação de caracteres alfanuméricos.

2.2 Na rotina de cálculo do Dígito Verificador (DV) no CNPJ, serão substituídos os valores numéricos e alfanuméricos pelo valor decimal correspondente ao código constante na tabela ASCII e dele subtraído o valor 48. Desta forma os caracteres numéricos continuarão com os mesmos montantes, e os caracteres alfanuméricos terão os seguintes valores: A=17, B=18, C=19… e assim sucessivamente. 

Caractere ASCII Valor no cálculo
'0' a '9' 48–57 0 a 9
'A' 65 17
'B' 66 18
'C' 67 19
'D' 68 20
'E' 69 21
'F' 70 22
'G' 71 23
'H' 72 24
'I' 73 25
'J' 74 26
'K' 75 27
'L' 76 28
'M' 77 29
'N' 78 30
'O' 79 31
'P' 80 32
'Q' 81 33
'R' 82 34
'S' 83 35
'T' 84 36
'U' 85 37
'V' 86 38
'W' 87 39
'X' 88 40
'Y' 89 41
'Z' 90 42

1.3 O calculo do DV chave de acesso deverá ser feito considerando o valor ASCII das letras do CNPJ contidos na chave, ATUALMENTE O SISTEMA JÁ APLICARIA ESSE ALGORITMO.
Exemplo de chave:

CHAVE ALFANUMÉRICA: 35260712ABC34501DE3555001000000123112345678
Bloco Tam Valor Significado
cUF 2 35 São Paulo
AAMM 4 2607 Julho/2026
CNPJ emitente 14 12ABC34501DE35 CNPJ alfanumérico (sem pontuação, em maiúsculas)
mod 2 55 NF-e
série 3 001 Série 1 (preenchida com zeros à esquerda)
nNF 9 000000123 Nota nº 123 (zeros à esquerda)
tpEmis 1 1 Emissão normal
cNF 8 12345678 Código numérico aleatório da nota

1.3.1 Aplicado pesos cíclicos 2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9... da direita para a esquerda.

1.3.2 Soma dos produtos (por blocos para conferência):

          • Posições 1–8 (cUF + AAMM + parte do CNPJ): 12+15+4+54+0+49+6+10 = 150
          • Posições 9–16 (CNPJ — bloco com A B C): 68+54+38+27+32+35+0+5 = 259
          • Posições 17–24 (CNPJ D E + mod + série + início nNF): 80+63+6+45+40+35+0+0 = 269
          • Posições 25–32 (nNF): 4+0+0+0+0+0+0+5 = 9
          • Posições 33–40 (tpEmis + parte do cNF): 8+9+2+9+16+21+24+25 = 114
          • Posições 41–43 (final do cNF): 24+21+16 = 61
          • Total = 862
          • Aplicado módulo 11 = 862 / 11 = 78  (resto 4,  porque 78 x 11  = 858 e 862 - 858 = 4).
          • Resto = 4
          • Como o resto foi acima de 1, DV = 11-4=7.

2. Composição da chave preservando letras: Hoje a composição da chave aplica uma rotina que apaga letras do CNPJ antes de concatená-lo. Essa rotina precisa ser substituída por uma que preserve A-Z e 0-9, removendo apenas pontuação. Após a correção, o CNPJ alfanumérico entra na chave inteira e o DV sai correto automaticamente.

Questões Técnicas:

1. A coluna 'nfe'.'chaveAcesso' esta como VARCHAR(255), não sendo necessário ajuste em banco.

2. Arquivos a alterar da composição da chave - Pontos críticos da montagem da chave:

Arquivo : linha

Risco

Descrição / Ação

adapters/xml/nfe/EnvioNfeAdapter.java : 29

Crítico

CpfOrCnpjUtil.clean(empresa.getCnpj()) — herda correção de PROC001 (clean preserva letras).

adapters/xml/nfe/EnvioNfeAdapter.java : 46

Sem ação

ModValidador.of(11, value, value.length(), 4).calc() — algoritmo já compatível.

adapters/xml/nfce/EnvioNfceAdapter.java : 36, 53

Crítico/Sem ação

Mesma estrutura do NFe — herda PROC001.

util/NFCeUtil.java : 145, 151

Crítico

lpadTo(cnpjCpf.replaceAll("\D",""), 14, '0') — substituir limpeza por uma que preserve letras.

adapters/xml/nfe/NfeAdapter.java : 67

Sem ação

Apenas extrai o DV via chaveAcesso.substring(chaveAcesso.length() - 1) — agnóstico.

validadores/ModValidador.java : 179, 192

Sem ação

char - '0' é o algoritmo oficial alfanumérico.

©SOFTEN SISTEMAS 2026