Skip to main content
To finalize an intent and claim the locked input funds, the solver must deliver all outputs described in the order. This page covers EVM, Tron, and Bitcoin filling.

EVM Orders

Submit the intent outputs to the Output Settler specified in output.settler by calling fillOrderOutputs.
The transaction reverts if:
  1. Approvals are not set
  2. Caller balances are not sufficient
  3. fillDeadline has expired
  4. The first output in outputs has already been filled
  5. Any external call in outputs reverts
  6. The order context cannot be decoded
  7. The destination chain is wrong
  8. The Output Settler contract is wrong
An orderId mismatch will not cause a revert.
After all outputs are delivered, proceed to settlement to finalize the order and receive the locked inputs.

Tron Orders

Filling a Tron output works like an EVM fill: call fillOrderOutputs on the Tron OutputSettler. Submit the transaction via TronWeb, decoding addresses with the 20-byte rule (base58check, drop the 0x41 version byte). See Tron vs EVM for address conversion and submission details.

Bitcoin Orders

BTC support on LI.FI Intents is currently not live and still in development. If you are interested in filling BTC orders, reach out and we will assist you with onboarding.
To determine whether an order involves a Bitcoin transaction, check orderDto.order.outputs[].token.
  • The first 30 bytes should be 0x000000000000000000000000BC0000000000000000000000000000000000 (the 13th byte is 0xBC)
  • The 31st byte indicates the number of confirmations required before on-chain verification (0x00 and 0x01 both mean 1 confirmation, 0x02 means 2, etc.)
  • The 32nd byte is an address version identifier decoded as uint8

Address Versions

The outputs[].recipient field contains the destination hash or witness, not a human-readable address. Use the version byte and the recipient hash to reconstruct the Bitcoin address.

Constructing the Bitcoin Transaction

Create a transaction with at least one output that exactly matches the order’s output description. The transaction can have any number of inputs and additional outputs, allowing for batch filling and consolidation. If calldata is set on the output, add an OP_RETURN output immediately after the filling output:

Next Steps

Settling Orders

Finalize orders and claim locked input funds

Collecting Orders

WebSocket and REST order collection

Auctions

Limit, Dutch, and exclusive auction types

Reputation

Solver reputation system and registration