Skip to main content
A SEFAZ (Secretaria de Estado da Fazenda) é o órgão responsável por autorizar e registrar todos os documentos fiscais eletrônicos no Brasil. Cada estado tem sua própria SEFAZ com webservices independentes.

Como a engineAPI se Comunica

Você envia JSON. Nós fazemos tudo o mais:

Ambientes

O endpoint da engineAPI é sempre o mesmo (https://api.engineapi.com.br). O ambiente é definido no cadastro da empresa emissora com o campo ambienteFiscal.

Webservices por Estado (Produção)

Os principais estados e seus webservices:

Consultando o Status da SEFAZ

Verifique se o webservice do estado está operacional antes de emitir:
Para consultar todas as UFs de uma vez (cache de 5 minutos): GET /v1/nfe/sefaz-status.
GET /v1/nfe/sefaz-status[/:uf] (as rotas públicas de consulta) nunca usa o certificado de um emissor, então status sai sempre UNKNOWN. É desenho deliberado: sem consulta real (cert-backed), a engineAPI nunca fabrica “no ar”/“fora do ar” pro dev. UP/DOWN só aparecem na decisão interna de contingência (abaixo), que roda com o certificado do emissor no momento da emissão.

Contingência

Quando a SEFAZ da UF do emissor está DOWN (consulta real, com o certificado do emissor, feita a cada POST /v1/nfe), a engineAPI reroteia automaticamente a transmissão para a SEFAZ Virtual de Contingência (SVC-AN ou SVC-RS). O mapa de qual SVC atende cada UF é decidido pela engineAPI, sem nenhuma ação do parceiro.
A engineAPI implementa contingência via SVC, não via EPEC. Notas emitidas em contingência não ganham um status separado tipo CONTINGENCY: o Invoice chega a AUTHORIZED (ou REJECTED) do mesmo jeito que uma emissão normal, só que autorizada pela SVC. O único jeito de identificar é inspecionar tpEmis no XML autorizado (1 = normal, 6 = SVC-AN, 7 = SVC-RS). Quando a SEFAZ da UF volta a ficar UP, a próxima emissão já transmite normal de novo, sem retransmissão manual. Ver também Contingência SVC.

Situação do documento / resposta perdida

Uma conexão pode cair depois que a SEFAZ autorizou a NF-e ou NFC-e e antes de a resposta chegar à engineAPI. Nessa situação, retransmitir às cegas é inseguro: o documento já pode existir e a segunda tentativa pode voltar como duplicidade. A engineAPI persiste a chave de acesso antes da transmissão. Se a resposta do worker se perde, consulta a situação dessa chave na SEFAZ antes de qualquer retransmissão: GET /v1/nfe/{id} e GET /v1/nfce/{id} também reconciliam documentos antigos em CREATED, TRANSMITTING ou ERROR antes de responder. Documentos finais (AUTHORIZED, REJECTED e CANCELED) nunca provocam nova consulta.

Veja também

Erros e Rejeições

Códigos de rejeição SEFAZ e como resolver

Sandbox

Ambiente de homologação para testes