Bundler Sponsored Operations

Learn how to use bundler sponsorship to cover gas fees for user operations without an onchain paymaster.

What is Bundler Sponsorship?

Bundler Sponsorship is a beta feature that allows the bundler to sponsor gas fees for user operations directly, eliminating the need for an onchain paymaster contract. This approach provides a streamlined way to abstract gas costs from your users while reducing the complexity and overhead associated with deploying and managing paymaster contracts.

How It Differs from Paymaster Sponsorship

Traditional gas sponsorship in ERC-4337 relies on paymaster contracts deployed onchain. These contracts:

  • Need to be deployed and funded on each network
  • Require onchain verification logic
  • Add additional gas overhead to user operations
  • Require management of separate balances per chain

Bundler sponsorship, in contrast:

  • Operates offchain at the bundler level
  • Uses your Gas Manager policy to control spending
  • Reduces gas overhead by eliminating paymaster contract calls
  • Simplifies multi-chain deployments

Bundler sponsorship is currently in beta. While it’s production-ready, features and pricing may evolve based on user feedback.

For beta access, please reach out to [email protected].

Policy Setup

To use bundler sponsorship, you must create a Gas Manager policy of type Bundler Sponsored Operations in your Alchemy dashboard.

Required Policy Configuration

When creating a Bundler Sponsored Operations policy, you must configure:

  • Policy Type: Select “Bundler Sponsored Operations”
  • Max Spend Per UO: Set the maximum amount the bundler can spend per user operation (required field)

This policy type differs from standard Gas Manager policies and is specifically designed for offchain bundler sponsorship.

Compute Unit Costs

When using bundler sponsorship with eth_sendUserOperation:

ConfigurationCU Cost
With bundler sponsorship header (x-alchemy-policy-id)3000
Standard (without sponsorship)1000

For more details, see the Compute Unit Costs documentation.

How to Use Bundler Sponsorship

To enable bundler sponsorship, you need to:

  1. Create a Bundler Sponsored Operations policy in your Alchemy dashboard with the required Max Spend Per UO configuration
  2. Include the policy ID in your requests via the x-alchemy-policy-id header
  3. Set gas fees to zero in your user operation overrides

Example Implementation

Here’s a complete example using Account Kit to send a sponsored user operation:

1import { LocalAccountSigner } from "@aa-sdk/core";
2import { alchemy, worldChain } from "@account-kit/infra";
3import { createModularAccountV2Client } from "@account-kit/smart-contracts";
4
5const RPC_URL = process.env.RPC_URL!;
6const POLICY_ID = process.env.POLICY_ID!;
7const PRIVATE_KEY = process.env.PRIVATE_KEY!;
8
9(async () => {
10 try {
11 const chain = worldChain;
12
13 // Configure transport with bundler sponsorship header
14 const transport = alchemy({
15 rpcUrl: RPC_URL,
16 fetchOptions: {
17 headers: {
18 "x-alchemy-policy-id": POLICY_ID
19 }
20 }
21 });
22
23 const signer = LocalAccountSigner.privateKeyToAccountSigner(
24 PRIVATE_KEY as `0x${string}`
25 );
26
27 const client = await createModularAccountV2Client({
28 chain,
29 transport,
30 signer,
31 });
32
33 // Send user operation with bundler sponsorship
34 const uo = await client.sendUserOperation({
35 overrides: {
36 maxFeePerGas: "0x0",
37 maxPriorityFeePerGas: "0x0",
38 },
39 uo: {
40 target: "0x0000000000000000000000000000000000000000",
41 data: "0x",
42 },
43 });
44
45 const txHash = await client.waitForUserOperationTransaction({
46 hash: uo.hash,
47 });
48
49 console.log("Tx Hash: ", txHash);
50
51 } catch (err) {
52 console.error("Error:", err);
53 }
54})();

Key Configuration Points

  1. Policy Type: Ensure you’ve created a policy of type “Bundler Sponsored Operations” with Max Spend Per UO configured.

  2. Transport Configuration: The x-alchemy-policy-id header must be included in the transport configuration’s fetchOptions.headers.

  3. Gas Fee Overrides: Set both maxFeePerGas and maxPriorityFeePerGas to "0x0" to indicate that the bundler should sponsor all gas costs.

Requirements

  • A valid Alchemy API key with Bundler API access
  • A configured Gas Manager policy of type Bundler Sponsored Operations with Max Spend Per UO set
  • Account Kit SDK or equivalent setup for creating and signing user operations

Ensure your Bundler Sponsored Operations policy has sufficient balance and that the Max Spend Per UO limit is set appropriately. If the policy balance is insufficient or the operation exceeds the spending limit, the user operation will fail.

Benefits

  • Simplified Architecture: No need to deploy or manage paymaster contracts
  • Lower Onchain Gas Costs: Eliminates the gas overhead of paymaster verification and contract calls
  • Reduced Latency: Fewer network calls and onchain interactions result in faster user operation processing
  • Easier Multi-Chain Support: Use the same policy type across multiple chains
  • Centralized Policy Management: Control spending limits and rules from the Alchemy dashboard

Limitations (Beta)

As this feature is currently in beta, please be aware of:

  • Features and API surface may change based on feedback
  • Not all networks may support bundler sponsorship
  • Compute unit costs are subject to change
  • Requires a specific policy type with mandatory Max Spend Per UO configuration