Skip to main content
Price Stabilization gives you two mechanisms for stablecoin swaps: fee sponsorship, where you cover transaction fees so the user receives the full market-rate output, or fixed rates, where you lock in a specific exchange rate (e.g. 1:1) and absorb the volatility yourself. Stablecoins don’t actually trade at 1:1. When users swap between stablecoins cross-chain, the output fluctuates based on market rates, swap impact, and fees. For a $100 USDC-to-USDT swap, even small deviations from peg mean the user might receive 99.95 or 100.05 USDT instead of a clean 100. With fixed rates, you sometimes sponsor and sometimes earn the difference, with the expectation that it nets out over time. For a cross-chain swap between major stablecoins, the cost is roughly: $0.02 + 1bps. For $100 USDC input, the user would get $99.97 worth of USDT This is on top of the market rate for the pair: If 1 USDT = 1.0000 USDC, that’s 99.97 USDT
If 1 USDT = 0.9995 USDC, that’s 100.02 USDT
If 1 USDT = 1.0005 USDC, that’s 99.92 USDT

Price Stabilization Options

Relay supports multiple options for stabilizing prices for better UX:

Fee Sponsorship

With sponsorship, you cover the fees. So for $100 USDC in, the user gets $100 USDT out, and you cover the $0.03 in fees. Importantly, this doesn’t mean the user gets 1:1 in our USDC:USDT example: If 1 USDT = 1.0000 USDC, that’s 100 USDT out
If 1 USDT = 0.9995 USDC, that’s 100.05 USDT out
If 1 USDT = 1.0005 USDC, that’s 99.95 USDT out
Learn more about how fee sponsorship works.

Fixed Rates

If your goal is to give the user 1:1, you can use fixed rates. In this case, the user would always get 100 USDT, and you would sponsor a dynamic amount. If USDT is worth less than USDC, you actually would earn the difference as fees. The figures below assume you are sponsoring fees as well ("subsidizeFees": true, as in the request example at the end of this section); the case without fee sponsorship is covered further down: If 1 USDT = 1.0000 USDC, user gets 100 USDT, you sponsor $0.03
If 1 USDT = 0.9995 USDC, user gets 100 USDT, you earn $0.02
If 1 USDT = 1.0005 USDC, user gets 100 USDT, you sponsor $0.08
Effectively, you absorb the volatility, sometimes sponsoring, and sometimes earning fees, with the idea that it nets out over a long time period. Of course, during periods you are sponsoring, you need to be careful that it’s not being arbitraged.
During periods where you are sponsoring the spread, monitor for arbitrage. A fixed rate that deviates from the market can be drained by arbitrageurs.
If you want, you can set rates other than 1:1. E.g. if you set it to 1:1.0005, then you are effectively setting the price to 5bps, and only sponsoring when the market rate + fees is above that. The rate is expressed as “input:output”. If 1 USDT = 1.0000 USDC, user gets 99.95 USDT, you earn $0.02
If 1 USDT = 0.9995 USDC, user gets 99.95 USDT, you earn $0.07
If 1 USDT = 1.0005 USDC, user gets 99.95 USDT, you sponsor $0.03
Fixed rates without fee sponsorship. fixedRate and subsidizeFees are independent settings — you can pass a fixed rate with "subsidizeFees": false. A fixed rate always pins the pre-fee conversion; subsidizeFees decides who pays the Relay fee on top of it. So with "fixedRate": "1:1" and "subsidizeFees": false, the pre-fee output is pinned at 100 USDT and the ~$0.03 fee comes out of it. The user receives 99.97 USDT at any market rate, and your position is the spread alone: If 1 USDT = 1.0000 USDC, user gets 99.97 USDT, you neither sponsor nor earn
If 1 USDT = 0.9995 USDC, user gets 99.97 USDT, you earn $0.05
If 1 USDT = 1.0005 USDC, user gets 99.97 USDT, you sponsor $0.05
Turning off subsidizeFees moves the Relay fee onto the user; it does not turn off fixed-rate settlement. Fixed rates work for stablecoins listed as solver currencies on the requested chain, such as USDC, USDC.e, USDT, USDe, USDH, mUSD, and DAI. Solvers supply this liquidity; the platform exposes supported currencies through each chain’s solverCurrencies array in the chains API. Check that array for current support rather than assuming the same inventory across chains.
Tracking what you sponsored or earned. Fixed-rate quotes return a fixedRateFee object on details, alongside isFixedRate:
A positive value means the fixed rate was worse for the user than the market rate, so you earn the difference. A negative value means it was better for the user, so you sponsor the difference.
fixedRateFee is a quote-time estimate. The amount you are actually credited or debited is recalculated after the fill, from the executed amounts and the market rate at the time of the request, and settles against your sponsoring wallet’s balance. The settled amount can differ from the quoted estimate in both size and direction, so do not treat the quote as a commitment.

Why This Works for Stablecoins

Stablecoin pairs are uniquely suited to price stabilization because the swap impact component of Relay’s fees is typically sub 1bps between major stablecoins. That leaves the flat execution fee (~$0.02) and the Relay bps fee as the dominant costs — both small, predictable amounts that are cheap to sponsor or absorb into a fixed rate. For a full breakdown of Relay’s fee components and pricing tiers, see Cost & Fee Structure.