Коротко
В автошколе и на офлайн-курсах оплата обычно делится на несколько частей, а учеников — десятки. Есть четыре способа: счёт вручную из кабинета (код не нужен), массовое выставление на всю группу, подписка с периодическими счетами на каждого ученика и постоянная ссылка на оплату. Про подписку сразу уточним: она автоматически выставляет счёт, деньги со счёта ученика сами не списываются — каждую оплату ученик подтверждает сам.
Сценарий
Группа стартует 1 сентября, 20 учеников, обучение стоит 180 000 ₸ и делится на три месяца.
- Администратору нужно выставлять каждому ученику счёт раз в месяц — вручную это 60 счетов.
- Нужно видеть, кто заплатил, а кто нет.
- Если кто-то уходит с курса, часть денег приходится возвращать.
- В конце месяца директору нужен отчёт по группам.
Всё это можно вести через собственного кассира Kaspi, без отдельного терминала.
Четыре способа: что когда
| Способ | Нужен ли код | Когда удобно |
|---|---|---|
| Счёт вручную из кабинета | Нет | Мало учеников, каждому в своё время |
| Ссылка на оплату | Нет | В рекламе, в Instagram, на форме записи |
Массовое выставление (bulk) | Да | В начале месяца сразу на всю группу |
| Подписка | Частично | Каждому ученику по расписанию, счёт выходит сам |
Счёт вручную из кабинета — вариант без кода
Самый простой. Заходите в кабинет, открываете раздел Счета и создаёте счёт: сумма, описание («Автошкола, 1-й платёж, сентябрь»), телефон ученика.
Есть две разновидности:
- QR-счёт — на экране показывается QR, ученик сканирует его прямо в кабинете. Можно отправить и ссылку.
- Счёт на телефон — в приложение Kaspi ученика приходит push. Удобно, когда ученика нет на месте, но номер должен быть указан верно.
Разница: QR-счёт или счёт по телефону.
В описание стоит писать группу и период — потом это помогает искать в выгрузке.
Периодическая оплата через подписку
Подписка нужна ученику, который платит за обучение помесячно. Вы ставите расписание (например month, каждое 1-е число), дальше счета выставляются сами.
Важно, не путайте: подписка только выставляет счёт. Деньги со счёта Kaspi ученика сами не списываются — ему приходит счёт, он открывает его и подтверждает. Поэтому не обещайте «автоматическое списание», честнее объяснить ученику: «раз в месяц придёт счёт, вы его подтверждаете».
Настройки:
- Интервал:
day,week,month, кратность черезevery(например раз в две недели). - Лестница повторов
retryDelaysMin— если ученик не оплатил сразу, счёт отправляется повторно. По умолчанию[15, 60, 360]минут, максимум 5 значений. - Когда лестница закончилась, этот запуск отбрасывается, но расписание не останавливается — в следующем месяце счёт выйдет снова. Состояние видно в полях
failedRuns,lastError,lastRunStatus. - Политика пропуска
misfirePolicy:run_once(по умолчанию) илиskip. POST /subscriptions/{id}/resumeс{ catchUp: true }— возобновить приостановленную подписку и сразу отправить пропущенный запуск.
Подробнее: API подписок.
Массовое выставление на группу
Если группа большая, в начале месяца счета на всю группу выставляются одним запросом: POST /api/v1/invoices/bulk, от 1 до 100 счетов за раз.
Каждый элемент проверяется отдельно: если у одного ученика неверно записан телефон, остальные счета создадутся, а этот вернёт ошибку. Сопоставьте строки ответа со своим списком, поправьте проблемные и отправьте повторно.
Чтобы не наплодить дублей, передавайте заголовок Idempotency-Key с устойчивым значением вида «группа + период». Даже если администратор нажмёт кнопку дважды, счета не выставятся второй раз.
Ссылка на оплату
Постоянная ссылка вида qut.kz/p/<slug>. Её можно поставить в профиль Instagram, на кнопку «Записаться» на сайте, в рекламу. Сумма бывает фиксированной и открытой — при открытой ученик сам вводит сумму (например первый взнос).
Платежи по ссылке так же видны в кабинете и в выгрузке. Подробнее: Ссылки на оплату.
Отчётность по группам
Чтобы потом собрать отчёт, пометки нужно расставить в момент создания счёта:
externalOrderId— внутренний номер ученика или строка вида «номер группы / номер ученика».description— текст, который видит ученик; впишите туда название группы и период.metadata— группа, инструктор, филиал, период. Это поле возвращается в вебхуке и удобно для отчётов.
В разделе Счета кабинета фильтруете по периоду и выгружаете CSV. Если филиалов несколько, заведите каждому свой API-ключ — тогда отчётность разделится по источнику.
Особые замечания
- Если ученик уходит, деньги возвращаются через
POST /invoices/{id}/refundполностью или частично. При частичном возврате передайтеamount. - Сумма должна быть в целых тенге для счёта на телефон. Если при делении на три остаются тиыны, добавьте их к последнему платежу.
- Окно сканирования QR ограничено. Ученику лучше отправлять не картинку QR, а ссылку
payUrl— при открытии страница покажет свежий QR. Точное время берите из поляexpiresAt. - Номер кассира виден ученику в уведомлении о счёте. Это нормальная работа Kaspi, поэтому номер лучше завести отдельный.
- Посчитайте месячный лимит. 20 учеников × 3 платежа = 60 счетов, плюс повторные отправки. Выбор тарифа: Какой тариф выбрать.
Вопросы и ответы
Деньги сами спишутся с карты ученика? Нет. Подписка только выставляет счёт, каждую оплату ученик подтверждает сам в приложении Kaspi.
Можно работать без программиста? Да. Счета вручную из кабинета, ссылки на оплату и Telegram-бот работают без кода. Для массового выставления и подписок через API нужен технический человек.
Что будет, если ученик не заплатит? Счёт перейдёт в expired, услуга не оказывается. В подписке счёт отправится повторно по лестнице повторов, затем запуск отбросится, но следующий период всё равно выставится.
Где посмотреть, кто из группы заплатил? В разделе «Счета» фильтруете по периоду и статусу, затем выгружаете CSV.
Можно ли вести несколько филиалов раздельно? Да. Заведите каждому филиалу отдельный API-ключ — в отчётности платежи разделятся по источнику.