Skip to main content
Descontinuado (v0). Contrato anterior, mantido apenas como referência histórica. A versão atual é order.cancelled — v2.1.
order.cancelled dispara quando um pedido previamente injetado é cancelado — pela UI do backoffice do Fire, um adaptador externo ou uma chamada à API de cancelamento. Não retrai um order.completed anterior do mesmo pedido; ambos os eventos são emitidos independentes.

Condição de disparo

O Fire emite order.cancelled uma vez quando o status de um pedido transiciona para CANCELLED, independente do estado de pagamento anterior. O cancelamento é registrado com contexto completo de auditoria (quem, quando, por quê, fonte).

O que tem em trigger.data

Mesmo snapshot V4 que order.completed — todos os campos documentados lá estão presentes aqui, com três diferenças:
  1. status é "CANCELLED" (não "COMPLETED").
  2. paymentStatus permanece igual a quando o pedido foi completado (tipicamente "SUCCEEDED" se o pedido tinha sido pago antes do cancelamento).
  3. Um novo bloco top-level cancellation carrega a metadata de auditoria.

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

Referência de data.cancellation

object
Bloco de auditoria que descreve como, quando e por quem o pedido foi cancelado.

Lifecycle relativo a outros eventos

Para um pedido brasileiro fiscal-enabled que é cancelado, espere esta sequência:
  • order.cancelled é emitido imediatamente quando o cancelamento acontece, antes de contatar qualquer autoridade fiscal externa.
  • order.reversed é emitido depois — uma vez que a SEFAZ confirma via seu provedor fiscal. Pode chegar segundos ou minutos após order.cancelled, dependendo do tempo de resposta da SEFAZ.
  • Para pedidos não brasileiros ou lojas sem emissão fiscal, apenas order.cancelled dispara.

Variações por país

order.cancelled é global — dispara para todos os países e todos os canais quando um pedido é cancelado (Argentina, Brasil, Chile, Colômbia, Equador, Venezuela e qualquer outro país com Integration Flows ativos). O bloco de auditoria de cancelamento (cancellation.{cancellationId, cancelledAt, cancelledBy, cancellationReason, cancellationSource}) é idêntico em todos os países. O único campo específico por país é cancellation.metadata.fiscal, que é populado apenas para lojas brasileiras que tinham um documento fiscal previamente autorizado (ou seja, um order.invoiced foi emitido para este pedido antes). Para todos os demais países — e para pedidos BR cancelados antes da autorização fiscal — cancellation.metadata.fiscal é null e nenhum evento order.reversed seguirá. Para lojas não-BR (Argentina, Chile, Colômbia, Equador, Venezuela, outras), o bloco cancellation fica assim:
Cancelamento não-BR
Os identificadores a nível de loja em data.store variam por país — veja order.completed → Variações por país para country.code, currencyCode e storeFiscalConfig.govIdType (CNPJ / CUIT / RUT / NIT / RUC / RIF) por país.

Handler de exemplo

Erros comuns

  • status === "CANCELLED", não paymentStatus. Pedidos pagos cancelados mantêm paymentStatus === "SUCCEEDED"; o cancelamento vive no campo status mais o bloco cancellation.
  • order.cancelled ≠ refund. O Fire reporta o cancelamento; o refund (se houver) é iniciado pelo canal/processador e não está neste payload.
  • Não assuma que order.completed chegou primeiro. Entrega fora de ordem é possível — seu handler deveria tolerar receber order.cancelled para um orderId que ainda não conhece (ex.: log + cria um placeholder; reconcilia quando order.completed chegar).
  • cancellation.metadata.fiscal é o doc original, não o resultado do cancelamento. Para a confirmação SEFAZ, escute order.reversed.

Eventos relacionados

order.completed

O evento que você verá para o mesmo pedido antes do cancelamento.

order.reversed

Apenas Brasil — dispara quando a SEFAZ confirma o cancelamento.