data.transaction.status. The data object contains:
transaction: the transaction after the transition, including its public status, amounts, chain, timestamps, and any queuedwithdrawalRequest;previousStatus: the previous observable status, ornullfor a first event or a transition out of the internalcreated/claimedstates. Internal states never emit events.
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 eventid. 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.
