Как было
Учёт школа ведёт в 1С:Бухгалтерии для Казахстана, редакция 3.0. Платежи разные: обучение каждый месяц, организационный взнос раз в год, вступительный — один раз. У каждого ученика своя сумма, бывают скидки, около 10% родителей платят частями, кто-то вносит сразу за год. Почти все платят через Kaspi.
- Должники — в отдельной таблице. Отдельный человек вёл Google-таблицу долгов и будущих платежей и сверял её с кабинетом банка. В 1С было видно, сколько родитель заплатил, но не сколько должен был.
- Каждый платёж разбирали руками. Назначение родитель набирал сам на телефоне и путал «обучение» со «взносом». Бухгалтер исправлял это перед загрузкой в 1С.
- Предоплата ломала картину. Оплата за год целиком попадала в один месяц, и бухгалтер вручную делил её по месяцам. Два платежа в одном месяце давали переплату в нём и долг в следующем.
- Родитель не знал точной суммы. Менеджеры напоминали об оплате, а потом отвечали на вопрос, дошли ли деньги.
- Собственнику нужен был отчёт по учебным годам. Деньги за следующий год часто приходят весной текущего, поэтому фильтр по дате платежа не помогает. А отчёт нужен, чтобы обзванивать должников и видеть, кто уже внёс предоплату.
Почему не стали улучшать загрузчик
Раньше мы уже делали для этой школы загрузчик оплат Kaspi из Excel. Первая мысль была доработать его: подставлять год оплаты и счёт авансов. Это сняло бы часть ручной работы, но не главную причину ошибок — назначение платежа, которое пишет родитель.
Когда почти все платят через Kaspi, надёжнее, чтобы банк сам спрашивал у 1С, сколько и за что нужно заплатить.
«Обычно такие интеграции устойчивее и реже ломаются, чем загрузки из Excel. Потому что в Excel главный ломающий фактор — назначение платежа, которое родитель набирает на телефоне, а коварная автозамена правит по-своему»
Обсуждали и другой вариант: выставлять родителям счета в Kaspi и каждый день перевыставлять неоплаченные. В протоколе банка такого нет: долг запрашивает сам родитель по ИИН. Напоминания взяли на себя бесплатные push-уведомления Kaspi, а сумму для них банк берёт из 1С в момент рассылки.
Что сделали
Родитель платит по ИИН ребёнка
Родитель открывает в Kaspi услугу школы и выбирает ИИН ребёнка — Kaspi сам предлагает ИИН его детей, другой можно ввести вручную. Дальше он видит ФИО, класс и долг по каждой услуге и платит за одну или несколько, полностью или частично.
Как проходит платёж
Внутри это веб-сервис в 1С, к которому банк обращается по своему протоколу онлайн-оплаты образовательных услуг. Класс 1С берёт из папки, в которой лежит ученик, услугу — по артикулу. Повтор одного и того же платежа вторую запись не создаёт.
Путь платежа: от приложения Kaspi до погашенного долга
Учёт долгов — рядом с бухгалтерией, а не внутри неё
Сначала хотели вести учебный год прямо в бухгалтерском учёте, чтобы отчёт давала типовая оборотно-сальдовая ведомость. Отказались: подгонять бухгалтерию под управленческий отчёт значит вмешиваться в работу бухгалтера. Ставить ради этого отдельную управленческую конфигурацию тоже не стали — пришлось бы перестраивать весь учёт.
Поэтому в той же базе появился отдельный контур для долгов, а бухгалтерские документы создаются из него автоматически.
Два контура в одной базе 1С:Бухгалтерии
Долги по учебным годам
Бухгалтерия
Если бухгалтер распроведёт или удалит свой документ, долг в отчёте от этого не изменится. Вводить одно и то же дважды не нужно.
С даты начисления родитель видит долг в Kaspi и получает push от банка. Начисления можно один раз завести на весь учебный год — в нужную дату родитель сам увидит долг. Кнопка «Даты + месяц» копирует начисления на следующий месяц, чтобы не править даты в сотнях строк, а будущие суммы внутри года всегда можно поменять.

