Troubleshooting — NFe / CTe Inbound
Sinais de problema (e o que verificar)
| Sintoma | Causa provável | O que fazer |
|---|---|---|
| Último NSU não avança | Sem documentos novos, ou captura pausada | Confirme se há documentos no período; verifique o status da empresa |
| Status Inativo (vermelho) | Desativação automática (circuit breaker) — ex.: certificado | Corrija a causa e reative; veja Certificado digital |
| Webhooks não chegam | URL inacessível, retornando ≠2xx, ou validação HMAC falhando | Teste a URL; valide a assinatura x-hub-signature; use o reprocessamento |
rateLimitedUntil preenchido | Limite de taxa atingido no ambiente nacional | Aguarde a data informada; reduza a frequência de chamadas |
| Só chega o resumo da NF-e, sem XML completo | A NF-e ainda não foi manifestada — a SEFAZ só libera o XML completo (procNFe) após a manifestação | Registre a Ciência (210210) ou outra manifestação; veja Manifestar NF-e |
| NF-e cancelada ficou só com resumo + cancelamento | A SEFAZ recusa a Ciência para NF-e cancelada (cStat 650), então o XML completo não é liberado | Use o XML do evento de cancelamento (110111, procEventoNFe) como registro fiscal |
GET .../pdf responde 422 | O documento é um resumo ou um evento, sem DANFE | Não repita a chamada; manifeste a NF-e para obter o XML completo |
Leituras de NF-e respondem 403 (e /xml responde 400) | Inbound de NF-e não ativo na empresa (nunca habilitado ou desativado) | Reative com POST .../inbound/productinvoices; os documentos já capturados continuam armazenados |
Manifestação fica em Pending | O envio à SEFAZ é assíncrono; não há webhook de conclusão | Consulte GET .../productinvoices/manifestation-events/{id} por polling |
Manifestação terminou Rejected | A SEFAZ recusou o evento (ex.: cStat 596, fora do prazo). errorCode = BadRequest ou VALIDATION | Leia errorMessage; corrija e reenvie — Rejected permite nova submissão |
Manifestação terminou Failed | Falha antes do envio (ex.: CERT_EXPIRED, CERT_NOT_FOUND, MAX_ATTEMPTS_EXCEEDED) | Corrija a causa indicada em errorCode (ex.: renove o certificado) e reenvie |
issuedOn do resumo difere da data de emissão | Nos resumos, issuedOn é dhRecbto/dhEvento (recebimento na SEFAZ), não dhEmi — por desenho | Use o issuedOn do documento completo para a data de emissão |
| Ativei o CT-e e não chega nada | Ativação feita sem EnvironmentSEFAZ — nesse caso a NFE.io assume homologação (Test) | Consulte a configuração; se estiver em Test, desative e ative de novo com Production |
Erro ao ativar o CT-e: already have an active configuration | Já existe configuração ativa para a empresa nesta conta | Não é preciso reativar. Para trocar ambiente ou ponto de partida, desative e ative de novo; para trocar só o filtro de papéis no webhook do CT-e, use PUT .../inbound/transportationinvoices/webhook/filter, que não altera o resto da configuração |
Reenviar um webhook
Após esgotar as tentativas automáticas, o documento continua consultável. Reenvie manualmente:
curl -X POST "https://api.nfe.io/v2/companies/{company_id}/inbound/productinvoices/{access_key}/processwebhook" \
-H "Authorization: SUA_API_KEY"
Erros de autenticação
401— chave ausente/inválida. Envie a API Key no headerAuthorizationsem prefixo (veja Autenticação).403— chave sem o papel necessário (Nota Fiscal (api.nfe.io), ouNFeDist/CTeDist (dfe.nfe.io)). Nas rotas de NF-e, o403também indica empresa sem o inbound de NF-e ativo — veja Códigos HTTP.
Reconciliação automática de CT-e
A NFE.io roda uma reconciliação diária que revisita os NSUs recentes de cada empresa com CT-e ativo e recupera documentos que tenham ficado para trás. Ela fecha lacunas recentes — não reconstrói histórico: para buscar documentos anteriores à ativação, use StartFromDate (limitado à retenção da SEFAZ, hoje cerca de 90 dias). Valores atuais: execução às 23h (horário de Brasília), revisitando os últimos 3 dias. São parâmetros de operação e podem ser ajustados.
Checklist de diagnóstico
- Empresa ativa para o tipo de documento?
- Certificado A1 válido (NF-e/CT-e)?
- Período consultado tem documentos? (SEFAZ guarda ~90 dias)
- Webhook respondendo
2xxem <5s e validando HMAC? - API Key com o papel correto e sem prefixo no header?