> ## Documentation Index
> Fetch the complete documentation index at: https://direct-api.reap.global/llms.txt
> Use this file to discover all available pages before exploring further.

# Error code catalog

> Every error code the Business Account API can return, with its HTTP status, type, whether it is retryable, and the endpoints that return it. Generated from the OpenAPI documents.

> [!NOTE]
>
> This page is generated from the OpenAPI responses, so it stays in sync with
> the API. Program against `code`; `type` groups codes by broad kind,
> and `param` (when present) names the field at fault. See
> [Errors](/api-reference/errors.md) for the envelope shape.

| Code | HTTP status | `type` | Retryable | Endpoints | What to do |
| - | - | - | - | - | - |
| `API_KEY_INVALID` | 401 | `AUTHENTICATION_ERROR` | No | DELETE /2026-07-13/cards/{cardId}, GET /2026-07-13/cards, GET /2026-07-13/cards/activities, GET /2026-07-13/cards/balances, GET /2026-07-13/cards/categories, GET /2026-07-13/cards/transaction-categories, GET /2026-07-13/cards/{cardId}, GET /2026-07-13/health, GET /2026-07-13/team-members, GET /2026-07-13/treasury/funding-instructions, GET /2026-07-13/treasury/funding-options, GET /2026-07-13/treasury/transactions, POST /2026-07-13/cards, POST /2026-07-13/cards/{cardId}/reveal, POST /2026-07-13/treasury/bank-transfer-confirmations, PUT /2026-07-13/cards/{cardId}, PUT /2026-07-13/cards/{cardId}/freeze, PUT /2026-07-13/cards/{cardId}/restriction, PUT /2026-07-13/cards/{cardId}/spend-control, PUT /2026-07-13/cards/{cardId}/unfreeze | API key is invalid. |
| `API_KEY_IP_NOT_ALLOWED` | 403 | `PERMISSION_ERROR` | No | DELETE /2026-07-13/cards/{cardId}, GET /2026-07-13/cards, GET /2026-07-13/cards/activities, GET /2026-07-13/cards/balances, GET /2026-07-13/cards/categories, GET /2026-07-13/cards/transaction-categories, GET /2026-07-13/cards/{cardId}, GET /2026-07-13/health, GET /2026-07-13/team-members, GET /2026-07-13/treasury/funding-instructions, GET /2026-07-13/treasury/funding-options, GET /2026-07-13/treasury/transactions, POST /2026-07-13/cards, POST /2026-07-13/cards/{cardId}/reveal, POST /2026-07-13/treasury/bank-transfer-confirmations, PUT /2026-07-13/cards/{cardId}, PUT /2026-07-13/cards/{cardId}/freeze, PUT /2026-07-13/cards/{cardId}/restriction, PUT /2026-07-13/cards/{cardId}/spend-control, PUT /2026-07-13/cards/{cardId}/unfreeze | Request IP is not allowed for this API key. |
| `API_KEY_RATE_LIMITED` | 429 | `RATE_LIMIT_ERROR` | Yes | DELETE /2026-07-13/cards/{cardId}, GET /2026-07-13/cards, GET /2026-07-13/cards/activities, GET /2026-07-13/cards/balances, GET /2026-07-13/cards/categories, GET /2026-07-13/cards/transaction-categories, GET /2026-07-13/cards/{cardId}, GET /2026-07-13/health, GET /2026-07-13/team-members, GET /2026-07-13/treasury/funding-instructions, GET /2026-07-13/treasury/funding-options, GET /2026-07-13/treasury/transactions, POST /2026-07-13/cards, POST /2026-07-13/cards/{cardId}/reveal, POST /2026-07-13/treasury/bank-transfer-confirmations, PUT /2026-07-13/cards/{cardId}, PUT /2026-07-13/cards/{cardId}/freeze, PUT /2026-07-13/cards/{cardId}/restriction, PUT /2026-07-13/cards/{cardId}/spend-control, PUT /2026-07-13/cards/{cardId}/unfreeze | API key rate limit exceeded. |
| `AUTH_CREDENTIAL_MISSING` | 401 | `AUTHENTICATION_ERROR` | No | DELETE /2026-07-13/cards/{cardId}, GET /2026-07-13/cards, GET /2026-07-13/cards/activities, GET /2026-07-13/cards/balances, GET /2026-07-13/cards/categories, GET /2026-07-13/cards/transaction-categories, GET /2026-07-13/cards/{cardId}, GET /2026-07-13/health, GET /2026-07-13/team-members, GET /2026-07-13/treasury/funding-instructions, GET /2026-07-13/treasury/funding-options, GET /2026-07-13/treasury/transactions, POST /2026-07-13/cards, POST /2026-07-13/cards/{cardId}/reveal, POST /2026-07-13/treasury/bank-transfer-confirmations, PUT /2026-07-13/cards/{cardId}, PUT /2026-07-13/cards/{cardId}/freeze, PUT /2026-07-13/cards/{cardId}/restriction, PUT /2026-07-13/cards/{cardId}/spend-control, PUT /2026-07-13/cards/{cardId}/unfreeze | Authentication is required. |
| `AUTH_INSUFFICIENT_PERMISSIONS` | 403 | `PERMISSION_ERROR` | No | DELETE /2026-07-13/cards/{cardId}, GET /2026-07-13/cards, GET /2026-07-13/cards/activities, GET /2026-07-13/cards/balances, GET /2026-07-13/cards/categories, GET /2026-07-13/cards/transaction-categories, GET /2026-07-13/cards/{cardId}, GET /2026-07-13/health, GET /2026-07-13/team-members, GET /2026-07-13/treasury/funding-instructions, GET /2026-07-13/treasury/funding-options, GET /2026-07-13/treasury/transactions, POST /2026-07-13/cards, POST /2026-07-13/cards/{cardId}/reveal, POST /2026-07-13/treasury/bank-transfer-confirmations, PUT /2026-07-13/cards/{cardId}, PUT /2026-07-13/cards/{cardId}/freeze, PUT /2026-07-13/cards/{cardId}/restriction, PUT /2026-07-13/cards/{cardId}/spend-control, PUT /2026-07-13/cards/{cardId}/unfreeze | Insufficient permissions. |
| `AUTH_METHOD_NOT_ALLOWED` | 403 | `PERMISSION_ERROR` | No | DELETE /2026-07-13/cards/{cardId}, GET /2026-07-13/cards, GET /2026-07-13/cards/activities, GET /2026-07-13/cards/balances, GET /2026-07-13/cards/categories, GET /2026-07-13/cards/transaction-categories, GET /2026-07-13/cards/{cardId}, GET /2026-07-13/health, GET /2026-07-13/team-members, GET /2026-07-13/treasury/funding-instructions, GET /2026-07-13/treasury/funding-options, GET /2026-07-13/treasury/transactions, POST /2026-07-13/cards, POST /2026-07-13/cards/{cardId}/reveal, POST /2026-07-13/treasury/bank-transfer-confirmations, PUT /2026-07-13/cards/{cardId}, PUT /2026-07-13/cards/{cardId}/freeze, PUT /2026-07-13/cards/{cardId}/restriction, PUT /2026-07-13/cards/{cardId}/spend-control, PUT /2026-07-13/cards/{cardId}/unfreeze | This endpoint does not accept the credential type provided. |
| `CARD_CREATION_REQUIRES_DEPOSIT` | 422 | `INVALID_REQUEST_ERROR` | No | POST /2026-07-13/cards | Deposit funds in the dashboard. See [How to add funds to your Reap Account](https://support.reap.global/hc/en-us/articles/16170706183567-How-to-add-funds-to-your-Reap-Account) in the Help Center. |
| `CARD_CREATION_UNAVAILABLE` | 503 | `API_ERROR` | Yes | POST /2026-07-13/cards | Card creation temporarily unavailable. Please retry shortly. |
| `CARD_LIMIT_EXCEEDED` | 429 | `RATE_LIMIT_ERROR` | Yes | POST /2026-07-13/cards | Your account has reached the maximum number of cards. Contact support to request more. |
| `CARD_STATE_CONFLICT` | 409 | `INVALID_REQUEST_ERROR` | No | PUT /2026-07-13/cards/{cardId}/freeze, PUT /2026-07-13/cards/{cardId}/unfreeze | The requested card state transition is not allowed. |
| `CARDHOLDER_NOT_FOUND` | 422 | `INVALID_REQUEST_ERROR` | No | POST /2026-07-13/cards | The team member must be approved in the dashboard first. See [Managing Your Team](https://support.reap.global/hc/en-us/articles/16170798649743-Managing-Your-Team) in the Help Center. |
| `CURRENCY_MISMATCH` | 422 | `INVALID_REQUEST_ERROR` | No | POST /2026-07-13/cards, PUT /2026-07-13/cards/{cardId}/spend-control | The provided currency does not match the card currency. |
| `DUPLICATE_REFERENCE` | 400 | `INVALID_REQUEST_ERROR` | No | POST /2026-07-13/treasury/bank-transfer-confirmations | A transaction with this reference ID is already recorded. |
| `FREEZE_REASON_NOT_APPLICABLE` | 422 | `INVALID_REQUEST_ERROR` | No | PUT /2026-07-13/cards/{cardId}/freeze | This freeze reason only applies to physical cards. |
| `FUNDING_METHOD_NOT_AVAILABLE` | 400 | `INVALID_REQUEST_ERROR` | No | GET /2026-07-13/treasury/funding-instructions, POST /2026-07-13/treasury/bank-transfer-confirmations | This funding method is not available for this product. |
| `IDEMPOTENCY_KEY_IN_FLIGHT` | 409 | `INVALID_REQUEST_ERROR` | No | POST /2026-07-13/cards, POST /2026-07-13/treasury/bank-transfer-confirmations | A request with this Idempotency-Key is still being processed. Retry shortly. |
| `IDEMPOTENCY_KEY_REUSED` | 422 | `INVALID_REQUEST_ERROR` | No | POST /2026-07-13/cards, POST /2026-07-13/treasury/bank-transfer-confirmations | This Idempotency-Key was already used with a different request body. |
| `IDEMPOTENCY_UNAVAILABLE` | 503 | `API_ERROR` | Yes | POST /2026-07-13/cards, POST /2026-07-13/treasury/bank-transfer-confirmations | The idempotent request outcome could not be safely determined. |
| `REAP_OPTIMIZE_TERMS_NOT_ACCEPTED` | 403 | `PERMISSION_ERROR` | No | GET /2026-07-13/treasury/funding-instructions | Accept the Reap Optimize terms in the dashboard. See [What is Reap Optimize?](https://support.reap.global/hc/en-us/articles/17089644855695-What-is-Reap-Optimize) in the Help Center. |
| `SPEND_CAP_TOO_LOW` | 400 | `INVALID_REQUEST_ERROR` | No | PUT /2026-07-13/cards/{cardId}/spend-control | Spend cap cannot be lower than the amount already spent on this card. |
| `TREASURY_NOT_AVAILABLE` | 403 | `PERMISSION_ERROR` | No | GET /2026-07-13/treasury/funding-instructions, GET /2026-07-13/treasury/funding-options, GET /2026-07-13/treasury/transactions, POST /2026-07-13/treasury/bank-transfer-confirmations | Treasury is not available for this business. |
| `TREASURY_REQUESTER_NOT_AVAILABLE` | 403 | `PERMISSION_ERROR` | No | POST /2026-07-13/treasury/bank-transfer-confirmations | The API key creator is no longer an approved team member. Create a new API key under a current team member. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.