Transaction Models
The tracked transaction and its steps, including the chained-journey fields that describe a two-leg order as one user intent.
The shapes returned by the /transactions endpoints. For the other schemas, see Models.
TrackedTransaction
Key fields (a single-transaction GET additionally returns the steps array):
id
string
Deployment-scoped uid (for example "rwa:0x52b1…"), unique across redeployments. This is not orderId — see below.
orderId
string
The raw on-chain order id. This is what the escrow's cancel / claimCancellation / getOrder calls take; passing id there reverts. Returned by the API but not yet declared in the published OpenAPI spec, so a generated client may not surface it.
txHash
string
Source transaction hash (the lookup key).
protocol
string[]
GMP protocol(s) involved.
sourceChainId / destChainId
string
Source / destination chain IDs.
wallet
string
Order owner wallet.
status
TrackingStatus
Lifecycle status of this order. For a chained order see journeyStatus.
claimable
boolean
True iff claimCancellation() on the execution-chain escrow would succeed right now (status is awaiting_claim or expired).
fromTokenAddress / fromTokenSymbol / fromTokenDecimals
—
Source token metadata.
fromTokenAmount / fromTokenRawAmount
string
Human-readable / raw source amount.
toTokenAddress / toTokenSymbol / toTokenDecimals
—
Destination token metadata. On a chained leg 1 this is the internal connector, not what the user bought — see the finalToToken* fields.
toTokenAmount / toTokenRawAmount
string
Human-readable / raw destination amount.
completedSteps / totalSteps
integer
Step progress.
currentStep
string
Current step name.
submittedAt / arrivedAt / filledAt / deliveredAt / failedAt
string or null
Lifecycle timestamps.
failedReason / failedStep
string
Failure detail.
steps
TransactionStep[]
Step entries (single-transaction GET only).
sourceExplorerLink / destinationExplorerLink
string
Explorer links.
destinationTx
string
Destination transaction hash.
gmpStatus / gmpMessageId
string
GMP status / message ID.
orderNonce
string
Per-source-chain order nonce (decimal string); part of the identity triple that derives orderId.
destinationReceiver
string
Receiver of the ask token on the destination chain.
orderDeadline
string
Order deadline (unix seconds, decimal string); "0" means none.
executionChainId
string
Chain where the escrow lives (where cancel / claimCancellation are called).
executionEscrowAddress
string
Escrow proxy address on the execution chain.
createdAt / updatedAt
string
RFC 3339 timestamps.
Chained-journey fields
A chained (two-leg) order is the shape used when the asset being bought exists only on the chained destination chain — an RWA vault share on Plume, for example. It is one user intent settled as two orders, and these fields describe the journey rather than the individual leg.
isDirect
boolean
True for a direct-bridged transfer (OrderDirectBridged): a same-token order bridged straight to the destination at submit time — no solver fill, no execution-chain round-trip, and not cancellable.
isChained
boolean
True for either leg of a chained order. On leg 1 the toToken* fields describe the internal connector, not the asset the user bought.
chainedParentOrderId
string
Order ID of leg 1, present only on the child. Rows carrying it are excluded from GET /transactions unless includeChainedLegs=true.
chainedChildOrderId
string
Order ID of leg 2, once continueChain has created it. Absent during the park window between leg 1's fill and leg 2's creation.
journeyStatus
TrackingStatus
Status of the user's intent, which for a chained order is not the status of any one leg: leg 1 reaching delivered means the connector was parked on the destination escrow, not that the user received anything. Reads continuing for that window. Branch completion checks on this field, falling back to status when it is absent.
journeyStartedAt
string
When leg 1 was submitted — the start of the whole journey.
journeyCompletedAt
string or null
When the final leg delivered. Null until the journey actually completes. It means the user got their asset at this time, not that movement stopped.
legs[]
TransactionLeg[]
The whole journey, index 0 being this order. Present only on a chained parent and omitted entirely for a single-leg order, so the single-leg response shape is unchanged.
finalToTokenAddress
string
The destination the user actually asked for, as opposed to the internal connector in toToken*. Correct from the moment of submit, including before leg 2 exists — leg 2's ask is ABI-encoded into Order.nextOrders on-chain at submit.
finalToTokenSymbol / finalToTokenDecimals
—
Metadata for the asset the user actually bought.
finalToTokenAmount / finalToTokenRawAmount
string
Human-readable / on-chain raw amount of that asset.
finalDestChainId
string
The chain the user's asset actually lands on. On a chained order this is not destChainId of leg 1.
deliveryEvidence
string
Qualifies a delivered status; absent for any order not claiming delivery. observed means the delivery was seen — a solver-confirmed outbound row, a same-chain direct transfer, or a fill that was itself the delivery. presumed means it was inferred.
sourceEventMissing
boolean
The source-chain submit event was never indexed, so the row was reconstructed. Returned by the API but not yet declared in the published OpenAPI spec.
A chained order spans three chains, and the execution chain is neither end. Leg 1 is a same-symbol cross-chain move of the bid asset (a USDC to USDC hop is correct, not a bug) onto the execution chain; leg 2 swaps that connector into the ask and delivers it. A destination that looks wrong in a UI is usually the invisible middle hop — read
finalDestChainIdandfinalToToken*, notdestChainIdandtoToken*.
TransactionLeg
One leg of a chained journey, as returned in TrackedTransaction.legs[].
index
integer
Position in the journey, 0-based.
role
string
What the leg is for, so a consumer can label it without re-deriving intent from the token pair. source-swap turns the user's bid into the internal connector and parks it on the destination chain — its ask side is not what the user bought, and its final step is a bridge-and-park rather than a delivery. delivery turns the connector into the asset the user asked for and delivers it.
orderId
string
On-chain order id for this leg.
txHash
string
Submit transaction hash for this leg.
sourceChainId / destChainId
string
Chain IDs for this leg, serialized as strings.
fromTokenAddress / fromTokenSymbol / fromTokenAmount
—
What this leg sold.
toTokenAddress / toTokenSymbol / toTokenAmount
—
What this leg bought.
status
TrackingStatus
Status of this leg alone.
completedSteps / totalSteps
integer
Step progress for this leg.
submittedAt / arrivedAt / filledAt / deliveredAt
string or null
Lifecycle timestamps for this leg.
steps
TransactionStep[]
Step entries for this leg.
TransactionStep
stepNumber
integer
Step index.
stepName
string
One of submitted, arrived, filled, delivered.
stepStatus
string
One of completed, pending, failed, recovered.
eventType
string
Underlying event type.
chainName / chainId
string
Chain this step occurred on.
txHash
string
Step transaction hash.
explorerLink / protocolExplorerLink
string
Explorer links.
blockNumber
integer
Block number.
blockTimestamp
string or null
Block timestamp.
gasUsed
integer
Gas units consumed (omitted when unknown).
gasPriceWei
string
Effective gas price in wei (omitted when unknown).
TransactionStats
total
integer
Total matching transactions.
byStatus
object
Count keyed by TrackingStatus.
byProtocol
object
Count keyed by protocol.
avgDeliveryMs
number or null
Average delivery time in milliseconds.
bySourceChain / byDestChain
object
Counts keyed by chain ID.

