Pular para o conteúdo
Fiscal ProBiblioteca
Rejeição 400 · Regra ZX02-116

Rejeição 400: formato hexadecimal do hash no QR-Code 1 (histórico)

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, regra ZX02-116, é aqui explicada no contexto histórico do QR-Code 1 (nVersao=100) da NFC-e, modelo 65. A regra histórica exigia formato hexadecimal de cHashQRCode no QR-Code 100, com caracteres 0–9, a–f, A–F. Esse leiaute foi desativado em produção em 01/10/2018; a orientação abaixo serve à leitura de arquivos e retornos legados, sem apresentar essa regra como validação ativa de notas novas.

Qual é a vigência desta regra histórica?

O encerramento em produção está documentado no Manual DANFE NFC-e/QR-Code 6.0, página 5. O MOC 7.0 conserva a tabela da versão 100, e a NT 2025.001 v1.03 mantém sua descrição de preenchimento na página 14 ao lado das versões 2 e 3. Essa coexistência documental e a presença de um padrão legado no schema não demonstram reativação da versão 1 nem aceitação fiscal atual.

Para investigar uma mensagem recebida hoje, confira a versão real da URL, o parâmetro citado no retorno, a data da tentativa e o ambiente. O mesmo código numérico aparece em regras diferentes. Não converta automaticamente esta identidade histórica em uma regra de QR-Code 2 ou 3.

Formato hexadecimal bastava para validar o hash?

A ZX02-116 tratava o formato do parâmetro cHashQRCode, admitindo 0-9, a-f e A-F. O MOC indica verificação pelo schema. Essa exigência não era uma verificação completa da autenticidade do resultado calculado.

Um hash ausente era 396/ZX02-112. Um conteúdo presente, hexadecimal e diferente do calculado era 464/ZX02-120. A distinção entre presença, caracteres e correspondência evita “corrigir” o formato com um valor fabricado.

Não confunda o hash do QR-Code com o DigestValue da assinatura, com o segredo CSC ou com um hash de arquivo escolhido livremente. Também não transforme o XML assinado para fazer seu conteúdo coincidir com uma URL antiga: a URL deve ser interpretada junto ao original preservado.

Exemplo de leitura de um registro legado

Em um registro legado, o cálculo interno produziu bytes, mas a serialização usou Base 64 no lugar do texto hexadecimal previsto para cHashQRCode. A evidência pode demonstrar erro de representação, sem publicar resultado criptográfico algum.

Em outro caso, o resultado foi apresentado corretamente como hexadecimal, mas calculado com parâmetros de outra nota. O exame de caracteres não resolve essa divergência. É preciso conferir as entradas e a associação documental, mantendo credenciais protegidas.

Como distinguir as versões atuais?

QR-Code 2 possui regra 400/ZX02-316 para formato do hash, em posição 5 online ou 8 offline; o Manual 6 descreve SHA-1 com saída hexadecimal. A regra 316 é distinta da histórica 116.

QR-Code 3 offline utiliza uma assinatura representada em Base 64, e o modelo online não possui esse hash. Aplicar a exigência de hexadecimal do QR 1 à assinatura da versão 3 seria uma mistura de mecanismos e de identidades de validação.

Como preservar a evidência e encerrar o diagnóstico?

Preserve o XML e o retorno originais, identifique a nota e compare somente os dados da mesma tentativa. A URL histórica é encontrada em NFe/infNFeSupl/qrCode, no namespace http://www.portalfiscal.inf.br/nfe; em arquivo processado, o caminho começa por nfeProc. A leitura do original deve ocorrer com acesso autorizado.

Se o emissor está gerando formato antigo, diagnostique a integração e o leiaute aplicável, preservando os dados verdadeiros e o resultado fiscal anterior. Não modifique documento autorizado nem reenvie uma tentativa incerta.

Não é apresentado XML operacional: a conferência fiel exige a chave, os dados e, conforme o parâmetro, a assinatura ou a credencial protegida da tentativa. Os cenários são textuais e não fabricam identificadores, CSC ou hashes. Conformidade no schema e consulta legível do QR-Code não equivalem à autorização da nota.

Fontes oficiais