Skip to content
Seismic Orchestration

Order events

Fired when an order's OrderStatus changes to a different value. Backwards moves fire too — a completed payment that is later refunded is announced. An under_review order held for a supporting document also fires when its document review moves on, with status unchanged: status_reason reads documents_required, documents_under_review, documents_rejected, then documents_approved as it returns to processing (see Submit a supporting document). A review only moves forward, so a late notice of an earlier stage is not relayed. An order also fires once with status unchanged when the settlement network reports a wire payout's uetr after the order reached its current status. Any other repeat of the same status is silent.

order.status_changed

{
  "event_type": "order.status_changed",
  "created_at": "2026-08-27T08:05:05.883Z",
  "data": {
    "order_id": "9b32…",
    "customer_id": "2f10…",
    "status": "completed",
    "order": {
      "id": "9b32…",
      "status": "completed",
      "source": {
        "amount": "1000.00",
        "currency": "USD",
        "rail": "ach"
      },
      "destination": {
        "amount": "997.50",
        "currency": "USDC",
        "rail": "base"
      },
      "idempotency_key": "idem-42",
      "created_at": "2026-06-01T12:00:00Z",
      "...": "…"
    }
  }
}
FieldTypeNotes
order_idUUIDThe order whose status changed.
customer_idUUIDOwning customer.
statusOrderStatusNew status. One of awaiting_funds, pending, under_review, processing, sent, completed, expired, failed, canceled, refunded, unknown.
orderSame shape returned by POST /v0/quotes/:id/acceptFull order record at event time: source / destination legs, funding_instructions when present, reference, comment, transaction_hash once the order settles on-chain, uetr once the settlement network reports the wire's SWIFT reference, and status_reason on a refunded / failed transition (why the payment was returned — see Status reasons for the known codes) or on an order held for a supporting document. Optional in the schema. See Backfill caveat.

order.settlement_recorded

Fired after order.status_changed(completed), once Seismic records the on-chain settlement hash for the order's crypto leg. The hash isn't known when the order first completes (it lands shortly after), so it ships as this follow-up event rather than delaying the completed transition. Correlate it to the order by order_id. The same hash also appears on the order returned by GET /orders. Only fires for orders that settle on-chain.

updated_at is the order record's last-changed instant, not the settlement's — nothing records when the crypto leg itself settled, only that its hash was captured. In practice it reads as the completed transition this settlement belongs to, slightly before the envelope created_at. For the order's created_at and the rest of its fields, read the order object on order.status_changed or GET /orders.

{
  "event_type": "order.settlement_recorded",
  "created_at": "2026-08-27T08:05:05.883Z",
  "data": {
    "order_id": "9b32…",
    "customer_id": "2f10…",
    "transaction_hash": "0x45da0b317018405ebd82b346aeee0ecaac2f49a5b7d266c37273ff92a23150af",
    "source_from_address": "0x52908400098527886E0F7030069857D2E4169EE7",
    "source_chain": "base",
    "updated_at": "2026-08-27T08:05:04.118Z"
  }
}
FieldTypeNotes
order_idUUIDThe order that settled. Correlate to order.status_changed.
customer_idUUIDOwning customer.
transaction_hashstringOn-chain settlement hash of the order's crypto leg.
source_from_addressstringOptional. Sending wallet for a payment funded from an external crypto wallet. Absent when the source was fiat or no sending wallet was reported.
source_chainstringOptional. Chain the source funds arrived on, alongside source_from_address.
updated_atstringWhen the order record last changed, RFC-3339 UTC with millisecond precision. Not the settlement instant — no such instant is recorded — and not the envelope created_at, which is when this event was recorded. Absent only on events delivered before the field existed.

Backfill caveat

The embedded order field is optional in the published JSON Schema. Freshly-emitted events always include it. Replays of older deliveries may not. Fall back to a REST read in that case.