Skip to main content
Nem todo erro que envolve a SEFAZ é do mesmo tipo. A engineAPI separa dois problemas que se parecem, mas pedem reações opostas.

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 com error.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 (cStat 108/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