Rejeição: o problema é o SEU dado
A SEFAZ recebeu o XML, processou, e recusou por causa do conteúdo: CNPJ inválido, NCM inexistente, duplicidade de número, certificado vencido. Chega como HTTP 400 comerror.erros[], o código e a mensagem da SEFAZ, verbatim, sem tradução (ex.:
{ "codigo": "539", "descricao": "Rejeicao: Duplicidade de NF-e" }). Reenviar o mesmo
payload sem corrigir o campo apontado gera a mesma rejeição de novo: não é um caso de
retry.
Indisponibilidade: o problema é o serviço DELES
O webservice da SEFAZ do estado está fora do ar ou em manutenção (cStat108/109).
Aqui a engineAPI não te devolve um 400 pra você resolver: ela reroteia
automaticamente a transmissão para a SEFAZ Virtual de Contingência (SVC-AN ou
SVC-RS). O documento chega a AUTHORIZED do mesmo jeito; o único rastro é o tpEmis
no XML autorizado. Consultar GET /v1/nfe/sefaz-status/{uf} (ou o status
público) antes de emitir ajuda a
antecipar isso, mas a contingência já cobre automaticamente sem ação do parceiro.
A status page pública (
GET /v1/status, sem autenticação, consumida em
status.engineapi.com.br) trata isso como conceitos separados: o rollup de NFS-e compara
AUTHORIZED vs ERROR explicitamente sem contar rejeição fiscal do cliente como
indisponibilidade da engineAPI: são eixos diferentes por desenho.Na prática
Veja também
Erros e Rejeições
Catálogo completo de códigos e o formato RFC 7807
SEFAZ e Webservices
Contingência SVC e como consultar o status por UF