Overview
Application developers typically interact with Relay through the Relay API, which abstracts the settlement protocol entirely. However, understanding the protocol flow can help when debugging transactions or building advanced integrations. This page explains how the protocol surfaces in API responses and how to trace an order through the settlement flow.Protocol Deposits via the API
When requesting a quote using the Relay API’s/quote/v2 endpoint, the response includes a protocol field when the order will be settled through the Relay Settlement protocol:
orderId— A unique identifier for this order, used to track it through the settlement flowdepositChainId— The chain where the user’s deposit will gopaymentDetails— The Depository address, token, and amount for the deposit
The
protocol field only appears when the order uses the settlement protocol. Some routes may use alternative execution paths.Tracing an Order
Once an order is submitted, you can trace it through the settlement flow:1. Deposit Transaction
The user’s deposit transaction is a standard transfer to the Depository contract on the origin chain. You can find this on the origin chain’s block explorer.2. Settlement on Relay Chain
After the solver fills the order, the Oracle attests the deposit and fill on the Relay Chain. These attestation transactions are visible on the Relay Chain Explorer. For application debugging, treat theorderId as the stable correlation key across the whole lifecycle:
- Use
paymentDetails.recipientanddepositChainIdto find the origin-chain deposit transaction - Use your destination-chain execution transaction to confirm the solver fill
- Use the Relay Chain attestation submitted after the fill to confirm settlement
orderId alone. The settlement SDK derives it from:
chainIdas a stringdepositorencoded for its VM typetimestampdepositId
orderId, use it as a correlation identifier rather than assuming it can be converted directly into the Hub order address.
Example: deriving a Hub order address
For the Relay request0xd5695a549c7e71a3258f9c07a659231d4852513d7da6e30f0c93079cf4569753, the origin deposit is the Arbitrum transaction 0x693af85007932519865beed409b039ea85a8fe499fa97c537f3bbb264826554c.
The deposit parameters used by the Oracle are:
chainId = "42161"depositor = "0x710227b881611b30ee794aa63a7da7086888f3c8"timestamp = 1773954184depositId = 0xcc7ec6bbf43d40717e5556fa50b232d866ade6c9a3c654434b1124322fbcf414
depositId above comes from the trailing 32 bytes of the ERC20 transfer calldata into the Depository. For a transaction with a single standard ERC20 transfer into the Depository, this is the same value the Oracle indexes as the deposit id.
Using the settlement SDK formula yields the Hub order address:
3. Fill Transaction
The solver’s fill transaction is on the destination chain. This is the transaction that delivers the user’s requested action (transfer, swap, etc.).When to Use Direct Protocol Integration
Most applications should use the Relay API. Consider direct protocol integration only if you need to:- Build custom deposit flows outside the standard API
- Monitor settlement status at the protocol level
- Implement custom order management