Pular para o conteúdo
Fiscal ProBiblioteca
Rejeição 396 · Regra ZX02-288

Rejeição 396: DigestValue ausente no QR Code versão 2 off-line

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 396/ZX02-288 indica que falta o parâmetro DigestValue no QR Code versão 2 de uma NFC-e em contingência off-line (tpEmis=9). Nesse perfil ele ocupa a sexta posição. Trata-se de um valor derivado da assinatura do XML, diferente do Hash final do QR.

Localização e contexto da regra

O MOC 7.0, página 132, vincula ZX02-288 ao modelo 65, QR versão 2 e contingência 9. A URL fica em NFe/infNFeSupl/qrCode. No QR 2 online esse parâmetro não existe. A regra observa que o Schema também verifica a presença; isso não dispensa a conferência do conteúdo. MOC 7.0, p. 132

Não transporte a sexta posição para QR 3. No QR 3 off-line ela corresponde ao tipo de identificação do destinatário; não há DigestValue nesse lugar. A assinatura dos parâmetros ocupa a oitava posição. O QR 3 online contém apenas chave, versão e ambiente. Manual DANFE/QR 6.0, pp. 29–30

A informação deve vir da assinatura correta

No QR 2 off-line, o Manual 6.0 determina converter para hexadecimal o valor de DigestValue da NFC-e e utilizá-lo na montagem. O exemplo oficial da página 26 mostra a conversão dos caracteres da representação textual do DigestValue em hexadecimal. Não confunda esse procedimento com o Hash do QR calculado sobre parâmetros e CSC. Manual 6.0, pp. 22,24,26

A geração precisa usar a assinatura do XML da mesma nota. Se o QR é montado antes da assinatura estar disponível, a posição pode ficar vazia. Também investigue leitura de um XPath incorreto, namespace de assinatura ignorado ou uso de um arquivo anterior.

Exemplo de ordem de geração

Imagine que o emissor monte os parâmetros off-line antes de finalizar a assinatura. Chave, versão, ambiente, dia e total existem, mas a sexta posição permanece vazia. A causa possível é a ordem de geração, que deve ser confirmada comparando o XML assinado e os registros da integração. Se a sexta posição está preenchida com valor de outra nota, o padrão é de divergência, 397/ZX02-296.

A demonstração é textual porque o valor válido depende da assinatura real. Não se publica um DigestValue fictício como se comprovasse uma NFC-e, nem se recalcula a assinatura de um documento autorizado para reproduzir o exemplo.

Ausência, formato e divergência têm testes distintos

O código 396/ZX02-288 é ausência. 400/ZX02-292 verifica formato hexadecimal; 397/ZX02-296 verifica a divergência em relação à assinatura. Um texto formado apenas por caracteres hexadecimais ainda pode representar o DigestValue errado. Preencher a partir de outro campo para eliminar a ausência não resolve a coerência da URL.

Confirme o resultado da última tentativa antes de qualquer novo envio; preserve XML assinado e autorizado. Corrija a origem no gerador e confronte a URL gravada no XML com a URL lida da imagem do QR.