Pular para o conteúdo
Fiscal ProBiblioteca
Rejeição 397 · Regra ZX02-296

Rejeição 397: DigestValue do QR 2 diferente da assinatura da NFC-e

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 397/ZX02-296 indica que o DigestValue do QR Code versão 2 off-line difere do DigestValue da assinatura da NFC-e. A comparação deve usar o XML efetivamente assinado da mesma nota, não uma versão anterior do rascunho nem o Hash final da URL.

O que deve ser comparado

A regra do MOC 7.0 aplica-se ao modelo 65, QR 2 e tpEmis=9. O parâmetro está na sexta posição da URL em NFe/infNFeSupl/qrCode. Sua referência é o DigestValue da assinatura XML, no grupo Signature. A ausência é 396/ZX02-288 e o formato hexadecimal é 400/ZX02-292. Um valor pode passar nesses dois testes e ainda divergir da assinatura correta. MOC 7.0, p. 132

Conversão de representação não é uma nova assinatura

O Manual 6.0 determina converter o DigestValue para hexadecimal; seu exemplo da página 26 mostra a codificação hexadecimal dos caracteres da representação textual presente no XML. Não se compara diretamente o texto Base64 da assinatura com a sequência hexadecimal do QR. Também não se recalcula o Hash final do QR para substituir o DigestValue. São informações diferentes. Manual 6.0, pp. 22,24,26–27

O integrador deve reproduzir a transformação documentada a partir do valor extraído da assinatura da mesma nota. Recalcular ou alterar uma assinatura para fazê-la coincidir com um QR antigo não é uma correção válida do documento.

Exemplo: QR armazenado antes da versão final

Imagine que uma NFC-e em contingência tenha seu rascunho alterado e seja novamente gerada e assinada antes de uma tentativa cabível. Se o gerador reutiliza o QR da versão anterior, o sexto parâmetro pode não corresponder à assinatura do arquivo final. Compare os arquivos preservados, o momento da geração e o texto do QR para confirmar essa hipótese.

Outro cenário é a extração de um DigestValue de uma referência ou arquivo incorreto. Um formato hexadecimal válido não comprova vínculo. A demonstração é textual porque o DigestValue real depende da assinatura protegida; não há digest ou assinatura operacional fictícia neste artigo.

Versão 3 tem outra estrutura

No QR 3 off-line, a sexta posição é o tipo de identificação do destinatário, a sétima é sua identificação e a oitava contém a assinatura dos parâmetros. O QR 3 online tem somente três parâmetros. ZX02-296 não pode ser aplicada à sexta posição de QR 3 como se ainda fosse DigestValue. Manual 6.0, pp. 29–30

Como concluir a investigação

Confronte o DigestValue extraído da assinatura, sua representação hexadecimal documentada, o sexto parâmetro gravado no XML e a URL decodificada da impressão. Se o texto gravado está correto e a imagem difere, investigue a impressão; se o texto já usa outro valor, investigue extração, versão do arquivo e montagem. Preserve XML assinado e notas autorizadas. Antes de nova tentativa, esclareça qualquer resultado fiscal desconhecido; superar a comparação do QR não comprova autorização.