PROC005 - Ajustes Chave de Acesso Alfanumérica NF-e e NFC-e
| 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)
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.
- Posições 1–8 (cUF + AAMM + parte do CNPJ):
-
-
-
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


No Comments