Filler FAQ
Resolve common UniswapX filler and quoter issues, including RFQ behavior and order execution errors.
Common operational questions for UniswapX fillers and quoters.
Getting Started
Which IPs do I need to whitelist?
IPs to whitelist:
Beta Test Environment
- Quote requests:Â
3.135.148.114
Production Environment
- Quote requests:Â
3.138.88.28
Why don't I get quote requests for Unichain/Base/Arbitrum?
On Ethereum, RFQ is used to parameterize the order, which often results in exclusive orders. On L2s, RFQ is not used and the auction is parameterized based on the AMM price. As a result, notifications are only sent for orders that are ready to be executed via the orders API.
What's the expected RPS for quoting on Ethereum?
1Â RPS.
Which tokens are supported in RFQ?
All tokens are supported, except those on the unsupported token list.
Technical Issues
I'm getting 404, no quotes available?
There are several reasons why you might receive this error:
-
Price Impact: UniswapX has filters that route trades to the AMM when direct AMM execution would be superior. If the price impact is too high or the benefit of routing through UniswapX isn't significant enough, no quote will be returned for this pair.
-
Order Size: Very small orders may not be economical to fill through UniswapX due to gas costs. Similarly, extremely large orders might exceed available liquidity from quoters.
-
Response Latency: If your filler responds but takes longer than 500ms, your quote will be rejected. Ensure your infrastructure can consistently respond within this latency requirement. The quote server is located in AWS
US-EAST-2if you wish to co-locate to reduce latency.
The transaction is reverting for a certain reason (e.g. InvalidOrderFields). What does this mean?
Check the KNOWN_ERRORS in the SDK to see what the likely causes are.
Why did my server stop receiving quote requests?
Your server may be temporarily blocked due to the fade-rate monitor. If you win an RFQ but don't fill the order, this counts as a "fade." After too many fades, RFQ requests are temporarily paused.
You'll know you're blocked when quote requests include a blockUntilTimestamp field indicating when you'll start receiving requests again.
Why does my fill transaction fail the Permit2 nonce check?
A Permit2 nonce check failure typically means:
- The order has already been filled by another filler
- The user cancelled the order
- The signature has expired
Before attempting to fill, verify the order is still valid. See: "How do I know if an order is still fillable?"
Order Mechanics
How do I know if an order is still fillable?
The simulation using UniswapXOrderQuoter will tell you whether the order is still fillable.
How is orderHash generated? Is it guaranteed to be unique?
orderHash values are generated from the hash of the witness information from the order and are thus guaranteed to be cryptographically unique.
Why do I receive inverse requests for every quote (e.g. USDC<>ETH and ETH<>USDC)?
Two quote requests are performed per actual quote to obfuscate the swapper's actual request and reduce the chances of front-running.
Exclusivity
How long is the exclusivity period after a winning quote? Is it fixed or dynamic?
The exclusivity period on mainnet is currently 24 seconds (2 blocks) and is set by the cosigner when it cosigns the order. It is not a fixed protocol constant and could change in the future.
Fade Mechanics
What counts as a fade?
A fade occurs when a quoter wins exclusivity on an order through the RFQ process but does not fill it before the exclusivity window expires. Fading triggers the circuit breaker, which temporarily disables the quoter from receiving new RFQÂ requests.
Does it count as a fade if another filler overrides my exclusivity?
No. On mainnet, orders may use soft exclusivity (exclusivityOverrideBps > 0), which allows non-exclusive fillers to fill during the exclusivity window by paying an override penalty, which means extra tokens to the swapper.
This is not considered a fade. The system explicitly allows it to balance honoring exclusivity with getting the swapper the best possible price. A fade is only counted when the exclusivity window expires without any filler (including the exclusive filler) settling the order.
What happens if the order is filled after the exclusivity window by a different filler?
Once the exclusivity window ends (after decayStartTime), all fillers compete equally in the Dutch auction. If the original filler, or another filler, fills the order during the decay period, the filler who faded the order is still penalized.
How does the cooldown work after a fade?
After a fade, the circuit breaker disables the quoter for a cooldown period that uses exponential backoff:
cooldown = 15 min × 1.5^(fades - 1) × 2^(consecutiveOffenses)- First fade, first offense: 15 minutes
- 2 fades in one period, first offense: ~22Â minutes
- 1 fade, second consecutive offense: 30Â minutes
- 2 fades, second consecutive offense: ~45Â minutes
The system periodically checks for new fades. If no new fades are detected in a check, the consecutive offense count resets to 0. The full policy is available in the source code.
Do simulation failures count as fades?
No. Fades are only counted when a quoter wins exclusivity but fails to fill the order onchain before the exclusivity window expires. Offchain simulation failures (e.g. quote validation or gas estimation) do not trigger the circuit breaker.