Tracking Transaction Status

View as Markdown

Poll /status to track a cross-chain transaction.

Transaction Lifecycle

Cross-chain transaction status lifecycle

Statuses can be skipped. A single poll may jump from origin_tx_pending directly to bridge_filled if the bridge completes quickly. Do not rely on observing every intermediate status.

Top-level Status

The top-level status shows where the funds are. Statuses appear below in approximate order.

StatusDescriptionIs Terminal?
origin_tx_pendingThe origin transaction is pending and has not landed on-chain.
origin_tx_confirmedThe origin transaction has been included in a block. The bridge status is fetched immediately after.
origin_tx_revertedThe origin transaction is reverted. The transaction has reached the end of the lifecycle, and the funds still remain in the originAddress.
bridge_pendingThe bridge is in flight. The quoted bridge provider has received the funds from the originAddress and is in process of executing the trade.
bridge_filledThe bridge has been fulfilled. The funds have landed in the destinationAddress.
bridge_failedThe bridge did not complete, but recovery may still be in progress. Check failure.status before you stop polling. See Handling Failures and Recovery.
unknownThe transaction status is unknown. Please reach out to 0x, as it is likely that there is an internal error.

How Confirmation Works

The status service does not wait for multiple block confirmations. A transaction is marked origin_tx_confirmed as soon as a receipt exists and the containing block is available from the RPC node:

  • Fast L2s (Base, Arbitrum, Optimism): under 2 seconds
  • Ethereum mainnet: ~12 seconds (one slot)
  • Bridge providers handle their own finality requirements independently

Using quoteId

The quoteId parameter (returned in each quote from /quotes) is optional but strongly recommended. Passing it enables faster status resolution and is required when the origin transaction contains multiple cross-chain operations (e.g., submitted via an ERC-4337 bundler).

Without quoteId in those cases, the /status endpoint returns a 400 error: "Multiple cross-chain operations found in transaction; provide quoteId to disambiguate"

Settled Amounts

After bridge_filled, the bridge step in the steps array includes a settledBuyAmount field which represents the actual amount the recipient received on the destination chain. This may differ from quotedBuyAmount due to slippage.

Settled amounts are supported on all chain types (EVM, Solana, Tron, HyperCore).

For refunds, recovery.settledAmount similarly shows the actual refunded amount.

Failure Context

When status is bridge_failed, the failure object explains what happened and how recovery works.

Continue polling while an automatic refund or a destination retry submitted by 0x is in progress. Retry transaction hashes can appear in transactions before the funds arrive. Only bridge_filled confirms delivery.

See Handling Failures and Recovery for details.