Rejeição 999: Erro não catalogado (informar a mensagem de erro capturado no tratamento da exceção)

Descrição oficial da SEFAZ: Erro não catalogado (informar a mensagem de erro capturado no tratamento da exceção)

O que significa

Este é o código coringa da SEFAZ: uma exceção que o validador não soube classificar em nenhuma rejeição específica. Ele não descreve, por si só, nenhum problema — não existe causa fixa para o 999.

Por que acontece

A informação útil não está no código, está na mensagem de texto que veio junto com o retorno: o layout prevê que o motivo real seja descrito ali. Essa mensagem pode apontar desde um problema no XML até uma falha interna momentânea da própria autorizadora. Sem ler o texto retornado, qualquer causa que se afirme aqui é chute.

Como resolver

Leia a mensagem que acompanhou o retorno — é ela que diz o que aconteceu, e é ela que você deve levar para qualquer diagnóstico ou chamado. Guarde o XML enviado e o retorno completo. Se a mensagem indicar falha temporária do serviço, aguarde e retransmita o mesmo XML (consultando antes o recibo ou a chave, para não duplicar). Se a mensagem apontar um campo ou uma regra, corrija ali e retransmita. Se ela for genérica ou vazia, abra chamado na SEFAZ da UF com o XML e o retorno em mãos.

Como evitar

Registre sempre o retorno inteiro da SEFAZ, e não só o código: no 999, o log da mensagem é a única coisa que permite descobrir o que houve.