Payout Wallet Rotation
Rotate swap routing paths across consecutive orders so that repeated swaps from the same user don’t always flow through the same provider wallet.Overview
When a user makes multiple swaps, Houdini normally selects the best-priced route each time. In practice, this often means the same provider handles consecutive swaps — creating a pattern that reduces privacy. Payout wallet rotation solves this by deprioritizing recently used provider paths and selecting the next-best route instead, while keeping the price within an acceptable range.Rotation applies to CEX swaps only (standard and private). DEX swaps execute on-chain through smart contracts and are not affected by provider path selection.
How It Works
1
Quote request with rotation enabled
You request quotes with
rotatePayoutWallets=true. Houdini fetches quotes from all available providers as usual.2
Recent path lookup
The system checks your recent orders (last N orders within 24 hours) to find which provider paths were already used.
3
Path deprioritization
Quotes matching recently used paths are moved down in the ranking. Quotes using fresh (not recently used) paths are promoted to the top.
4
Price protection
If the best non-recently-used quote deviates more than the allowed threshold from the original best quote, rotation is skipped and the best-priced route is used instead. You never pay significantly more for rotation.
Parameters
boolean
default:"false"
Enable payout wallet rotation. When
true, the system deprioritizes recently used provider paths in the quote ranking.number
default:"5"
Maximum allowed price deviation percentage. If the best rotated quote is more than this percentage worse than the original best quote, rotation is skipped. Range: 0–100.
number
default:"10"
Number of recent orders to check for previously used paths. Valid range: 2–99.
Lookup Priority
The system determines “recently used paths” based on the following priority:
For partner integrations, your partner ID is automatically used (priority 2). You don’t need to pass any additional identifiers.
Price Protection
Rotation never forces a significantly worse price. ThedeviationThreshold parameter controls the maximum acceptable price difference:
- Deviation ≤ threshold: Rotated quote is used (different provider path)
- Deviation > threshold: Rotation is skipped, best-priced quote is returned
- All quotes recently used: Original ranking is preserved (no rotation possible)
deviationThreshold=5, if the best quote returns 10 ETH and the best non-recently-used quote returns 9.6 ETH (4% worse), the rotated quote is used. If it returns 9.4 ETH (6% worse), rotation is skipped.
API v2 Usage
In v2, rotation is configured at quote time. The rotation parameters are query params onGET /quotes, and the selected quote carries the rotation context through to the exchange.
Step 1: Get Quotes with Rotation
Step 2: Create Exchange
No additional parameters needed — the quote already has rotation applied.API v1 Usage
In v1, rotation can be configured on both the quote and exchange endpoints.Option A: Rotation at Quote Time
Pass rotation parameters as query params onGET /quote:
Option B: Rotation at Exchange Time
Pass afilters object in the POST /exchange request body:
v1 vs v2 Behavior
Best Practices
Use rotation for privacy-sensitive flows
Use rotation for privacy-sensitive flows
Enable rotation for private/anonymous swaps where users make repeated swaps. For one-off standard swaps, rotation adds little value.
Keep the default deviation threshold
Keep the default deviation threshold
The default 5% threshold balances privacy with price quality. Setting it too high (e.g., 20%) may route through significantly worse-priced providers. Setting it too low (e.g., 1%) may prevent rotation entirely when quotes are tightly clustered.
Adjust lookback based on volume
Adjust lookback based on volume
If your integration processes many swaps per hour, increase
rotationLookback to 20–30 to ensure broader path diversity. For low-volume integrations, the default of 10 is sufficient.Combine with the swaps filter
Combine with the swaps filter
Use the
swaps parameter (v2) or onlySwaps filter (v1) alongside rotation to restrict which providers are considered. Rotation will only rotate within the allowed provider set.Next Steps
Private Swap Integration
Full guide for integrating private multi-hop swaps
Routing Types
Understand the three routing strategies