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

# Errors

> HTTP status codes and error body format.

# Errors

Error body:

```json theme={null}
{
  "error": "insufficient_balance",
  "message": "Недостаточно доступных средств",
  "request_id": "019d0120-7b59-7eab-b837-a7af38ea3db2"
}
```

Always log `request_id` when contacting support.

## HTTP status

| HTTP  | Meaning                                    |
| ----- | ------------------------------------------ |
| `200` | Success or idempotent replay               |
| `202` | Accepted for async processing              |
| `400` | Invalid parameters                         |
| `401` | Missing / invalid token                    |
| `403` | Missing scope or partner blocked           |
| `404` | Object not found for this partner          |
| `409` | `ext_id` conflict (different body)         |
| `422` | Business rejection                         |
| `429` | Rate limit / cooldown / too many open docs |
| `500` | Internal error                             |
| `503` | Feature disabled                           |

## Common `error` codes

| Code                                             | Typical HTTP | Notes                               |
| ------------------------------------------------ | ------------ | ----------------------------------- |
| `insufficient_balance`                           | 422          | No document created                 |
| `ext_id_conflict`                                | 409          | Same `ext_id`, different body       |
| `product_unavailable`                            | 422          | Card product not allowed for tenant |
| `unknown_offer` / `offer_unavailable`            | 422          | Bad / inactive offer                |
| `invalid_address`                                | 400 / 422    | Withdraw address                    |
| `invalid_amount` / `invalid_value`               | 400 / 422    | Amount rules                        |
| `missing_required_field`                         | 400 / 422    | Gift required fields                |
| `catalog_stale`                                  | 422          | Refresh gift catalog and retry      |
| `kyc_rejected` / `invalid_customer_data`         | 422          | Cardholder data                     |
| `card_not_active` / `card_already_frozen`        | 422          | Card state                          |
| `not_found` / `card_not_found`                   | 404          | Resource missing for tenant         |
| `unauthorized`                                   | 401          | Token                               |
| `forbidden`                                      | 403          | Scope / tenant state                |
| `rate limit exceeded`                            | 429          | RPS window                          |
| `catalog cooldown`                               | 429          | Catalog min interval                |
| `too many open documents`                        | 429          | Inflight create cap                 |
| `withdraw_limit_exceeded`                        | 422          | Daily withdraw cap                  |
| `catalog_disabled`                               | 503          | eSIM/gift catalog off               |
| `gift_disabled`                                  | 503          | Gift kill-switch                    |
| `withdrawals_disabled` / `card_issuing_disabled` | 403 / 503    | Feature flag                        |
