Ошибки
Формат ошибок, полный список кодов и лимиты
Все ответы имеют одну обёртку. Ошибка:
{
"success": false,
"error": {
"code": -1007,
"type": "validation",
"message": "Запрос не прошёл валидацию",
"details": [{ "field": "recipients.0.share", "message": "share must not be less than 1" }]
},
"meta": { "requestId": "8d0c…", "timestamp": "2026-09-25T10:00:00.000Z", "processingTimeMs": 3 }
}messageприходит на языке изAccept-Language(uz,ru,en), его можно показывать пользователю.codeэто стабильный числовой код, ветвите логику по нему, а не по тексту сообщения.meta.requestIdукажите, когда пишете в поддержку. Свойx-request-idможно передать в запросе.
Диапазоны
Каждый модуль занимает свою сотню. Диапазон целиком принадлежит одной теме, поэтому по нему можно группировать обработку, не перечисляя коды по одному.
| Диапазон | Тема |
|---|---|
-1001 … -1009 | Общая валидация: сумма, доли, UUID, ПИНФЛ, ИНН, имя, email, пагинация |
-2001 … -2009 | Комиссия и доли: ставка ниже минимума, дубли получателей, сумма долей не 10000 |
-3001 … -3007 | Списание: статус, отмена, конфликт externalId, параллельное изменение |
-4001 … -4004 | Бизнес: статус, не активен, не найден, ИНН занят |
-5001 … -5006 | Мерчант: статус, не активен, чужой получатель, нет получателя по умолчанию |
-6001 … -6007 | Получатель: не найден, не может получать деньги, нет счёта у провайдера |
-7001 … -7002 | Клиент: неверный externalUserId, не найден |
-8001 … -8008 | Карта: не активна, истекла, недоступна мерчанту, неверная маска |
-9001 … -9009 | Платёжный провайдер: отказ, неверный код, недоступен, Split отклонён |
-10001 … -10003 | Ключ и токен: неверные данные, недействительный токен, ключ отозван |
-11001 … -11005 | Запрос: идемпотентность, авторизация, лимит запросов |
-12001 … -12004 | Фискальный профиль: ИКПУ, код упаковки, ставка НДС |
-14001 … -14005 | Вебхуки: неверный адрес, не настроены, доставка не найдена |
Ещё два диапазона в Partner API не встречаются: -13001 … -13016 это учётные записи админки,
-15001 … -15005 это заявки на подключение с сайта.
Коды, которые встречаются чаще всего
| Код | HTTP | Когда |
|---|---|---|
-1007 | 422 | Ошибка валидации, разбор по полям в details |
-10001 | 401 | Неверный clientId или clientSecret |
-10002 | 401 | Токен недействителен или истёк, получите новый |
-10003 | 401 | API-ключ отозван в админке |
-11001 | 400 | Не передан Idempotency-Key там, где он обязателен |
-11002 | 422 | Тот же Idempotency-Key с другим телом запроса |
-11003 | 409 | Запрос с этим ключом ещё выполняется, повторите позже |
-11005 | 429 | Лимит запросов, повторите через Retry-After секунд |
-2006 | 422 | Сумма долей не равна 10000 базисных пунктов |
-3004 | 409 | externalId уже использован, списание не создано повторно |
-3006 | 422 | Операционный день закрыт, отмена больше невозможна |
-3007 | 409 | Списание изменено параллельно, перечитайте его и повторите |
-6004 | 422 | Получатель не подтверждён и не может получать деньги |
-8004 | 422 | Карта не активна, привязка не подтверждена кодом |
-8006 | 403 | Карта привязана к другому мерчанту |
-9002 | 422 | Банк отклонил карту |
-9004 | 422 | Банк отклонил платёж, причина в failureReason |
-12004 | 422 | У мерчанта нет фискального профиля, чек пробить нечем |
Ответы 5xx безопасно повторять с тем же Idempotency-Key.
Лимиты
| Что | Лимит |
|---|---|
POST /v1/auth/token | 30 в минуту на clientId и 60 в минуту на IP |
POST /v1/cards/{id}/confirm | 10 попыток на карту за 15 минут, сверх общего лимита |
| Остальные методы | 600 в минуту на API-ключ |
При превышении приходит 429 с кодом -11005 и заголовком Retry-After: столько секунд нужно
подождать. Кешируйте токен, он живёт час, получать его перед каждым запросом не нужно.