У сотрудника, который отвечает за оплаты, раньше не было доступа в 1С. Мы сделали ему отдельный профиль: только начисления, отчёт, ученики, услуги и раздел Kaspi.
Банку отвечаем сразу, документы создаём следом
Kaspi ждёт ответа не дольше 15 секунд, а создать за это время несколько документов 1С получается не всегда. Поэтому сервис только записывает платёж и сразу отвечает банку, а документы по расписанию создаёт фоновое задание. Все обращения банка остаются в журнале: если с документами что-то пойдёт не так, их можно пересоздать.

Комиссия банка считается в 1С
Размер комиссии Kaspi по API не передаёт, поэтому раньше она попадала в учёт только с выпиской. Теперь 1С считает её сама и отражает одним документом за день. Ставка и правило округления вынесены в настройки: если банк их поменяет, программу дорабатывать не придётся.
Новые ученики и оплаты из других банков
Новый родитель может оплатить взносы по ссылке ещё до того, как ребёнка завели в 1С. Ученик появится в базе сам, в папке «Новые ученики», — имя и класс потом заполняют вручную: о плательщике банк передаёт только ИИН.
Какие услуги родитель видит, даже когда долга нет (обучение, взносы, лагерь), ответственный за оплаты настраивает сам, без программиста.
Перевод из другого банка тоже гасит долг: бухгалтер создаёт оплату на основании платёжки, а 1С находит ученика по ИИН в назначении. Услугу и год 1С подставляет, только если они однозначны, — иначе деньги «за обучение» могли бы незаметно уйти на другую услугу. Поступления без оплаты отчёт показывает отдельным списком.
С чем столкнулись
Собрать всех участников
«Главная загвоздка была в том, чтобы собрать всех воедино: узнать у Kaspi про API, у хостера сервера — про HTTPS, у бухгалтера — какие документы ему нужны, у ответственного за платежи — как он сейчас ведёт учёт. И придумать, как переложить всё это на логику 1С, чтобы никто не пострадал»
Прототип был готов через три недели. Столько же ушло на то, чтобы открыть банку доступ к базе на сервере школы. Теперь эту часть мы берём на себя с самого начала.
Не провести один платёж дважды
Бухгалтер может по-прежнему загружать отчёт Kaspi, и платёж, который уже пришёл онлайн, не должен задвоиться. Сопоставлять по номеру транзакции не вышло: в онлайн-запросе и в выписке у одного платежа разные номера. Перешли на ИИН, сумму и точное время — и однажды время разошлось на секунду. Специалисты Kaspi подсказали, что в выписке и в запросе время означает разные события.
Сейчас 1С сверяет по каналу оплаты, ИИН, сумме и дню, строго один к одному: даже две одинаковые оплаты одного родителя в один день находят каждая свою пару.
Перед тем как давать банку доступ, мы проверили собственную разработку и покрыли её автотестами, которые прогоняем при каждой доработке.
Чего решение не делает
- Долг обновляется не мгновенно, а в течение минуты. Если запросить его сразу после оплаты, родитель увидит прежнюю сумму. Жалоб на это не было.
- Новых учеников, которые заплатили до того, как их завели в 1С, нужно переименовать и разложить по классам вручную.
- Переводы из других банков онлайн не приходят: их бухгалтер, как и раньше, вносит по выписке.
- Банку нужен доступ к вашей 1С. При переезде базы на другой сервер доступ нужно настроить заново. Если открыть его нельзя совсем, подойдёт загрузчик выписки.
Что получилось
- Родитель видит долг по каждой услуге в Kaspi и платит полностью, частями или вперёд. Если есть долг, раз в месяц Kaspi присылает напоминание.
- Оплата сама находит ученика, услугу и учебный год, бухгалтерские документы создаются автоматически.
- Долги и оплаты по учебным годам видны в одном отчёте. Таблица должников больше не нужна.
- Отчёт Kaspi бухгалтер больше не разбирает — кроме оплат из других банков и возвратов.
- Kaspi стал основным способом, которым школа принимает оплату.

Кому подойдёт
- Школам, детским садам, вузам, колледжам, кружкам и курсам, которые получают регулярные платежи и сверяют их вручную.
- Тем, кому нужно видеть долги по месяцам, семестрам, учебным годам или абонементам, а не по дате платежа.
- Тем, кто ведёт должников в отдельной таблице, потому что в 1С:Бухгалтерии их не видно.