---
title: Коды ошибок
description: Коды ошибок API Coinetic: что значит каждый и что делать — подпись, идемпотентность, счета, активы, возвраты, лимиты.
url: https://coinetic.money/ru/docs/errors/
lang: ru
---

# Коды ошибок

Тело ошибки всегда одинаковое. Ориентируйтесь на `code`, а не на текст: текст написан для человека и может меняться.

```json
{ "error": { "code": "duplicate_order", "message": "Счёт для этого order_id уже создан" } }
```

> **Когда повторять безопасно.** При `429`, `500`, `503`, `idempotency_in_progress` и сетевых ошибках — **с тем же `Idempotency-Key`**: дубликата не будет.

## Запрос и доступ

| HTTP | code | Причина и что делать |
| --- | --- | --- |
| 400 | `bad_json`, `bad_body` | Тело не JSON, лишние поля или сумма числом вместо строки — исправить запрос |
| 400 | `bad_idempotency_key` | Нет ключа или неверный формат: 8–128 печатных ASCII, не начинается с `d:` |
| 400 | `bad_query` | Неверные параметры списка |
| 401 | `unauthorized` | Подпись, время, nonce или ключ — см. [CP-HMAC](https://coinetic.money/ru/docs/authentication/) |
| 403 | `merchant_suspended` | Мерчант приостановлен — свяжитесь с поддержкой |
| 403 | `merchant_not_approved` | Подключение не завершено или заявка на рассмотрении — завершите мастер в кабинете |
| 403 | `billing_suspended` | Не оплачен счёт на комиссию — оплатите в кабинете, «Биллинг»; приостановка снимется сразу |
| 404 | `not_found` | Счёта нет или он чужой |
| 413 | `body_too_large` | Тело больше лимита — уменьшите `metadata` |
| 429 | `rate_limited` | Слишком много запросов — повторите с экспоненциальной паузой |
| 500 | `internal` | Внутренняя ошибка — повторите с тем же `Idempotency-Key` |

## Счета и идемпотентность

| HTTP | code | Причина и что делать |
| --- | --- | --- |
| 409 | `duplicate_order` | `order_id` уже использован — новый, например `ORDER-1001-2` |
| 409 | `idempotency_conflict` | Тот же ключ с другим телом |
| 409 | `idempotency_in_progress` | Первый запрос ещё выполняется — повторить через 1–2 с |
| 409 | `invoice_not_payable` | Счёт истёк или закрыт — создать новый |
| 422 | `invalid_order_id`, `invalid_price_amount`, `invalid_price_currency`, `invalid_return_url`, `invalid_expires_in_seconds`, `invalid_metadata` | Поле не прошло проверку — текст подсказывает правило |
| 422 | `invalid_allowed_assets` | Ни один актив из списка недоступен — в тексте причина по каждому |
| 422 | `no_assets` | Нет ни одного доступного актива — проверьте кошельки и активы в кабинете |
| 422 | `amount_too_small` | Сумма меньше минимума всех доступных активов |

## Выбор валюты на странице оплаты

Эти ошибки обрабатывает страница оплаты — вашему серверу они встречаются, только если вы вызываете `select` сами.

| HTTP | code | Причина |
| --- | --- | --- |
| 409 | `asset_locked` | Смена валюты после платежа |
| 409 | `wallet_not_configured` | Нет действующего кошелька приёма этой сети |
| 409 | `wallet_changed`, `address_conflict` | Повторить выбор |
| 422 | `asset_not_allowed` | Актива нет в счёте или он больше не разрешён |
| 503 | `rate_unavailable` | Нет подтверждённого курса — предложите стейблкоин |
| 503 | `network_unavailable` | Приём в сети временно недоступен — выбрать другую |

## Возвраты

| HTTP | code | Причина |
| --- | --- | --- |
| 403 | `merchant_inactive` | Магазин приостановлен или ключ отозван |
| 409 | `invoice_not_paid` | У счёта не выбран актив — возвращать нечего |
| 409 | `nothing_to_refund` | Всё уже возвращено или запрошено |
| 409 | `too_many_refunds` | 20 открытых заявок по счёту |
| 409 | `refund_executor` | Возврат исполняет платформа, а не вы |
| 409 | `invoice_status_changed` | Статус счёта изменился после заявки — повторить с `"ack_status_change": true` |
| 422 | `amount_exceeds_refundable` | Сумма больше доступной — уменьшить или `"full"` |
| 422 | `invalid_amount`, `invalid_address`, `invalid_tx_hash` | Поле не прошло проверку |
