What is Fee Sponsorship?
Fee Sponsorship allows you to cover the destination chain fees for your users’ Relay transactions. By sponsoring these fees, you can reduce costs for your users and create a more seamless experience. This is particularly valuable for onboarding new users or providing a premium experience for your application.Fee sponsorship covers all destination chain fees (including gas topup amounts), but not the origin chain gas fee. Users will still need to pay the gas required to submit their transaction on the origin chain.
Requirements
Before you can sponsor transactions, you need:- An API Key — Required to authenticate your sponsorship requests and associate them with your app balance.
- A Linked Funding Address — A wallet address must be linked to your API key. This is the address that will fund your app balance.
- Sufficient App Balance — Your app balance must have enough funds to cover the fees you wish to sponsor.
To get started with fee sponsorship, reach out to the Relay team to set up an API key and link it to your funding address.
Funding Your App Balance
There are two ways to deposit funds to your app balance:Option 1: Use the Relay App UI
The simplest way to deposit funds is through the Relay App Balance UI. This provides a user-friendly interface for managing your balance.Option 2: Direct On-Chain Deposit
You can programmatically deposit to your app balance by sending a transaction on Base to the Relay solver. This method involves appending specific calldata in place of the request ID to identify the deposit.How It Works
When you transfer funds to the solver using specific calldata, Relay treats it as a deposit to your app balance. This method uses a fixed 12-character prefix and suffix (012345abcdef) with the middle portion specifying which address to credit:
Calldata Format:
- Prefix:
012345abcdef - Address to Credit: The wallet address to deposit funds for (use
0000000000000000000000000000000000000000formsg.sender) - Suffix:
012345abcdef
Examples
| Calldata | Behavior |
|---|---|
0x012345abcdef0000000000000000000000000000000000000000012345abcdef | Credits msg.sender |
0x012345abcdefd5c0d17ccb9071d27a4f7ed8255f59989b9aee0d012345abcdef | Credits 0xd5c0d17ccb9071d27a4f7ed8255f59989b9aee0d |
Solver Address
Deposits should be sent to the Relay solver on Base:| Network | Address |
|---|---|
| Base | 0xf70da97812cb96acdf810712aa562db8dfa3dbef |
TypeScript Example
Checking Your App Balance
Before sponsoring transactions, you’ll want to verify your available balance. Use the Get App Fee Balances API:cURL
cURL
Sponsoring Transactions
Once your app balance is funded, you can sponsor transactions by including specific parameters in your quote requests.Required Header
| Header | Type | Description |
|---|---|---|
x-api-key | string | Your API key, required to authenticate sponsorship requests and associate them with your app balance. |
Sponsorship Parameters
Add these parameters to your Get Quote API request:| Parameter | Type | Description |
|---|---|---|
subsidizeFees | boolean | Set to true to have the sponsor pay for all fees associated with the request, including gas topup amounts. |
maxSubsidizationAmount | string | (Optional) The maximum amount to subsidize in USDC with 6 decimal places (e.g., "1000000" = $1.00). If the total fees exceed this threshold, the entire request will not be subsidized. |
Example Request
cURL
x-api-keyheader authenticates your sponsorship requestsubsidizeFees: trueenables fee sponsorshipmaxSubsidizationAmount: "5000000"caps sponsorship at $5.00 USDC
How maxSubsidizationAmount Works
The maxSubsidizationAmount parameter acts as a safety threshold:
- If the total fees are at or below this amount, the sponsor covers the full cost
- If the total fees exceed this amount, no sponsorship occurs — the user pays all fees
Fees Object
When you sponsor transactions, the quote response includes afees object with a subsidized field showing the fees covered by your sponsorship:
Best Practices
- Monitor Your Balance — Set up alerts or automated checks to ensure your app balance doesn’t run dry during high-traffic periods.
-
Use
maxSubsidizationAmount— Always set a reasonable cap to protect against unexpected fee spikes. - Consider Auto-Topup — For production applications, consider implementing an auto-topup system using the direct on-chain deposit method.
- Track Sponsored Transactions — Use the Get Requests API to monitor your sponsored transaction history and costs.
Related Resources
- App Fees — Learn how to collect fees from your users
- Get App Fee Balances — API reference for checking balances
- Get Quote — API reference for quote requests
- Relay Fees — Understanding Relay’s fee structure