DEX essentials

Fill-or-kill vs partially fillable orders

Compare full-size fulfillment with partial fills, calculate proportional order limits and understand what remains open after a fill.

A partially fillable order can execute less than its remaining size. A full-fill requirement rejects a fulfillment that cannot satisfy the required amount. These policies constrain quantity independently of the order's price.

Terminology varies across protocols. In 0x's versioned contract reference, a fill-or-kill function requires the requested fill amount or reverts. CoW's market-order documentation uses fill-or-kill to describe orders that solvers must fulfill in their entirety. The exact unit of completeness matters.

How a partial fill preserves terms

Take a hypothetical order to sell 100 A for at least 250 B, with proportional partial fills allowed. A 40 A fill must respect the equivalent minimum rate, so it needs at least 100 B before considering implementation-specific rounding and fee treatment. The remaining order size is 60 A.

The original limit is not a demand to receive the full 250 B after selling only 40 A. Nor does partial fulfillment authorize a weaker exchange rate. Size scales while the price constraint remains meaningful.

Available matchPartial fills permittedFull 100 A required
40 A on acceptable termsMay fill 40 AInsufficient
100 A on acceptable termsMay fill the full orderCan satisfy quantity
100 A below the limitPrice condition failsPrice condition fails

The remaining balance is a real obligation

If the order stays valid after a partial fill, the rest can be filled later under its rules. That means a partial completion notification is not equivalent to the order being closed. Expiry, cancellation and prior fills all affect remaining eligibility.

Smallest-unit rounding can matter when the fill is tiny. Protocol arithmetic must decide how to round proportional amounts without violating required limits. A front end's rounded display is not the authoritative integer calculation.

Why the choice exists

Allowing partial fills expands the set of usable matches but can produce several settlement events. Requiring a complete amount simplifies the desired outcome but can leave an otherwise attractive partial match unused. Neither policy guarantees a better price or faster completion in every market.

Choose the interpretation that matches the actual task. Obtaining a precise quantity for one downstream action is a different requirement from gradually exchanging an inventory. Confirm how the particular protocol names and enforces that requirement before relying on its label.

Sources & verification (3)

Source-check date is recorded in the article details. URLs are provided for manual verification. Use Copy to keep this page open.

  1. Basic Functionality — 0x Protocol 4.1 documentation

    Fill, fill-or-kill, cancel and status checks in versioned 0x Exchange Proxy.

    https://docs.0xprotocol.org/en/latest/basics/functions.html
  2. Market orders

    Market intent orders target prompt execution and can have bound conditions.

    https://docs.cow.fi/cow-protocol/concepts/order-types/market-orders
  3. GPv2Settlement

    Settlement checks, partial order constraints and clearing-price mechanics.

    https://docs.cow.fi/cow-protocol/reference/contracts/core/settlement

Continue reading

Order expiry vs cancellation: different end states Why reaching a limit price may not fill a DEX order Exact input vs exact output: choosing the right constraint