Qut Pay Сайт Кабинет База знаний Инструкции Документация API ҚАЗРУС
ГлавнаяБаза знаний → Справочник

Каталог ошибок — что возвращает API и что делать

Обновлено: 2026-09-14 · Версия в Markdown

Коротко

Каждая ошибка приходит в виде { "error": "код", "message": "пояснение" }. HTTP-статус говорит о типе: 4xx — что-то не так в запросе, нужно исправить и повторить; 429 — лимит, нужно подождать; 5xx — временный сбой у нас или на стороне Kaspi, повтор допустим.

Пишите интеграцию всегда по коду error, а не по тексту message: текст может измениться, код — нет.

Авторизация и ключ

КодHTTPЧто случилосьЧто делать
unauthorized401Ключ не передан или недействителенПроверьте заголовок X-API-Key
invalid_api_key422Неверный формат ключаКлюч должен быть qp_live_… или qp_test_…
insufficient_scope403У ключа нет прав на это действиеДобавьте нужный scope ключу в кабинете
forbidden403Ресурс принадлежит не вашей организацииПроверьте, что ключ и счёт из одной организации
account_blocked403Аккаунт заблокированНапишите в поддержку
organization_inactive410Организация в архиве или удаленаНапишите в поддержку
not_sandbox403Действие доступно только в песочницеНапример, симуляция оплаты не работает в боевом режиме

forbidden и invoice_not_found связаны и с привязкой ключа к кассиру: привязанный ключ не видит счета другого кассира. Подробно: Привязка API-ключа к кассиру.

Привязка Kaspi

КодHTTPЧто случилосьЧто делать
kaspi_session_expired409Привязка кассира оборваласьПереподключите: Привязка оборвалась
kaspi_session_not_configured409Кассир ещё не подключёнКабинет → Kaspi → Добавить кассира
connection_not_active400Подключение есть, но неактивноПереподключите этого кассира
connection_not_found404Указанный connection_id не найденПроверьте идентификатор
no_provider409В организации нет ни одного рабочего кассираПодключите кассира или перейдите в песочницу
connection_has_keys409К кассиру привязан API-ключ, удалить нельзяСначала переведите ключ на другого кассира
cashier_number_rejected502Kaspi не показал экран ввода кодаНомер не подходит: Три условия

Создание счёта

КодHTTPЧто случилосьЧто делать
invalid_amount422Сумма отсутствует или не числоПередайте положительное число
amount_too_small422Сумма меньше минимумаУвеличьте сумму
amount_too_large422Сумма больше максимумаУменьшите или разбейте на части
amount_must_be_whole_tenge422Переданы тиыныПередавайте целые тенге, Kaspi не принимает копейки
invalid_phone422Неверный формат телефонаФормат 7XXXXXXXXXX, 11 цифр
invalid_kind422Неизвестный тип счётаqr или phone
invoice_create_failed502Kaspi не принял счётПовторите; если повторяется — в поддержку
invoice_not_found404Счёта нет или он вам не виденПроверьте идентификатор и кассира у ключа

Статус счёта, отмена, возврат

КодHTTPЧто случилосьЧто делать
invoice_not_open409Счёт не открыт: оплачен, истёк или отменёнПрочитайте статус через GET /invoices/{id}
invoice_changed409Статус счёта изменился, пока вы работалиПеречитайте статус и решите заново
invoice_not_refundable409Этот счёт вернуть нельзяПроверьте, оплачен ли он и не вышел ли срок
invalid_refund_amount422Неверная сумма возвратаНе должна превышать оплаченную
refund_failed502Kaspi не выполнил возвратПроверьте, хватает ли средств на счёте Kaspi
refund_unknown502Kaspi не ответил, результат неизвестенНе повторяйте, прочитайте статус счёта
refund_pending_unknown409Результат прошлого возврата ещё неизвестенПодождите, не отправляйте второй раз
refund_state_conflict409Состояние возврата отличается от ожидаемогоПеречитайте статус счёта
cancel_failed502Kaspi не отменил счётПовторите или дождитесь, пока счёт истечёт сам

Если при возврате пришёл refund_unknown или refund_pending_unknown, не повторяйте запрос — можно вернуть деньги дважды. Прочитайте статус счёта и узнайте результат оттуда.

Тариф и лимиты

КодHTTPЧто случилосьЧто делать
tariff_limit_reached429Месячный лимит счетов исчерпанПоднимите тариф или дождитесь нового месяца
tariff_daily_burst429Слишком много счетов за суткиЭто не бизнес-лимит, а защита от зациклившейся интеграции. Проверьте код
tariff_inactive403Тариф неактивен или пробный период закончилсяКабинет → Тариф
rate_limited429Превышена частота запросовСмотрите заголовок Retry-After и повторите
request_rate_limited429Превышена общая частота запросовСнизьте частоту
too_many_attempts429Слишком частые повторы одного действияПодождите минуту

