What a resolver is
A resolver is a permissioned liquidity provider that competes to quote user swaps on Utexo and, when assigned an intent, executes that swap end to end across the source and destination chains. Resolvers hold and route their own liquidity, sign settlement transactions, and pay gas. For the user-facing side of quotes, intents, and swaps, see the Swap API Reference. This section covers only what resolver operators must implement.Intents and quotes
An intent is an off-chain user instruction containing:- Source and destination networks and tokens
- Amount
- Slippage tolerance
- Deadline
- Time-limited by an expiry expressed in milliseconds
- Bounded by a destination amount minimum and maximum
- Associated with affiliate fee information supplied by Utexo
- Optionally routed through an intermediate token (typically USDC) for cross-chain paths
Utexo does not publish a canonical quote response schema. Return the destination bounds, expiry, and affiliate/intermediate routing data your resolver has agreed with Utexo, and validate against the current integration contract before going live.
Lifecycles
Actual signing and settlement differ by chain. See EVM and Tron Settlement, Solana Settlement, and Bitcoin Settlement for chain-specific details.Standard escrowed swap
1
IntentAssigned
Utexo assigns the intent to your resolver over a signed webhook.
2
Deposit
Broadcast the user-authorized deposit into the chain-specific escrow.
3
Report deposit
Call
POST /v1/intents/{id}/deposit with the deposit transaction hash.4
DepositConfirmed
Utexo confirms the deposit and delivers the fulfillment request over webhook.
5
Fulfill
Pay the destination amount to the user’s destination address before the fulfillment deadline.
6
Report fulfillment
Call
POST /v1/intents/{id}/fulfill with the destination transaction hash.7
WithdrawReady
Utexo reveals the secret. Withdraw the source-chain escrow.
8
Report withdrawal
Report the withdrawal transaction hash through the withdrawal reporting endpoint.
Optimized single-chain swap
A single atomic step. Utexo signals completion withSwapConfirmed; no further resolver action is required.
Refund
RefundConfirmed is terminal. The user has been refunded and your resolver must stop any in-flight fulfillment attempts for that intent.
Resolver responsibilities
- Maintain sufficient liquidity on every supported destination chain and token.
- Return executable quotes within your agreed latency and pricing bounds.
- Verify signed webhooks before acting on them.
- Meet the assigned deposit and fulfillment deadlines.
- Report transaction hashes in order: deposit, fulfill, then withdraw for standard swaps.
- Make webhook and API processing idempotent by intent ID.
- Never act on an expired or refunded intent.