Rejeição 400: Hash do QR Code versão 2 fora do formato hexadecimal
Revisão editorial em 16 de out. de 2026. Confira as versões e condições das regras nas fontes do artigo.
A Rejeição 400/ZX02-316 significa que o Hash final do QR Code versão 2 não está em formato hexadecimal. A regra do MOC admite caracteres 0–9, a–f e A–F. Esse Hash é o último parâmetro da URL; não é o DigestValue da assinatura XML.
Qual parâmetro examinar
No QR 2 online, o Hash é o quinto parâmetro; no QR 2 off-line é o oitavo. A condição aplica-se à NFC-e, modelo 65, com QR versão 2. O MOC observa que o Schema também faz a verificação. Se o sistema informa apenas 400, confira a mensagem e a regra, pois 400/ZX02-292 trata do DigestValue em outra posição. MOC 7.0, pp. 132–133
Saída esperada do cálculo
O Manual 6.0 descreve o Hash por SHA-1 sobre a sequência de parâmetros correspondente ao perfil, concatenada ao CSC, com resultado representado em hexadecimal. As tabelas de parâmetros indicam 40 caracteres para o Hash; uma representação Base64 ou bytes brutos não é a representação exigida na URL. Manual 6.0, pp. 21–24
Formato correto não garante cálculo correto. Não elimine caracteres indevidos nem substitua os símbolos por zeros: confira se a função devolveu a saída em hexadecimal e se o gerador serializou o valor correto. O CSC secreto não deve aparecer na URL.
Exemplo: algoritmo certo, representação errada
Uma biblioteca pode calcular o SHA-1 e devolver um objeto de bytes, enquanto o montador espera um texto hexadecimal. Se esses bytes são convertidos para outro formato, o QR não atende à representação documentada. O diagnóstico deve examinar o tipo de saída da função e o texto final, sem alterar os dados de entrada verdadeiros.
Em outro caso, a saída possui apenas caracteres hexadecimais, mas foi calculada com CSC ou parâmetros incorretos. A falha é de conferência do cálculo, 464/ZX02-320. Hash ausente é 396/ZX02-312. A demonstração é textual porque um Hash completo dependeria da chave e das credenciais reais; não é preciso inventá-los para explicar a representação.
Não aplique a regra de Hash 2 à assinatura QR 3
O QR 3 online tem somente três parâmetros. No QR 3 off-line, a última posição é uma assinatura dos parâmetros em Base64, como consta no Manual. Ela não deve ser forçada ao alfabeto hexadecimal exigido para o Hash do QR 2. Identifique a versão antes de diagnosticar um caractere como inválido. Manual 6.0, pp. 29–30
Verificação final
Compare o Hash gerado, o texto de infNFeSupl/qrCode e a URL extraída da imagem. Localize a etapa que serializou incorretamente antes de atualizar a origem no gerador. Preserve documentos autorizados e XML assinado. Um teste de formato aprovado não é autorização, e uma tentativa sem conclusão fiscal conhecida deve ser esclarecida antes de qualquer novo envio.