> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cdp.coinbase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Error Reference

This page lists error codes returned by CDP Paymaster and Bundler. Use this as a quick reference when debugging failed userOperations.

<Tip>
  For step-by-step debugging workflows, see the [Troubleshooting](/paymaster/reference-troubleshooting/troubleshooting) guide.
</Tip>

## Paymaster Errors

These errors are returned by the CDP Paymaster service.

| Error | Code | Description | How to Fix |
| :- | :- | :- | :- |
| `INTERNAL_ERROR` | -32000 | Internal service error | Retry the request. If it persists, [contact support](#need-help). |
| `UNAUTHORIZED_ERROR` | -32001 | Invalid API key or endpoint | Verify your Paymaster URL is correct and the API key is active. |
| `DENIED_ERROR` | -32001 | Request denied by gas policy | Check your [allowlist and spend limits](https://portal.cdp.coinbase.com/products/bundler-and-paymaster) in CDP Portal. |
| `UNAVAILABLE_ERROR` | -32003 | Service temporarily unavailable | Retry after a short delay. If it persists, [contact support](#need-help). |
| `GAS_ESTIMATION_ERROR` | -32004 | Gas estimation failed | Usually insufficient gas or invalid paymaster signature. See [Troubleshooting](/paymaster/reference-troubleshooting/troubleshooting#execution-reverted). |
| `METHOD_NOT_FOUND` | -32601 | Unknown JSON-RPC method | Verify Paymaster is enabled and you're calling a supported method. |
| `INVALID_ARGUMENT` | -32602 | Invalid userOperation parameters | Check that all required fields are present and correctly formatted. |
| `PARSE_ERROR` | -32700 | Malformed request body | Verify your JSON is valid and the request body is properly structured. |

## Policy Rejection Messages

These messages indicate your userOperation was rejected by your configured gas policy.

| Message | Cause | Solution |
| :- | :- | :- |
| `rejected due to max per user op spend limit exceeded` | Single operation costs too much | Increase Per UserOperation limit in Configuration |
| `rejected due to max monthly org spend limit` | Monthly budget exhausted | [Apply for more credits](https://docs.google.com/forms/d/1yPnBFW0bVUNLUN_w3ctCqYM9sjdIQO3Typ53KXlsS5g/viewform) or wait for reset |
| `rejected due to max global usd spend limit reached` | Total spend limit hit | Adjust your global limit in Configuration |
| `rejected due to maximum per address transaction count reached` | Too many transactions from this sender | Increase per-address transaction limit |
| `rejected due to maximum per address sponsorship reached` | Sender hit USD sponsorship cap | Increase per-address sponsorship limit |
| `attestation not found for address` | Sender lacks required attestation | Ensure sender has the required onchain attestation |
| `target address not in allowed contracts` | Contract not allowlisted | Add the contract address to your allowlist |
| `method not in allowed methods` | Function not allowlisted | Add the specific function to your contract's allowlist |

## Bundler Errors

These errors are returned by the Bundler when processing userOperations.

| Error | Code | Description |
| :- | :- | :- |
| `REJECTED_BY_EP_OR_ACCOUNT` | -32500 | Rejected by EntryPoint or smart account |
| `REJECTED_BY_PAYMASTER` | -32501 | Paymaster refused to sponsor |
| `BANNED_OPCODE` | -32502 | UserOperation contains a banned opcode |
| `SHORT_DEADLINE` | -32503 | Transaction deadline too short |
| `BANNED_OR_THROTTLED_ENTITY` | -32504 | Sender or paymaster is throttled |
| `INVALID_ENTITY_STAKE` | -32505 | Invalid staking for entity |
| `INVALID_AGGREGATOR` | -32506 | Invalid signature aggregator |
| `INVALID_SIGNATURE` | -32507 | Signature verification failed |
| `EXECUTION_REVERTED` | -32521 | Onchain execution reverted |
| `INVALID_FIELDS` | -32602 | UserOperation has invalid fields |

## EntryPoint Errors

These `AA` prefixed errors come from the ERC-4337 EntryPoint contract.

| Error | Description | Solution |
| :- | :- | :- |
| `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 |

## Request Logs

Download detailed logs for debugging from the **Logs** tab in [CDP Portal](https://portal.cdp.coinbase.com/products/bundler-and-paymaster). Click **Download CSV** to export.

| Column | Description |
| :- | :- |
| `OrganizationId` | Your CDP Organization ID |
| `ProjectId` | Your CDP Project ID |
| `Network` | `base` or `base-sepolia` |
| `Status` | `completed`, `in progress`, or `failed` |
| `UserOpHash` | Hash of the userOperation |
| `Sender` | Smart account address |
| `Paymaster` | Paymaster contract that sponsored the operation |
| `TransactionHash` | Onchain transaction hash (if included) |
| `GasCost` | Gas price in Gwei |
| `GasUsed` | Total gas consumed |
| `Method` | JSON-RPC method called |
| `ErrorCode` | Error code (for failed requests) |
| `ErrorMessage` | Error details (for failed requests) |

## Need Help?

If you're still stuck after checking these errors:

1. **Export your logs** from CDP Portal for detailed request data
2. **Check [Troubleshooting](/paymaster/reference-troubleshooting/troubleshooting)** for debugging workflows
3. **Ask in Discord** — Post in the `#paymaster` channel in [CDP Discord](https://discord.com/invite/cdp) with your error details
