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 outIf 1 USDT = 0.9995 USDC, that’s 100.05 USDT out
If 1 USDT = 1.0005 USDC, that’s 99.95 USDT out
Fixed Rates
Before you request a fixed-rate quote, complete these three setup steps:- Enable fixed rates for each API key — Contact Relay Support through the support widget in the Relay Dashboard to request access for the API key you will use. Include your app name and the key’s label as it appears in the Dashboard (not the key itself) so Support can identify it. Passing
fixedRatein a request does not enable access, and enabling one key does not enable your other keys. - Link a fee sponsorship wallet — Link a wallet to your app from the App Balance page; all API keys in the app share this wallet and its balance. Fixed rates require this wallet even when
subsidizeFeesisfalse, because it settles the difference between the fixed rate and the market rate. - Fund your App Balance — Maintain sufficient funds to cover the fixed-rate spread and any fees you sponsor. Follow the fee sponsorship setup guide.
"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. 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.
Use the enabled API key in the x-api-key header in the example below. Before executing, confirm the quote returns details.isFixedRate: true; for this sponsored 1:1 example, also confirm the input and output token amounts match after accounting for their decimals. Supported currencies alone do not confirm that your API key has fixed-rate access.
fixedRateFee object on details, alongside isFixedRate:
Accounting for Fixed Rates
Every fixed-rate settlement posts to your sponsoring wallet’s balance as a balance event:fixed-rate-credit when you earned the difference, and fixed-rate-debit when you sponsored it. Export these with Get Balance Events to reconcile settled amounts against your quotes, since the settled value can differ from the quote-time fixedRateFee estimate.
The same endpoint records your fee sponsorship activity and fee credits, so one export covers the full ledger. See Accounting and Reconciliation for how to distinguish app fees from revenue share.