How to Fix Bundler RPC Errors
This document provides a list of the JSON-RPC errors that you might encounter when using the Bundler API.
These are in addition to the standard JSON-RPC error codes returned by a bad method call.
32500: Rejected by EntryPoint’s simulateValidation
The userOp
is rejected by entryPoint's simulateValidation
, during account creation or validation.
The 32500
error code may be accompanied by an additional AAxx
revert code provided by the EntryPoint to give additional guidance.
Data Fields:
reason
: Optional string providing the main reason for the rejection.inner_reason
: Optional string providing additional details for the rejection.revert_data
: Optional bytes containing additional data related to the rejection.
32501: Rejected by paymaster's validatePaymasterUserOp
The userOp
is rejected by paymaster's validatePaymasterUserOp
.
Data Fields:
paymaster
: Address of the paymaster.reason
: String providing the reason for the rejection.
32502: Opcode violation
The userOp
does an Opcode violation or tries to access inaccessible storage.
Before submitting userOps
, bundlers must make sure userOps
don't grief the bundler by accessing banned opcodes when checking a signature.
Data Fields:
entity
: Type of entity (e.g., paymaster, sender) accessing the storage.opcode
: Opcode that caused the violation.Additional fields (when associated with
StakeTooLow
):needs_stake
: Entity that needs staking.accessing_entity
: Type of entity accessing the storage.accessed_address
: Address of the accessed storage.accessed_entity
: Optional type of accessed entity.slot
: Storage slot accessed.minimum_stake
: Minimum required stake.minimum_unstake_delay
: Minimum required unstake delay.
32503: Out of time range
Either the account or the paymaster returned a time-range, and it is already expired or will expire soon.
Data Fields:
valid_until
: Timestamp indicating the valid until time.valid_after
: Timestamp indicating the valid after time.paymaster
: Optional address of the paymaster.
32504: Throttled or banned
The userOp
was rejected because the paymaster or aggregator is throttled or banned.
Data Fields:
entity
: Type of entity (e.g., paymaster, aggregator) that is throttled or banned.address
: Address of the entity.
32505: Stake or unstake-delay too low
The userOp
was rejected because the paymaster's or signature aggregator's stake or unstake delay was too low.
Data Fields:
needs_stake
: Entity that needs staking.accessing_entity
: Type of entity accessing the storage.accessed_address
: Address of the accessed storage.accessed_entity
: Optional type of accessed entity.slot
: Storage slot accessed.minimum_stake
: Minimum required stake.minimum_unstake_delay
: Minimum required unstake delay.
32506: Unsupported aggregator
The userOp
was rejected because the wallet specified unsupported signature aggregator.
Data Fields:
aggregator
: Address of the unsupported aggregator.
32507: Invalid signature
The userOp
was rejected because it contains an invalid signature from the sender or the paymaster.
32521: Execution reverted
The userOp
was reverted during the execution phase. Link to a more detailed post
Data Fields:
revert_data
: Optional bytes containing additional data related to the revert.
32602: Invalid userOp
The userOp
struct/fields sent to the bundler were invalid.
Data Fields:
current_max_priority_fee
: Optional U256 containing the current maximum priority fee.current_max_fee
: Optional U256 containing the current maximum fee.
32603: Internal error
Internal JSON-RPC error. Please get in touch with our amazing support team.