- v1 · atual
- v0 · descontinuado
Contrato atual (v1). O snapshot de pedido carregado aqui segue o contrato v1 de
order.completed — descontos de pedido/produto, impostos granulares, enum itemType, deliveryConfirmationCode — mais o bloco fiscal de autorização.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 emiteorder.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
statustransiciona paraauthorized; no Brasil isso corresponde ao códigocStatde autorização SEFAZ)
| Cobertura | Todos os países — Brasil (NFC-e/NF-e via SEFAZ) e CO/EC/CL/AR/VE via o callback fiscal genérico. O país viaja em fiscal.countryCode, não mais no nome do evento |
| Tipos de documento | Variam por país — nfce/nfe (BR), nota fiscal eletrônica (CO/EC/CL/AR/VE). Chega em fiscal.docSubtype |
| Chave de idempotência | event.id |
| Dispara mais de uma vez | Não, salvo em retentativas |
Latência relativa a order.completed | Geralmente segundos; pode ser minutos se a autoridade fiscal estiver degradada |
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
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 dedata.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". Odata.status(status do pedido) é"COMPLETED"; o status fiscal está emdata.fiscal.status.pdfUrlexmlUrlpodem 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.cStatfrequentemente énull. Não faça lógica que dependa dele. Usestatus === "authorized"eprotocolocomo 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.invoiceddispara para todos os países; usefiscal.countryCodepara filtrar. Os campos do blocofiscalvariam 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.

