Pular para o conteúdo

SEFAZ lenta ou instável (v2)

A emissão de documentos fiscais pela API é assíncrona: o POST de emissão devolve um recibo, e o resultado deve ser acompanhado pela consulta (GET .../{recibo}). Na operação normal, a SEFAZ autoriza em poucos segundos.

Em alguns momentos (instabilidade ou lentidão da SEFAZ), a autorização pode levar mais de 15 segundos. Nessa janela, a consulta do recibo pode devolver temporariamente:

{
"status": "emitindo",
"sefaz": {
"codigo": "217",
"mensagem": "Rejeição: NF-e não consta na base de dados da SEFAZ"
}
}

A regra de ouro: decida pelo sefaz.codigo, nunca pelo status sozinho

sefaz.codigoSignificadoAção do integrador
100Autorizada (protocolo e XML disponíveis)Concluir a venda / imprimir DANFE
217 ou 105Transitório — SEFAZ ainda processandoAguardar e seguir consultando o mesmo recibo — não reemitir
ausente / vazioNota na fila ou enviada, sem retorno ainda (status pendente/processando/emitindo)Aguardar e seguir consultando o mesmo recibo
Qualquer outro (ex.: 204, 539, 770…)Rejeição definitivaCorrigir o dado apontado na mensagem e emitir novamente

O que o nosso sistema faz automaticamente

Você não precisa (e não deve) reenviar a nota. Nosso sistema possui reconciliação automática: um processo interno re-consulta a situação da nota diretamente na SEFAZ (pela chave de acesso) e atualiza o resultado assim que houver resposta definitiva:

  • Se a SEFAZ autorizou → a consulta do recibo passa a devolver status: "emitida", com protocolo de autorização e XML definitivo — como em qualquer emissão normal.
  • Se a SEFAZ rejeitou de fatosefaz.codigo/sefaz.mensagem passam a refletir a rejeição real, para correção e reenvio.

Na maioria dos casos a situação se resolve em poucos minutos. A janela de reconciliação automática cobre até 3 horas.

Ação necessária do integrador

  1. Continue consultando o mesmo recibo até obter um resultado definitivo (sefaz.codigo = 100 ou um código de rejeição real). Sugestão de polling: a cada 2–5 s no primeiro minuto; depois a cada 30–60 s.
  2. Nunca reenvie a mesma venda enquanto sefaz.codigo for 217, 105 ou estiver ausente. A nota pode já ter sido autorizada na SEFAZ — reenviar gera duplicidade de documento fiscal (duas notas válidas para a mesma venda). Envie sempre numero_origem na emissão (mais detalhes) para que, mesmo em caso de reenvio acidental, a API devolva o recibo já existente em vez de criar outra nota.
  3. Só considere a venda concluída (impressão de DANFE, baixa no seu sistema) quando sefaz.codigo = 100.
  4. Se receber uma rejeição definitiva (código ≠ 100/217/105, ex.: erro cadastral ou tributário), corrija o dado apontado na mensagem e aí sim emita novamente.
  5. Se uma nota permanecer com sefaz.codigo = 217 (ou 105) por mais de 3 horas, não reemita por conta própria — acione o suporte informando o recibo e a chave de acesso, para verificação manual.

Resumo por situação

Situaçãostatussefaz.codigoAção
Autorizadaemitida100Concluir a venda / imprimir DANFE
SEFAZ lenta (transitório)emitindo217 (ou 105)Aguardar e repetir a consulta — não reemitir
Em fila / sem retorno aindapendente / processandoausenteAguardar e repetir a consulta
Rejeição definitivaemitindo + bloco sefaz100/217/105Corrigir o dado e emitir novamente
Canceladacancelada
Transitório por mais de 3hemitindo217 (ou 105)Contatar o suporte com recibo + chave — não reemitir