Skip to main content
lifiIntents.order opens a LI.FI Intents order from the flow’s chain: a solver fills it by delivering the resourceOut token on the destination chain. It consumes a resource on amountIn and produces amountOut, a resource of the resourceOut token that arrives on the destination chain after the transaction. With exactAmountOut, the order delivers exactly that amount and spends only the input the solver asks for. For a bridge through the LI.FI aggregator, use lifi.bridge. For a swap on the same chain, use lifi.swap.

Ports

amountOut is a future output: it takes no guards and can’t feed another op in the same flow, except a continuation.settle node. Its delivery.trackingId is the order id. unspentIn follows the lifi.swap rules: leave it unbound and sweepTo returns it.

Config

The live schema above shows every field and its range. The table adds what each one does.

Fund a cross-chain flow

amountOut can fund a continuation.settle node on the destination chain. Bind the settle node’s input to order.amountOut and omit the order’s destination; the solver then delivers into the settle node’s escrow. With exactAmountOut: N, the escrow’s minimum funding is exactly N, with no margin; see Funding rules. The Pay cross-chain recipe uses this to pay exact amounts on Base from ETH on Arbitrum.

Example

Send 1,000 USDC from Arbitrum to a recipient on Base through an Intents order:
For an exact-output order that funds a cross-chain flow, see the Pay cross-chain recipe.

Track and refund the order

The order id is outputs['order.amountOut'].delivery.trackingId. To follow the order, see Track status in the LI.FI Intents docs. A cross-chain order expires 48 hours after it opens. If no solver fills it, recover the input with lifiIntents.refund after the order expires; the refund pays the order’s user, the signer. The refund is not automatic: someone has to call it. For an early refund, run lifiIntents.attestNonFill on the output chain after the fill deadline, then lifiIntents.refundOnNonFill on the input chain; a resolution_error from that second step means the proof is not ready yet, so retry later.

Errors