AA10 sender already constructed | Account exists but initCode provided | Remove initCode from your userOperation |
AA13 initCode failed or OOG | Account creation failed or ran out of gas | Increase verificationGasLimit |
AA14 initCode must return sender | Factory didn’t return sender address | Check your factory contract implementation |
AA15 initCode must create sender | Factory didn’t deploy the account | Verify factory contract and initCode |
AA20 Account not deployed | Account doesn’t exist and no initCode | Include initCode for first transaction |
AA21 didn't pay prefund | Account can’t cover gas prefund | Ensure Paymaster is configured or account has ETH |
AA23 reverted (or OOG) | Validation reverted or out of gas | Check signature validity and gas limits |
AA24 Signature error | Invalid userOperation signature | Verify hash, entrypoint address, and chain ID |
AA25 Invalid account nonce | Nonce mismatch | Use current nonce; don’t reuse old ones |
AA40 Over verification gas limit | Verification exceeded gas limit | Increase verificationGasLimit |
AA41 Too little verification gas | Verification ran out of gas | Increase verificationGasLimit |
AA50 PostOp reverted | Post-operation hook failed | Debug paymaster postOp logic |
AA51 prefund below actualGasCost | Approved gas less than actual cost | Increase gas limits or prefund amount |