Подключите оплату Kaspi к своему устройству через API
Если у вас своё устройство или вы сами пишете для него программу — киоск самообслуживания, терминал, касса на планшете, игровой автомат, зарядная станция, любая установка с кнопкой «купить», — оплата Kaspi подключается одним HTTP-запросом. Устройство запрашивает у Qut Pay счёт, выводит QR на экран, клиент сканирует его в Kaspi.kz и платит, устройство получает «оплачено» и выдаёт товар.
Деньги приходят сразу на ваш счёт Kaspi Pay. Qut Pay деньги не держит: он только создаёт счета, следит за статусом и сообщает вам.
Кому подходит
- У устройства есть экран (или планшет рядом) и интернет.
- Программу устройства пишете вы или ваш разработчик, то есть в неё можно добавить HTTP-запрос.
- У вас есть Kaspi Pay на ИП или ТОО.
Для готовых вендинговых автоматов без экрана, которые управляются импульсом или по MDB (вода, кофе, мойка), удобнее поставщики специальных модулей: там задача не в API, а в «железе», которое подключается к плате автомата. Qut Pay не продаёт ни устройства, ни модули, только программный API.
Как это работает
Клиент нажимает «Оплатить»
→ устройство делает POST /invoices
→ на экране QR (действует ≈3 минуты)
→ клиент сканирует в Kaspi.kz
→ Qut Pay переводит счёт в «paid»
→ устройство получает ответ → выдаёт товар
Создание счёта:
POST https://api.qut.kz/api/v1/invoices
X-API-Key: qp_live_…
Idempotency-Key: kiosk7-000154
{ "amount": 500, "externalOrderId": "kiosk7-000154", "description": "Киоск №7, 500 ₸" }
→ { "id": "inv_…", "status": "pending", "qrImageUrl": "https://qut.kz/pay/inv_…/qr.svg", "deepLink": "https://kaspi.kz/pay/…", "expiresAt": "…" }
Устройство выводит картинку qrImageUrl (SVG). Если сканировать QR с экрана неудобно, можно ввести номер клиента и отправить счёт прямо в его приложение Kaspi.kz: "kind": "phone" и customer.phone (сумма — в целых тенге).
Как узнать об оплате
Есть два способа, их можно совмещать:
1. Webhook. Qut Pay отправляет на ваш сервер подписанное (HMAC-SHA256) событие invoice.paid. Если устройства подчиняются одному серверу, сервер даёт устройству команду «выдать». Это самый надёжный путь.
2. Опрос (polling). Если устройство за NAT, на GSM-модеме, без постоянного адреса, входящие запросы оно принять не может. Тогда оно само каждые 2–3 секунды запрашивает GET /invoices/{id} и выдаёт товар, когда status становится paid. После expiresAt экран очищается, при необходимости создаётся новый счёт.
Бывает поздняя оплата: если клиент отсканировал в последнюю секунду, счёт в статусе expired чуть позже становится paid. Программа должна это обработать — выдать товар или вернуть деньги.
Как хранить ключ
- Отдельный API-ключ на каждое устройство (кабинет → Интеграции). Если устройство украли или взломали, вы отключаете только его ключ, остальные продолжают работать.
- У ключа по умолчанию только права
invoices:readиinvoices:write— возвраты запрещены. Не давайте устройству право на возврат. - Если устройств много и они подключены к одному серверу, лучше держать ключ на сервере, а устройство пусть обращается только к нему.
- Передавайте
Idempotency-Key: если связь оборвалась и запрос повторился, второй счёт не создастся.
Несколько точек, несколько кассиров
В кабинете можно подключить несколько кассиров Kaspi и привязать API-ключ к конкретному кассиру. Оплата каждой точки идёт через её кассира, отчёт виден по точкам отдельно. Если записывать номер устройства в externalOrderId и metadata, по любой оплате видно, через какой аппарат она прошла.
Что готово
- REST API и OpenAPI: api.qut.kz/docs
- SDK для Node, PHP, Python; руководство по интеграции: api.qut.kz/docs/guide/integration
- Готовая инструкция для ИИ-агента — Claude, Cursor, ChatGPT сами добавят оплату в код устройства: api.qut.kz/for-ai
- Sandbox: ключ
qp_test_…работает без Kaspi и без реальных денег. Оплата — черезPOST /invoices/{id}/simulate, webhook приходит по-настоящему. Устройство можно полностью проверить ещё до подключения кассира.
Сколько стоит
7 дней бесплатно, отсчёт с первого реального счёта. Дальше от 4 990 ₸ в месяц за 800 счетов. Платформа не берёт процент с платежей; Kaspi удерживает свою комиссию (0,95 % за QR) отдельно, как и без нас. Если устройств много, тариф выбирается по числу счетов: тарифы.
Ограничения, о которых лучше знать заранее
- Интернет обязателен. Счёт создаётся на стороне Kaspi; без связи устройство не покажет QR.
- QR действует ≈3 минуты — это предел Kaspi. Если клиент не успел, создаётся новый счёт.
- Если связь с кассиром Kaspi прервалась (кто-то вошёл в Kaspi Pay с номера кассира), счета не создаются, API возвращает
kaspi_session_expired. Уведомление приходит в Telegram, переподключение — в кабинете. Увидев эту ошибку, устройству стоит показать «Оплата временно недоступна». - Qut Pay — независимый сервис, который работает поверх вашего собственного Kaspi Pay с ролью «Кассир». Мы не аффилированы с АО «Kaspi Bank». Условия и риски, связанные с Kaspi: центр доверия.
Если есть вопросы по схеме вашего устройства — напишите в раздел Поддержка в кабинете или по контактам, вместе решим, что выбрать: webhook или опрос.