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

Служба доставки

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

Коротко

Курьер выставляет счёт прямо у двери: через Telegram-бота или из вашего курьерского приложения. Клиент достаёт телефон, сканирует QR или подтверждает счёт, пришедший в приложение Kaspi. Деньги идут напрямую на Kaspi-счёт компании, курьер не возит наличные. Номер заказа кладёте в externalOrderId, курьера и маршрут — в metadata, и отчётность собирается сама.

Сценарий

Заказ приняли на сайте или по телефону, оплата — при доставке. Как это было раньше: курьер берёт наличные, не хватает сдачи, в конце дня сдаёт деньги в кассу, часть теряется, отчёт появляется только в конце месяца.

Что нужно: курьер у двери нажимает одну кнопку, клиент платит с телефона, деньги сразу уходят на счёт компании, диспетчер видит оплату заказа в реальном времени.

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

  1. Курьер приехал. Передаёт заказ, подтверждает сумму (она может отличаться, если что-то заменили).
  2. Выставляется счёт. Курьер даёт команду /invoice в Telegram-боте или нажимает «Оплата» в своём приложении. За этим стоит вызов POST /api/v1/invoices.
  3. Клиент платит. Два варианта: курьер показывает QR на экране либо через kind: "phone" счёт приходит push-уведомлением в приложение Kaspi.
  4. Приходит подтверждение. Отправляется вебхук invoice.paid, в приложении курьера заказ становится оплаченным. На практике это занимает несколько секунд.
  5. Курьер отдаёт заказ и едет по следующему адресу.
  6. Диспетчер видит картину. В кабинете или в вашей системе видно, какие заказы на маршруте оплачены.

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

Что делаетМетод
Счёт в момент доставкиPOST /api/v1/invoices
Счета на маршрут заранееPOST /api/v1/invoices/bulk, 1-100
Проверить статусGET /api/v1/invoices/{id}
Клиент отказалсяPOST /api/v1/invoices/{id}/cancel
Товар вернулиPOST /api/v1/invoices/{id}/refund
Узнать об оплатеВебхук invoice.paid

QR или счёт на телефон

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

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

Окно сканирования QR ограничено. Если клиент не отсканировал сразу, окно может закончиться — тогда закрываете старый счёт через cancel и создаёте новый. Точное время берите из поля expiresAt, не зашивайте константу в код.

Номер заказа и метаданные

Если правильно расставить пометки при создании счёта, отчётность соберётся сама:

Если нужна отчётность по курьерам, хватит идентификатора курьера в metadata — при выгрузке CSV группируете по этому полю. Подробнее: Metadata и номер заказа.

Вариант без кода: Telegram-бот

Писать курьеру отдельное приложение необязательно — хватает Telegram-бота. Команды:

КомандаЧто делает
/invoiceСоздаёт счёт
/lastПоказывает последние счета
/todayИтоги за день
/statusСтатус одного счёта
/cancelОтменяет счёт
/supportНаписать в поддержку

Достаточно, чтобы у курьера на телефоне был Telegram. Бот привязывается из кабинета. Подробнее: Команды Telegram-бота.

При небольшом объёме доставок подойдёт и такой вариант: диспетчер создаёт счёт вручную в кабинете и отправляет ссылку курьеру.

Возвраты

Если клиент вскрыл заказ и вернул его, деньги возвращаются через POST /invoices/{id}/refund с телом { amount?, reason? }. Без amount возврат полный, с amount — частичный (например, за одну позицию).

Чтобы не вернуть дважды: если ответ на запрос неизвестен (оборвалась сеть, таймаут), не повторяйте сразу. Сначала прочитайте список возвратов через GET /invoices/{id}. Подробнее: API возвратов.

Право на возврат лучше оставить диспетчеру, а не курьеру: уберите scope refunds:write из ключа, которым пользуются курьеры.

Недоставленный заказ

Клиента нет дома, он не берёт трубку или отказался от заказа. Порядок:

  1. Счёт ещё не создан — делать ничего не нужно, помечаете заказ недоставленным в своей системе.
  2. Счёт создан, но не оплачен — закрываете его через POST /invoices/{id}/cancel. Открытые счета не должны копиться.
  3. Клиент оплатил, а потом отказался — делаете возврат.
  4. Пришла поздняя оплата — это случается. Если деньги придут по счёту cancelled или expired, событие invoice.paid придёт с признаком late: true. Тогда либо доставляете заказ повторно, либо возвращаете деньги. Предусмотрите эту ветку в своей системе: Поздняя оплата.

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

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

Нужно ли курьеру отдельное устройство? Нет. Telegram-бот работает на любом телефоне. Если у вас есть своё приложение, в него добавляется кнопка «Оплата».

Может ли курьер увидеть чужие счета? Если привязать API-ключ к конкретному кассиру, он видит только счета, прошедшие через этого кассира, на остальные вернётся 404.

Деньги приходят на счёт курьера? Нет. Деньги приходят напрямую на Kaspi-счёт компании.

Что делать, если клиент передумал у двери? Если счёт не оплачен, закрываете его через cancel. Если оплачен — делаете возврат.

Можно ли создать счета на весь маршрут заранее? Технически да, через bulk. Но окно сканирования QR ограничено, поэтому счёт лучше создавать в момент доставки.

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

Приём Kaspi для интернет-магазинаПолная схема от корзины до статуса «оплачен»: счёт, страница оплаты, вебхук. Способы без кода для Tilda, WooCommerce и OpenCart, и путь через API для самописного сайта.Команды Telegram-бота: полный справочникВсе команды @QutPayBot — выставить счёт, выручка за день, последние счета, статус, отмена, поддержка. Русские и казахские варианты, работа в группе и какие уведомления приходят.Metadata и номер заказаЧем externalOrderId отличается от metadata, как оба поля возвращаются в вебхуке, что можно класть в metadata и что туда нельзя класть никогда — с конкретными примерами.API возвратов — полный и частичный возвратСправочник по методу POST /invoices/{id}/refund: поля запроса, полный и частичный возврат, ограничение суммы, все коды ошибок, что делать при refund_unknown и какие события приходят после возврата.QR-счёт или счёт по телефону — что выбратьПолное сравнение двух типов счёта: значение kind, что делает покупатель, нужен ли номер, ограничения описания и суммы, срок жизни и таблица сценариев с рекомендацией по каждому.

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

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