Available Now

Bundler API

ERC-4337 UserOperation bundling service

Production-grade bundler for account abstraction. Submit, simulate, and track UserOperations across all ERC-4337 compatible chains with reliable transaction inclusion.

UserOp Bundling

Efficiently bundle multiple UserOperations into single transactions.

Fast Inclusion

Priority transaction submission for quick block inclusion.

Simulation

Pre-flight simulation to validate operations before submission.

Multi-chain Support

ERC-4337 bundling across Ethereum, Polygon, Arbitrum, and more.

Back to Web3 Overview

Get Your API Key

Start building in under 5 minutes

99.999%
Uptime
<50ms
Latency
100+
Chains

No credit card required. Free tier includes 300M compute units/month.

Trusted by developers building:

DeFiNFTsPaymentsGamingAI Agents

Key Capabilities

Everything you need, nothing you don't.

UserOp Bundling

Efficiently bundle multiple UserOperations into single transactions.

Fast Inclusion

Priority transaction submission for quick block inclusion.

Simulation

Pre-flight simulation to validate operations before submission.

Multi-chain Support

ERC-4337 bundling across Ethereum, Polygon, Arbitrum, and more.

Auto-retry

Automatic retry with gas price adjustment for stuck operations.

Status Tracking

Real-time status updates from submission to confirmation.

Operation History

Query past UserOperations and their execution results.

Custom Mempools

Support for alternative mempools and private submission.

Analytics

Track success rates, gas usage, and operation metrics.

Simple to Integrate

Get started with just a few lines of code. SDKs for every language.

UserOpBuilder.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@account-abstraction/contracts/interfaces/IEntryPoint.sol";
import "@account-abstraction/contracts/interfaces/UserOperation.sol";

contract UserOpHelper {
    IEntryPoint public immutable entryPoint;

    constructor(address _entryPoint) {
        entryPoint = IEntryPoint(_entryPoint);
    }

    // Encode a simple ETH transfer for UserOp callData
    function encodeTransfer(address to, uint256 value) external pure returns (bytes memory) {
        return abi.encodeWithSignature("execute(address,uint256,bytes)", to, value, "");
    }

    // Encode ERC20 transfer for UserOp callData
    function encodeERC20Transfer(
        address token,
        address to,
        uint256 amount
    ) external pure returns (bytes memory) {
        bytes memory tokenCall = abi.encodeWithSignature("transfer(address,uint256)", to, amount);
        return abi.encodeWithSignature("execute(address,uint256,bytes)", token, 0, tokenCall);
    }

    // Encode batch execution for UserOp callData
    function encodeBatch(
        address[] calldata targets,
        uint256[] calldata values,
        bytes[] calldata datas
    ) external pure returns (bytes memory) {
        return abi.encodeWithSignature(
            "executeBatch(address[],uint256[],bytes[])",
            targets, values, datas
        );
    }

    // Get gas limits for simulation
    function estimateGas(UserOperation calldata userOp) external returns (
        uint256 preVerificationGas,
        uint256 verificationGasLimit,
        uint256 callGasLimit
    ) {
        // Simulate execution to estimate gas
        try entryPoint.simulateValidation(userOp) {}
        catch (bytes memory result) {
            // Parse simulation result for gas estimates
        }
    }

    // Get current nonce for account
    function getNonce(address account) external view returns (uint256) {
        return entryPoint.getNonce(account, 0);
    }
}

Built For

Smart Wallet Apps

Power account abstraction wallets with reliable bundling.

Gasless Transactions

Enable sponsored transactions with paymaster integration.

Batch Operations

Execute multiple actions in a single user signature.

Session Keys

Support for temporary permissions and automated actions.

Supported Chains

Ethereum
Polygon
Arbitrum
Optimism
Base
BNB Chain
Avalanche
zkSync
Linea

Start Building with Bundler API

Get your free API key and ship your first request in under 5 minutes. No credit card required.