Bundler Errors
This page documents common errors you may encounter when using the bundler, including both bundler-specific errors and EntryPoint errors.
Bundler Error Codes (EIP-7769)
The bundler implements the EIP-7769 specification which standardizes ERC-4337 bundler error codes.
| Error Code | Description |
|---|---|
| -32602 | Invalid UserOperation struct/fields |
| -32500 | Rejected by EntryPoint's simulateValidation |
| -32501 | Rejected by paymaster's validatePaymasterUserOp |
| -32502 | Violation of ERC-7562 opcode validation rules |
| -32503 | UserOperation out of time-range |
| -32504 | Paymaster throttled or banned by reputation rules |
| -32505 | Paymaster stake or unstake-delay too low |
| -32507 | Wallet signature check failed |
| -32508 | Paymaster balance insufficient for pending operations |
| -32521 | UserOperation execution reverted |
| -32603 | Internal error - bundler failure |
EntryPoint Errors
These errors originate from the EntryPoint contract during UserOperation validation or execution.
Account Errors (AA1x)
AA10: sender already constructed
The account at the sender address already exists, but the UserOperation includes initialization code.
- Remove the
initCode(v0.6) orfactory/factoryData(v0.8+) fields if the account is already deployed - Verify you're using the correct sender address
AA13: initCode failed or OOG
The initialization code failed to execute or ran out of gas.
Solutions:- Increase the
verificationGasLimit - Verify your
initCodeorfactoryDatais correct - Check that the factory contract is deployed on this chain
AA14: initCode must return sender
The factory's initialization code did not return the expected sender address.
Solutions:- Verify the
senderaddress matches what your factory will deploy - Check your factory contract implementation
AA15: initCode must create sender
The initialization code executed but didn't create a contract at the sender address.
Solutions:- Verify the factory contract deploys to the expected address
- Check for issues in your account deployment logic
Account Validation Errors (AA2x)
AA20: account not deployed
The sender account does not exist and no initialization code was provided.
- Include
initCode(v0.6) orfactory/factoryData(v0.8+) to deploy the account - Verify the sender address is correct
AA21: didn't pay prefund
The account doesn't have enough native tokens to cover gas costs (when not using a paymaster).
Solutions:- Fund the sender address with native tokens
- Use a paymaster to sponsor the transaction
AA22: expired or not due
The UserOperation's validity time window has passed or hasn't started yet.
Solutions:- Check the account's validation time constraints
- Submit the operation within the valid time window
AA23: reverted
The account's validation function reverted.
Solutions:- Check your account contract's
validateUserOpimplementation - Verify the signature is valid
- Ensure the account has proper permissions
AA24: signature error
The signature verification failed.
Solutions:- Verify the signature is correctly formatted
- Ensure you're signing the correct UserOperation hash
- Check the signer has permission on the account
AA25: invalid account nonce
The nonce is invalid (already used or incorrect key).
Solutions:- Get the current nonce from the EntryPoint contract
- Ensure you're using the correct nonce key for parallel operations
Paymaster Errors (AA3x)
AA30: paymaster not deployed
The paymaster contract specified in the UserOperation is not deployed.
Solutions:- Verify the paymaster address is correct
- Check that the paymaster is deployed on this chain
AA31: paymaster deposit too low
The paymaster doesn't have enough funds deposited in the EntryPoint.
Solutions:- Contact your paymaster provider
- If self-hosted, deposit more funds via the paymaster's
deposit()function
AA32: paymaster expired or not due
The paymaster signature has expired or isn't valid yet.
Solutions:- Request fresh paymaster data
- Check the paymaster's time validity window
AA33: reverted
The paymaster's validation function reverted.
Solutions:- Contact your paymaster provider
- Verify the UserOperation meets the paymaster's sponsorship criteria
AA34: signature error
The paymaster's signature verification failed.
Solutions:- Request fresh paymaster data
- Verify the paymaster data hasn't been tampered with
Gas Errors (AA4x)
AA40: over verificationGasLimit
The verification phase used more gas than allocated.
Solutions:- Increase
verificationGasLimit - Re-estimate gas using
eth_estimateUserOperationGas
AA41: too little verificationGas
The verificationGasLimit is set too low for the operation.
- Increase
verificationGasLimit - Use
eth_estimateUserOperationGasto get accurate estimates
Post-Operation Errors (AA5x)
AA50: postOp reverted
The paymaster's postOp function reverted.
- Contact your paymaster provider
- Increase
paymasterPostOpGasLimitif using v0.8+
AA51: prefund below actualGasCost
The actual gas cost exceeded what was prefunded.
Solutions:- Increase gas limits
- Ensure sufficient funds or paymaster coverage
Internal Errors (AA9x)
AA90: invalid beneficiary
The bundler specified an invalid beneficiary address.
Solutions:- This is a bundler configuration error; contact support
AA91: failed send to beneficiary
Failed to send funds to the bundler's beneficiary address.
Solutions:- This is typically a bundler infrastructure issue; contact support
AA92: internal call only
An external call was made to an internal EntryPoint function.
Solutions:- Ensure your code isn't directly calling internal EntryPoint methods
AA93: invalid paymasterAndData
The paymasterAndData field is malformed.
- Verify the paymaster data format (first 20 bytes must be paymaster address)
- Request fresh paymaster data
AA94: gas values overflow
Gas values caused an arithmetic overflow.
Solutions:- Reduce gas limit values
- Use reasonable gas estimates
AA95: out of gas
The operation ran out of gas during execution.
Solutions:- Increase
callGasLimit - Optimize your transaction's gas usage
AA96: invalid aggregator
An invalid signature aggregator was specified.
Solutions:- Verify the aggregator contract address
- Ensure the aggregator is properly registered