Перейти к содержимому
Разделы документации

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

Ошибки и лимиты

Формат ошибок, коды ответов, лимиты запросов

Формат ошибки

Ошибки приходят единым форматом. Поле message - строка или массив строк: при ошибках валидации перечисляются сразу все проблемы тела запроса.

Формат ошибки
{
  "statusCode": 400,
  "message": [
    "Минимальная сумма - 100 копеек (1 рубль)"
  ],
  "error": "Bad Request"
}

Коды ответов

КодКогда возникает
400Тело запроса не прошло валидацию. Причины - в message (массив строк, перечислены все проблемы сразу).
401Заголовок X-Api-Key отсутствует, ключ неверный или магазин не активен.
404Платёж не найден или принадлежит другому магазину.
409Конфликт: платёж с таким orderId уже существует, способ оплаты недоступен магазину, либо отмена невозможна - покупатель уже начал оплату.
429Превышен лимит запросов - повторите позже, лучше с паузой.
5xxВнутренняя ошибка. Результат операции неизвестен - не повторяйте запрос вслепую, сначала проверьте статус (см. ниже).

Сетевые сбои: не создавайте дубли

Если при создании платежа вы получили 5xx или вовсе не дождались ответа, результат неизвестен: платёж мог и создаться, и нет. Правильный порядок:

  1. запросите платёж по своему orderId;
  2. если 404 - платежа нет, создавайте заново с тем же orderId;
  3. если платёж нашёлся - используйте его payUrl, ничего создавать не нужно.

Страховка встроена в API: повторное создание с тем же orderId вернёт 409, так что задвоить платёж не получится даже по ошибке.

Лимиты

До 600 запросов в минуту на каждый метод API; лимит считается по вашему API-ключу. Исключение - GET /v1/balance: у него свой лимит, 60 запросов в минуту. При превышении - 429, окно восстанавливается в течение минуты.

Не опрашивайте статусы платежей в цикле: результат надёжнее и быстрее приходит вебхуком. Поллинг оставьте как страховку.

Не нашли ответ

Напишите нам на support@tabpay.org или в телеграм @tabpaysupport - поможем с интеграцией.