How to Resolve entryPoint AAxx Errors
Getting AAxx
coded errors from the EntryPoint?
Here’s a TL;DR to what they indicate and how you can resolve these:
AA1x error codes relate to creating an account
AA2x error codes relate to the sender of the user operation
AA3x error codes relate to paymasters
AA4x error codes relate to verification
AA5x errors relate to post execution actions
AA9x error codes are general and not related to a certain theme
AA10 sender already constructed
The sender
has already been created.
This error may occur if you attempt to create an account multiple times.
How to fix:
Remove the initCode from the userOp struct.
AA13 initCode failed or OOG
The initCode
failed to create the smart account.
There are two possible reasons:
The
initCode
ran out of gas (OOG)The
initCode
reverted during the account deployment process
How to fix:
Check the account has native token to pay for its deployment if you aren't using a paymaster.
Check that the factory address in the initCode is correct (the factory address is the first 20 bytes of the
initCode
).Check that the
verificationGasLimit
is high enough for theinitCode
to complete without running out of gas.If the
initCode
reverted, investigate why using tools like Tenderly.
AA14 initCode must return sender
The address of the smart account deployed with the initCode
does not match the sender
address of the userOperation
.
How to fix:
Check that the
initCode
is correct.The first 20 bytes should be the factory address.
The remaining bytes should be the encoded function call.
Verify that the sender address was generated deterministically from
initCode
.
AA15 initCode must create sender
The initCode
does not return any sender address.
1. The initCode
factory is not creating an account.
2. The initCode
factory is creating an account, but is not returning the deployed sender address.
How to fix:
Check that the
initCode
is correct.The first 20 bytes should be the factory address.
The remaining bytes should be the encoded function call.
Verify that the
initCode
factory is implemented correctly, i.e., it deploys the smart account and returns thesender
address.
AA20 account not deployed
The sender
of the userOperation
is not deployed and the initCode
is not specified.
How to fix:
Check that you are using the correct
sender
address.If this is the first transaction by this account make sure the
initCode
is included in theuserOp
.Check that you are sending the
userOp
to the correct network.
AA21 Didn’t pay prefund
The sender did not have enough native tokens to prefund the EntryPoint for the user operation.
How to fix:
If you are not using a paymaster, check that the account has enough native token to cover the required prefund.
If you are using a paymaster, check that the paymaster and data fields are set.
AA22 expired or not due
The signature of the user operation is not valid because it is outside of the specified time range. This error occurs when the block.timestamp
is after the validUntil
timestamp or before the validAfter
timestamp.
How to fix:
If you are using time-based signatures, check that the
validAfter
andvalidUntil
fields are set correctly and that theuserOp
is sent within the specified range.If you not using time-based signatures, check that the
validAfter
andvalidUntil
fields are set to 0.
AA23 reverted (or OOG)
The sender signature validation reverted or ran out of gas (OOG).
How to fix:
Check that the
verificationGasLimit
is high enough to cover the gas costs ofvalidateUserOp
.If you are not using a paymaster, check that the sender has enough native tokens to cover the required prefund.
If you are us a paymaster to cover the gas fees, verify that the
paymaster
anddata
fields are set.
AA24 signature error
The signature of the userOp is invalid.
How to fix:
Check that the userOp was correctly signed.
The userOpHash is correctly computed.
The entryPointAddress is correct.
The chainId is correct
The smart account expects the same type of signature.
AA25 Invalid account nonce
The nonce of the userOp
is invalid. The userOp
may be reusing an old nonce or formatting the nonce incorrectly.
How to fix:
Check that you are not using a nonce that has already been used.
Check that you are not using a nonce that is too far in the future (more than 10 higher than the current nonce.
Check that the nonce is formatted correctly.
AA30 paymaster not deployed
The paymaster contract is not deployed.
How to fix:
Check that the first 20 bytes of the
paymasterAndData
field are the address of the paymaster contract you intend to use.Check that the paymaster contract is deployed on the network you are using.
AA31 paymaster deposit too low
The paymaster contract does not have enough funds deposited into the EntryPoint contract to cover the gas of the userOp.
How to fix:
Add more funds into the paymaster contract.
AA32 Paymaster expired or not due
The paymaster's signature is outside of the specified time range and has expired.
How to fix:
Make sure you are sending the userOp within the sponsorship expiry period specified in your Gas Manager policy.
AA33 reverted (or OOG)
The paymaster signature was rejected or verifying the paymaster signature ran out of gas (OOG).
How to fix:
Verify that the verificationGasLimit is high enough to cover the validatePaymasterUserOp function's gas costs.
.Verify If the userOp is well formed with a high enough verificationGasLimit.
AA34 Signature Error
The paymaster's signature is invalid.
How to fix:
Check the format of the signature in the paymasterAndData or the paymaster field depending on the EntryPoint version you are using.
AA40 over verificationGasLimit
The amount of gas used to verify the smart account or paymaster signature was higher than userOp's verificationGasLimit.
How to fix:
Check that the
verificationGasLimit
set for the userOp is high enough to cover the gas used for smart account and paymaster verification.Investigate why the smart account and/or paymaster used more gas than expected using tools like Tenderly.
AA41 too little verificationGas
Verifying the userOp took too much gas and did not complete.
How to fix:
Increase verificationGasLimit
.
AA50 postOp reverted
The paymaster contract's postOp function reverted.
How to fix:
Open a support ticket
AA51 prefund below actualGasCost
The actual gas cost of the userOp ended was higher than the prefund covered by the smart account or the paymaster.
How to fix:
Increase the prefund covered limit for UO for smart contract account or gas manager policy.
AA90 invalid beneficiary
The bundler specified an invalid address or the zero address as the beneficiary of the userOp
.
How to fix:
Verify the beneficiary address is correct.
AA91 failed send to beneficiary
The beneficiary of the bundler fee was unable to receive compensation from the EntryPoint
.
How to fix:
AA92 internal call only
The innerHandleOp
function was attempted to be called by an entity other than the EntryPoint. This function is restricted to the EntryPoint's handleOps
function.
How to fix:
AA93 invalid paymasterAndData
The paymasterAndData
field is of an incorrect length.
How to fix:
Check that paymasterAndData
is either empty or at least 20 bytes long.
AA94 gas values overflow
A gas value of the userOp did not fit into a uint160.
How to fix:
Check that all the gas limit and gas price fields of the userOp fit into uint160.
AA95 out of gas
The bundle of userOperations
was aborted because the specified gas limit was too low.
How to fix:
Increasing the gas limit or Open a support ticket.
AA96 invalid aggregator
The bundler tried to bundle aggregated userOps with an invalid aggregator.