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

Приём по QR на офлайн-точке

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

Коротко

В магазине, мастерской или кофейне порядок простой: кассир вводит сумму, на экране появляется QR, клиент сканирует его приложением Kaspi, после подтверждения кассир видит на экране «оплачено». QR создаётся заново под каждый платёж — это динамический QR, и окно сканирования у него ограничено. Задать это время самому нельзя, его нужно читать из поля expiresAt.

Сценарий

На кассе очередь. Клиент должен заплатить 4 500 ₸. Терминала нет либо нужен дополнительный способ оплаты помимо него.

Кассир вводит сумму с планшета или компьютера, на экране появляется QR, клиент достаёт телефон и сканирует, видит сумму в приложении Kaspi и подтверждает. Через несколько секунд на экране кассира появляется «Оплачено». Деньги приходят напрямую на Kaspi-счёт магазина.

Схема работы по шагам

  1. Кассир вводит сумму — в кабинете, в собственной кассовой программе или через Telegram-бота.
  2. Создаётся счёт. POST /api/v1/invoices, kind: "qr" (по умолчанию). В ответе приходят qrUrl, qrImageUrl, deepLink, payUrl и expiresAt.
  3. QR показывается на экране — планшет, монитор, чековый принтер, что удобнее.
  4. Клиент сканирует приложением Kaspi, видит сумму, подтверждает.
  5. Статус обновляется. Приходит вебхук invoice.paid, либо ваша кассовая страница опрашивает статус. На практике это занимает несколько секунд после подтверждения.
  6. Кассир видит подтверждение и отдаёт товар.

Какие методы API нужны

Что делаетМетод
Создать QR-счётPOST /api/v1/invoices, kind: "qr"
Счёт на телефонPOST /api/v1/invoices, kind: "phone", customer.phone
Запросить статусGET /api/v1/invoices/{id}
Клиент передумалPOST /api/v1/invoices/{id}/cancel
Товар вернулиPOST /api/v1/invoices/{id}/refund
Узнать об оплатеВебхук invoice.paid

На кассе важно узнать статус быстро, поэтому лучше вести вебхук и опрос одновременно: вебхук как основной канал, а экран кассира раз в несколько секунд запрашивает GET /invoices/{id}. Подробнее: Вебхук или опрос статуса.

Окно сканирования ограничено

Это самая частая проблема на кассе. QR живёт не вечно — у него есть окно сканирования, которое задаёт Kaspi. Когда окно заканчивается, при сканировании клиент видит сообщение «попробуйте позже».

Что делать:

Если клиент не успел отсканировать: QR показывает «попробуйте позже».

Когда QR, а когда счёт на телефон

СитуацияЧто выбрать
Клиент стоит перед кассойQR — быстро, номер телефона не нужен
Клиент не видит экран (окошко, коридор, склад)Счёт на телефон
Камера телефона не работает, экран бликуетСчёт на телефон
Заказ сделали заранее по телефонуСчёт на телефон
У клиента нет приложения KaspiQR или ссылка payUrl
В сумме есть тиыныQR (у счёта на телефон нужны целые тенге)
Описание длинноеQR — 100 символов, счёт на телефон — 60

При отправке счёта на телефон customer.phone должен быть в формате 7XXXXXXXXXX. Полная разница: QR-счёт или счёт по телефону.

Есть ли вариант без кода

Есть, три:

Для полной автоматизации (встраивания в кассовую программу) нужен API.

Если точек несколько

Заведите отдельный API-ключ на каждую точку. Причины:

Месячный лимит остаётся общим для организации и по точкам не делится — при выборе тарифа считайте суммарный объём всех точек. Подробнее: Раздельная отчётность по точкам.

В Kaspi можно подключить и несколько кассиров, каждый — отдельное подключение: Можно ли подключить несколько кассиров.

Особые замечания

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

Можно один раз напечатать QR и наклеить на кассе? Динамический — нет, он создаётся под каждый платёж. Если нужна постоянная наклейка, используйте QR ссылки на оплату, но тогда сумму вводит клиент.

Клиент отсканировал, а у кассира всё ещё «не оплачено». Подтверждение занимает несколько секунд. Если прошло несколько минут, сначала проверьте, что вы не в тестовом режиме: Оплата не приходит покупателю.

Когда приходят деньги? Напрямую на Kaspi-счёт магазина, в момент оплаты. У нас они не задерживаются.

Можно ли использовать двух кассиров на одной точке? Да, каждый кассир — отдельное подключение. Если привязать ключ к кассиру, отчётность тоже разделится.

Что делать, если пропал интернет? Создать счёт не получится. Лучше заранее подготовить резервный канал связи.

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

Ресторан и кафеQR на столе, экран на кассе, счёт на сумму чека, раздельная оплата, учёт по официантам и заказы на доставку — как Qut Pay работает в зале и что учесть заранее.QR-счёт или счёт по телефону — что выбратьПолное сравнение двух типов счёта: значение kind, что делает покупатель, нужен ли номер, ограничения описания и суммы, срок жизни и таблица сценариев с рекомендацией по каждому.Срок жизни счёта — сколько он действует и что делать дальшеЧем определяется окно сканирования QR-счёта и срок счёта в приложении, как правильно читать поле expiresAt, что делать после статуса expired и почему на уже закрытый счёт деньги могут прийти позже.Раздельная отчётность по точкам — свой ключ каждой точкеКак разделить счета, когда точек, филиалов или магазинов несколько: отдельный API-ключ и вебхук на точку, привязка ключа к кассиру, что разделяется, а что остаётся общим, и когда пора заводить отдельную организацию.QR показывает «попробуйте позже»Если покупатель сканирует QR и видит ошибку, чаще всего истекло окно сканирования. Окно задаёт Kaspi, берите его из поля expiresAt. Чем печатный QR отличается от QR на экране.

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

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