tariff_daily_burst и tariff_limit_reached — разные вещи. Первое суточная защита, обычно это цикл в коде. Второе — месячный лимит вашего тарифа. Подробно: Тарифы и лимиты.

Вебхуки

КодHTTPЧто случилосьЧто делать
invalid_url422Неверный адресУкажите полный адрес
webhook_url_requires_https422HTTP-адрес не принимаетсяИспользуйте HTTPS
webhook_url_requires_domain422IP или адрес без доменаУкажите настоящий домен
webhook_url_tunnel_forbidden422Адрес временного туннеляИспользуйте постоянный домен
invalid_events422Неверный список событийСверьтесь со списком поддерживаемых событий
too_many_endpoints422Превышено число вебхуковУдалите ненужные
endpoint_not_found404Вебхук не найденПроверьте идентификатор
hook_paused410Форм-хук остановленВключите заново в кабинете

Если вебхук не доходит, причина чаще не в коде ошибки: Вебхук не приходит.

Подписки

КодHTTPЧто случилосьЧто делать
invalid_interval422Неверный интервалday, week или month
invalid_every422Неверная кратностьЦелое положительное число
invalid_retry422Неверная лестница повторовНе больше 5 значений, каждое положительное
invalid_misfire422Неверная политика пропускаrun_once или skip
invalid_max_runs422Неверное максимальное число запусковЦелое положительное число
subscription_closed409Подписка завершена или остановленаСоздайте новую
subscription_not_found404Подписка не найденаПроверьте идентификатор

Ссылки на оплату

КодHTTPЧто случилосьЧто делать
slug_taken409Такой адрес уже занятВыберите другое имя
link_invalid410Ссылка недействительнаСоздайте новую
link_paused410Ссылка остановленаВключите заново в кабинете
too_many_links409Превышено число ссылокУдалите ненужные

Вход в кабинет

КодHTTPЧто случилосьЧто делать
invalid_code400Неверный кодВведите заново
challenge_expired410Срок кода истёкЗапросите новый
challenge_used409Код уже использованЗапросите новый
no_channel503Нет канала для отправки кодаНапишите в поддержку
channel_forbidden403Этот канал вам недоступенВыберите другой

Можно ли повторять

ТипПовтор
4xx (422, 400, 403, 404, 409)Нет. Повторять без исправления запроса бессмысленно
429Да, но после времени из Retry-After
502, 503Да, с растущей паузой (например 1, 2, 4, 8 секунд)
refund_unknown, refund_pending_unknownНет. Сначала прочитайте статус счёта

Чтобы повтор при создании счёта не создал дубль, передавайте idempotencyKey: при повторной отправке с тем же ключом вернётся прежний счёт, а не новый.

Вопросы и ответы

Текст ошибки приходит на русском? Поле message приходит на казахском. Пишите интеграцию по коду error.

Пришёл код, которого нет в списке. Смотрите полную спецификацию на api.qut.kz/docs или напишите в поддержку.

Какую ошибку можно показать покупателю? Никакую напрямую. Покажите клиенту «оплата не прошла, попробуйте ещё раз», а технический текст запишите в свой журнал.

Связанные статьи

Привязка кассира оборвалась — как переподключитьСчета внезапно перестали создаваться — значит, сессия Kaspi оборвалась. Переподключение занимает минуту. Причина, шаги и что сделать, чтобы не повторялось.Кассир Kaspi не подключается — почему и что делатьДиагностика по симптому: Kaspi просит пароль или видеоверификацию, спрашивает ИИН, не приходит SMS, не успеваете ввести код. Причина и решение для каждого случая, а также тайминги SMS.Вебхук не приходит — как найти причинуСчёт оплачен, а на ваш сервер уведомление не пришло. С чего начать диагностику, какая причина встречается чаще всего и как проверить её одним запросом.Тарифы и лимиты — полный справочникЦены и месячные лимиты трёх тарифов, суточная защита, разница между tariff_limit_reached и tariff_daily_burst, пробный период и ограничения частоты запросов — всё на одной странице.Привязка API-ключа к кассируКогда в организации несколько проектов или точек, каждый ключ можно привязать к своему кассиру. Что видит привязанный ключ, чего не видит, почему нельзя удалить кассира и как настроить привязку в кабинете.

Остались вопросы? WhatsApp +77788813333 · kazprose@gmail.com
Написать можно и из кабинета: Поддержка.

Qut Pay — независимый сервис, не аффилирован с АО «Kaspi Bank». Kaspi и Kaspi Pay — товарные знаки их правообладателя.