FAQs
Usage Limits
How much gas can I sponsor?
You can sponsor as much gas as you want. We front the gas for you up to a base limit based on your tier, and add it to your monthly bill. Note that both gas sponsorship and ERC-20 gas payments contribute towards your limit. If you need more gas you can easily boost your limits by buying gas manager credits in USD via our Gas Manager Dashboard. This is a one time purchase that will be applied to your bill at the end of the month and will roll over until it is used up.
Will I get alerted if I get close to my limit?
Yes! To safeguard against hitting sponsorship limits, we’ve implemented alerts that notify the team’s billing admins via email when gas manager usage reaches 50%, 75%, 90%, and 100% of the sponsorship limit.
Can the sponsored amount exceed my limits?
Our Gas Manager is designed to handle a large number of sponsorship requests quickly and efficiently. However, because of the way it processes these requests in batches, there may be brief periods where the actual spending slightly exceeds the limits you’ve set. This is rare but possible, especially when the system is handling a high volume of requests. Rest assured, we’re actively working to minimize these occurrences and if you have concerns, please file a support ticket via our Discord server.
Fee Logic
To provide its services, Alchemy’s Gas Abstraction API charges fees on gas sponsorships and ERC-20 gas payments.
Gas payments with any token
Which ERC-20 tokens are supported by the Gas Manager?
The ERC-20 Gas Manager supports any token supported by our Token Prices By Address API.
Which ERC20 tokens can I enable via the Gas Manager dashboard?
Below is a list of the tokens you can currently enable in your policy via our Gas Manager dashboard:
Want to support custom tokens? You can either contact us at [email protected] or use our Admin APIs to enable more ERC-20 tokens.
-
ETH_MAINNET
- USDC:
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
- USDT:
0xdac17f958d2ee523a2206206994597c13d831ec7
- WLD:
0x163f8c2467924be0ae7b5347228cabf260318753
- wBTC:
0x2260fac5e5542a773aa44fbcfedf7c193bc2c599
- wETH:
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc
- DAI:
0x6b175474e89094c44da98b954eedeac495271d0f
- USDe:
0x4c9edd5852cd905f086c759e8383e09bff1e68b3
- SUKU:
0x0763fdCCF1aE541A5961815C0872A8c5Bc6DE4d7
- USDC:
-
ETH_SEPOLIA
-
BASE_MAINNET
- USDC:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
- USDT:
0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2
- wETH:
0x4200000000000000000000000000000000000006
- USDC:
-
BASE_SEPOLIA
-
ARB_MAINNET
- USDC:
0xaf88d065e77c8cC2239327C5EDb3A432268e5831
- USDT:
0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9
- wETH:
0x82af49447d8a07e3bd95bd0d56f35241523fbab1
- DAI:
0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1
- USDe:
0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34
- USDC:
-
ARBNOVA_MAINNET
- USDC:
0x750ba8b76187092b0d1e87e28daaf484d1b5273b
- wETH:
0x722e8bdd2ce80a4422e880164f2079488e115365
- USDC:
-
ARB_SEPOLIA
-
OPT_MAINNET
- USDC:
0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
- USDT:
0x94b008aa00579c1307b0ef2c499ad98a8ce58e58
- WLD:
0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1
- wBTC:
0x68f180fcce6836688e9084f035309e29bf0a2095
- wETH:
0x4200000000000000000000000000000000000006
- DAI:
0xda10009cbd5d07dd0cecc66161fc93d7c9000da1
- USDe:
0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34
- USDC:
-
OPT_SEPOLIA
-
MATIC_MAINNET (Polygon mainnet)
- USDC:
0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359
- USDT:
0xc2132d05d31c914a87c6611c10748aeb04b58e8f
- wBTC:
0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6
- wETH:
0x7ceb23fd6bc0add59e62ac25578270cff1b9f619
- DAI:
0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063
- SUKU:
0x60Ea918FC64360269Da4efBDA11d8fC6514617C6
- USDC:
-
MATIC_AMOY (Polygon amoy)
-
WORLDCHAIN_MAINNET
-
MONAD_TESTNET
- USDC:
0xf817257fed379853cDe0fa4F97AB987181B1E5Ea
- USDT:
0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D
- wBTC:
0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d
- wETH:
0xB5a30b0FDc5EA94A52fDc42e3E9760Cb8449Fb37
- USDC:
How is the exchange rate for an ERC-20 token calculated?
We use our Token Prices By Address API to determine the exchange rate for ERC-20 tokens. The exchange rate is locked in at the moment the paymaster signs the userOp, not when the userOp is mined on-chain.
On testnets, since token prices are effectively $0, we use a reference token for pricing:
- Native gas token: We use the corresponding price of the token on mainnet.
- ERC-20 token supported on the dashboard: We use the token’s mainnet price.
- Custom ERC-20 token: If you’re enabling a custom token, you can choose which token to use as the pricing reference. Make sure to pick a price reference token that has the same decimals as the custom token.
What are the different ERC-20 transfer modes supported by the Paymaster?
To allow the paymaster contract to transfer ERC-20 tokens from the user’s wallet, the user must first approve (approve()
) the paymaster to spend tokens on their behalf. This typically requires a separate transaction, either paid for by the user with the native gas token or sponsored by the app builder.
To eliminate the need for a separate approval transaction and improve UX, the Paymaster supports two ERC-20 transfer modes, configurable at the policy level:
- [Recommended] Transfer ERC-20 tokens after userOp execution:
- We front the gas using the native gas token and transfer ERC-20 tokens from the user’s wallet to your receiving address after the userOp execution.
- No upfront allowance is required. You can batch the approval with the userOp, enabling the user to allow the paymaster to spend the ERC-20 token on their behalf (
approve()
) without a separate tx — greatly improving UX. - If the post-execution ERC-20 transfer fails, the userOp will revert, but you’ll remain liable for the gas costs.
- You can run off-chain simulation to verify the approval is likely to succeed, but this does not guarantee on-chain success.
- Transfer ERC-20 tokens before userOp execution:
- We front the gas using the native gas token and execute the ERC-20 token transfer during
validatePaymasterUserOp
, before the userOp execution. - This requires you (the developer) to ensure the paymaster already has sufficient allowance—either through a prior
approve()
transaction or a permit signature—before the UserOp is submitted. This approval must either be paid for by the user with the native gas token or sponsored by you. - If the required allowance isn’t in place when the userOp is submitted, the userOp will be rejected.
- This flow adds friction to the UX and is generally more gas intensive than the post-execution mode.
- We front the gas using the native gas token and execute the ERC-20 token transfer during
Where can I see userOps that used ERC-20 tokens for gas?
You can view past userOps by selecting your policy in the Gas Manager dashboard. For every userOp, you will see:
- userOpHash
- Timestamp
- ERC-20 token used
- Amount of ERC-20 tokens spent and its USD equivalent
- User address
- Network
You can also use our Get Sponsorships API to fetch the full history programmatically.
What are the deployment addresses of the Gas Manager (Paymaster)?
You can find the deployment addresses here.
What is the encoding of paymasterAndData
?
paymasterAndData
follows the format enforced by ERC-4337, which consists of a 20-byte address followed by an arbitrary-length data segment. For Alchemy’s paymaster contract, the data segment is formatted as a 32-byte packed time range validity followed by a 65-byte long signature.