Skip to main content
Sometimes the right outcome is most of the trade rather than none of it. With partial fills enabled, an order settles for whatever size is actually available at execution - the pattern of choice when firm liquidity is one ingredient in a larger route, or when a shrinking market makes a partial win better than a full miss.
Partial fills are opt-in per intent: set intent.partialFill: true on the quote request. Orders without the flag are all-or-nothing - they settle in full or refund in full.

The Mechanics

Partial-fill behavior is declared, not engineered: the flag rides on your intent, LPs quote knowing partial settlement is acceptable, and the escrow enforces proportionality - whatever fraction of your input is consumed, you receive at least the matching fraction of the quoted output. The unconsumed remainder of your input is released back to you. There is no calldata surgery on your side. The signed order already encodes the partial-fill terms, and the settlement contract derives the fill arithmetic - your integration just reads the outcome.

What a Partial Outcome Looks Like

A partially filled order reports both sides of the story:

In Practice

1. Quote with the Flag

Key response behavior:

2. Preflight, Sign, Submit

Nothing changes in your execution code - the partial-fill terms are already inside the payload you sign:

3. Read the Settled Amounts

Check the final order record for what actually filled versus what came back:

End to End