Skip to main content
Transaction events track every observable status transition, including transfers, deposits, and withdrawals. Subscribe to reconcile funding and settlement without polling. The current status is in data.transaction.status. The data object contains:
  • transaction: the transaction after the transition, including its public status, amounts, chain, timestamps, and any queued withdrawalRequest;
  • previousStatus: the previous observable status, or null for a first event or a transition out of the internal created / claimed states. Internal states never emit events.
The transaction summary uses camelCase keys and includes nullable keys explicitly as null. It does not duplicate the nested account object returned by transaction queries; accountId remains available. Each transaction event sets transactionId and accountId in related. The other three routing keys are null.

Event types

An event reports a persisted transition, not a promise that every transaction passes through every status. For status meanings and polling, see Tracking transactions.

Example: completed transfer

Illustrative event (not a production observation):
transaction-completed

Reconciliation and replay

Verify signatures against the exact raw request body, acknowledge deliveries idempotently, and deduplicate by the event id. Delivery order should not be used as your only source of truth: retries can arrive after later events. Query the current transaction when reconciling its latest state. GET /v1/query/events exposes the same persisted lifecycle envelope with an additional createdAt. Replays and delivery retries keep the original payload. See Webhook delivery and signatures.