Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.li.fi/llms.txt

Use this file to discover all available pages before exploring further.

After submitting an order, you can track its progress through the order server API or by monitoring on-chain events directly.

Order Server Status

Call GET /orders/status with either the onChainOrderId or the catalystOrderId returned when you submitted the order.
curl -X GET 'https://order.li.fi/orders/status?catalystOrderId=intent_qVo7_1TkJ7VekL99O7SGS9cRHv0si6'

Query Parameters

ParameterDescription
onChainOrderIdThe on-chain order ID emitted in contract events
catalystOrderIdThe order server ID returned from POST /orders/submit (e.g. intent_qVo7_...)
At least one parameter is required.

Response

The response includes the full order, any associated quote, and a meta object with status information.
{
  order: StandardOrder,
  quote: QuoteInfo | null,
  sponsorSignature: string | null,
  allocatorSignature: string | null,
  inputSettler: string,
  meta: {
    submitTime: number,
    orderStatus: "Submitted" | "Open" | "Signed" | "Delivered" | "Settled",
    destinationAddress: string,
    orderIdentifier: string,
    onChainOrderId: string,
    signedAt: string | null,
    deliveredAt: string | null,
    settledAt: string | null,
    expiredAt: string | null,
    orderInitiatedTxHash: string | null,
    orderDeliveredTxHash: string | null,
    orderVerifiedTxHash: string | null,
    orderSettledTxHash: string | null,
    solverAddress: string | null
  }
}

Status Lifecycle

StatusMeaning
SubmittedOrder received by the order server (transitional)
OpenOrder registered on-chain (transitional)
SignedOrder signed and available for solver pickup
DeliveredSolver has delivered assets on the destination chain
SettledProof verified, locked funds released to solver. Order complete.
Most integrations should treat Signed, Delivered, and Settled as the primary execution states. Submitted and Open may not be visible in every path.

Polling Example

const pollUntilDone = async (orderId: string) => {
  let data;
  do {
    data = await getOrderStatus(orderId);
    const { orderStatus } = data.meta;
    console.log(`Status: ${orderStatus}`);

    if (orderStatus === 'Settled') {
      console.log('Complete. Delivery tx:', data.meta.orderDeliveredTxHash);
      return data;
    }

    if (data.meta.expiredAt) {
      console.log('Order expired.');
      return data;
    }

    await new Promise(r => setTimeout(r, 3000));
  } while (true);
};

Listing Orders

Use GET /orders to query multiple orders with filters.
curl -X GET 'https://order.li.fi/orders?user=0xYOUR_ADDRESS&status=Delivered&limit=10'
ParameterDescription
userFilter by initiator address
statusFilter by order status
nonceFilter by nonce
exclusiveForFilter by solver address
onChainOrderIdFilter by on-chain order ID
catalystOrderIdFilter by order server ID
limitMax results (1-50, default 50)
offsetResults to skip (0-1000, default 0)

On-Chain Events

You can also track orders directly from contract events. The orderId is emitted as topic1 on all relevant events.

Order Opened

event Open(bytes32 indexed orderId, StandardOrder order);

Output Filled (by solver)

event OutputFilled(
  bytes32 indexed orderId,
  bytes32 solver,
  uint32 timestamp,
  MandateOutput output,
  uint256 finalAmount
);

Order Finalized (settlement complete)

event Finalised(
  bytes32 indexed orderId,
  bytes32 solver,
  bytes32 destination
);

Order Refunded

event Refunded(bytes32 indexed orderId);
The on-chain orderId is deterministic and computed as:
function orderIdentifier(StandardOrder calldata order) internal view returns (bytes32) {
  return keccak256(
    abi.encodePacked(
      block.chainid,
      address(this),
      order.user,
      order.nonce,
      order.expires,
      order.fillDeadline,
      order.inputOracle,
      keccak256(abi.encodePacked(order.inputs)),
      abi.encode(order.outputs)
    )
  );
}

Next Steps

API Overview

Full endpoint reference and base URLs

Create and Submit Orders

Order construction and submission

Settlement

How input and output settlement works

System Overview

Full architecture of the Intent/Solver Marketplace