Batch transactions
Execute multiple calls in a single user operation
Gas sponsorship
Optional paymasters for gasless UX
Multi-chain support
Deploy on 8 mainnets and 2 testnets across EVM chains
For keeping the same address, EIP-7702 upgrades an existing EOA with the same smart account capabilities without creating a new contract address.
Create a smart account
- React
- Node (TypeScript)
- Python
Configure
createOnLogin: "smart" in your provider so new users get a smart account automatically on sign-in.Send a user operation
On Base Sepolia, user operations are subsidized and the smart account does not need to be funded with ETH. On Base mainnet, fund the smart account with ETH before submitting.
- React
- Node (TypeScript)
- Python
useSendUserOperation tracks status, data, and error through on-chain confirmation.Batch calls
Pass multiple entries incalls[] to execute them atomically in a single user operation. Calls run in order and revert together on failure.
- React
- Node (TypeScript)
- Python
Encode contract calls
To interact with contracts, passdata using an ABI-encoded payload. This example encodes an ERC-20 transfer using viem:
Node (TypeScript)
Gas sponsorship
Pass apaymasterUrl to cover gas fees for your users with any ERC-7677-compatible paymaster.
- React
- Node (TypeScript)
- Python
React also supports
useCdpPaymaster: true to use the CDP Paymaster on Base without providing a URL.Builder Codes
Base Builder Codes attribute onchain activity back to your app for rewards and analytics. PassdataSuffix on any user operation — no contract changes needed.
First, register at base.dev and generate your suffix:
sendUserOperation:
- React
- Node (TypeScript)
- Python
Supported networks
Debugging
When a user operation reverts, the revert reason is included in its receipts if it can be decoded:- Node (TypeScript)
- Python