Skip to main content
Descontinuado (v1). Contrato anterior, mantido apenas como referência histórica. A versão atual é order.invoiced — v1.1.
order.invoiced dispara quando a autoridade fiscal do país autoriza o documento fiscal associado a um pedido — SEFAZ no Brasil, SRI no Equador, DIAN na Colômbia, AFIP na Argentina, SII no Chile, SENIAT na Venezuela. É emitido pelo pipeline fiscal do Fire, que se integra com o seu provedor fiscal como provedor de documentos. Este evento é separado de order.completed: o pedido é pago primeiro (order.completed), depois o Fire pede a emissão fiscal via seu provedor fiscal, e order.invoiced dispara apenas quando a autoridade fiscal retorna a autorização.

Condição de disparo

O Fire emite order.invoiced uma vez por documento fiscal, na primeira vez em que tudo o seguinte é verdade:
  • O pedido está em uma loja com faturamento fiscal habilitado (storeFiscalConfig.enabled === true)
  • Um documento fiscal foi emitido para o seu provedor fiscal
  • O seu provedor fiscal reporta que a autoridade fiscal autorizou o documento (o status transiciona para authorized; no Brasil isso corresponde ao código cStat de autorização SEFAZ)

O que tem em trigger.data

Mesmo snapshot V4 que order.completed mais um bloco top-level fiscal com as referências do documento autorizado. Os campos variam por país — abaixo é mostrado o Brasil (chaveAcesso, protocolo); outros países carregam seus próprios identificadores (cufe na CO, claveAcceso no EC, cae na AR, etc.). Veja o callback fiscal genérico para o contrato por país. O status do pedido permanece "COMPLETED" e paymentStatus permanece "SUCCEEDED" — a autorização fiscal não muda o status do pedido.

Exemplo — payload real de produção (BR, sanitizado)

Referência de data.fiscal

object
Referências do documento autorizado pela SEFAZ.

Onde vivem os totais fiscais

Os valores agregados fiscais (vBC, vNF, vICMS, etc.) não estão dentro de data.fiscal — estão em data.payments.metadata.fiscal, o mesmo lugar onde order.completed os carrega. order.invoiced não os duplica; trate o snapshot do pedido como a única fonte de verdade para os agregados monetários. A classificação por linha (NCM, CFOP, CSOSN, fiscalCategoryCode) vive em data.orderLines[n].metadata.fiscal. Igual a order.completed. O bloco data.store.storeFiscalConfig carrega a identidade do emissor (CNPJ, legalName, tradeName) — também igual a order.completed.

Handler de exemplo

Erros comuns

  • status === "authorized", não "COMPLETED". O data.status (status do pedido) é "COMPLETED"; o status fiscal está em data.fiscal.status.
  • pdfUrl e xmlUrl podem ser efêmeros. Em produção, o seu provedor fiscal pode assinar/expirar esses links. Baixe e persista os artefatos ao receber, em vez de linkar clientes diretamente ao seu provedor fiscal.
  • cStat frequentemente é null. Não faça lógica que dependa dele. Use status === "authorized" e protocolo como sinais autoritativos.
  • Não há evento para rejected / denied / error. Se a SEFAZ rejeita o documento, nenhum evento dispara hoje. O status do documento fiscal é persistido internamente mas não dispara flow. Fique atento no roadmap.
  • O país não vive mais no nome do evento. order.invoiced dispara para todos os países; use fiscal.countryCode para filtrar. Os campos do bloco fiscal variam por país (chaveAcesso/protocolo no BR, cufe na CO, claveAcceso no EC, etc.).

Eventos relacionados

order.completed

Dispara antes deste evento — o pedido em si.

order.reversed

Dispara depois se o documento for cancelado na SEFAZ.