Skip to main content
Partial fills let you execute only a portion of a quoted order size. This is useful when combining RFQ liquidity with other sources (e.g. AMM fallback), or when market conditions change and you only need part of the originally requested size.
Partial fills are only supported for self-execution (gasless=false). Gasless quotes cannot be partially filled.

How It Works

The quote response includes a partialFillOffset field that tells you where in the transaction calldata to modify the fill amount. By default, quotes are filled fully - to partially fill, you replace the taker amount at that offset with your desired amount. Partial fill amounts must be less than the original taker_amount in the quote, specified in base units (same as the original quote), and encoded as a 64-character hex string (32 bytes, zero-padded).

Understanding the Calldata Structure

The partialFillOffset is a word index (0-indexed) counting 32-byte segments in the encoded calldata. Each word is 32 bytes = 64 hex characters.
The position in the hex string is:
where 10 accounts for the 0x prefix (2 chars) and the 4-byte function selector (8 chars).

Step by Step

1. Request a Quote

Key fields in the response:

2. Calculate Your Partial Fill Amount

Decide how much of the original order you want to fill. The amount must be in base units and less than the original taker_amount:

3. Modify the Calldata

Replace the fill amount in the transaction calldata at the position indicated by partialFillOffset:

4. Sign and Broadcast

From here, the flow is the same as the standard self-execution quickstart - use the modified calldata in the transaction, sign, and submit:

Full Example