Документация / Справочник

Коды ошибок

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

JSON
{ "error": { "code": "duplicate_order", "message": "Счёт для этого order_id уже создан" } }
Когда повторять безопасноПри 429, 500, 503, idempotency_in_progress и сетевых ошибках — с тем же Idempotency-Key: дубликата не будет.

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

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

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

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

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

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

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

Возвраты

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