Касса и программа лояльности: что едет в кассу и обратно
Чек знает, что человек взял, на сколько и когда. Программа лояльности знает, кто он и как с ним разговаривать. Пока эти две половины живут врозь, обе бесполезны. Разбираем, что именно едет из кассы и что возвращается обратно, как это устроено у Axle POS, Gizmo и iiko и что происходит, когда касса на час отключается.
Касса знает, что человек взял, на сколько и во сколько ушёл. Программа лояльности знает, кто он, чем интересовался и как с ним разговаривать. Пока эти две половины не связаны, обе почти бесполезны: в кассе безымянные чеки, в лояльности — телефоны без истории. Ниже — что именно едет из кассы к нам и что возвращается обратно, и где эта связка рвётся.
Что значит «касса связана с лояльностью»
Разберём на одном чеке. Гость сел за стол, заказал кальян и два чая, расплатился. Касса закрыла чек на 2 400 ₽.
Без связки у вас два обрывка. В кассе — чек без имени: «стол 4, 2 400 ₽». В программе лояльности — карточка «Иван, +7 900…», у которой последний визит неизвестен.
Со связкой это одна запись. Чек приезжает к нам целиком: строки, количество, скидки, чем платили, когда закрыли. Он ложится в карточку Ивана, и дальше работает всё остальное: сегменты по частоте и сумме, напоминание «не был два месяца», бонусы за визит, статистика по блюдам.
Ключевой момент, который обычно упускают: касса должна узнать гостя в момент оплаты. Иначе чек приедет безымянным и в карточку не ляжет. Узнаёт она по номеру карты, телефону или QR-коду из приложения — и вот ради этого карточка гостя и уезжает в кассу обратным потоком.
Что едет из кассы, а что обратно
| Из кассы к нам | От нас в кассу |
|---|---|
| Чеки: строки, количество, суммы, скидки, способ оплаты, время | Карточка гостя: имя, телефон, дата рождения |
| Себестоимость позиций — из неё считается маржа | Номер карты лояльности — по нему кассир узнаёт человека |
| Меню: папки, позиции, цены, стоп-лист | Согласие на SMS-рассылку |
| Список клиентов кассы — в вашу базу гостей | |
| Кассовые смены: кто работал, сколько пробил |
Обратный поток намеренно узкий. Мы пишем в чужую боевую базу только то, без чего касса не сможет опознать гостя, и только с отдельного разрешения: тумблер «отправлять гостей в кассу» по умолчанию выключен.
Бонусы и уровни в кассу не уезжают. Их считает одна из сторон: либо касса по своей программе, а мы читаем результат из чека, либо мы, а касса просто проводит оплату. Двух программ лояльности одновременно не бывает — это первое, что стоит решить при подключении.

Самая дорогая ошибка в этой связке не техническая. В сентябре мы разбирали жалобу клуба: «подписчики бота не появляются в кассе». Оказалось, у нас в коде не было вызова — гость получал карту в боте, но в кассу не уезжал никогда. За восемь суток ноль отправок. Починили и дослали накопившихся: 787 гостей из 787 получили связку с кассой. До этого кассир каждого из них видел как нового человека.
Как это выглядит у разных касс
Кассы отличаются не интерфейсом, а тем, что они вообще разрешают делать снаружи.
Axle POS — полный двусторонний обмен. Чеки со строками и себестоимостью, меню, клиентская база в обе стороны, мультиточка. Это наша касса, поэтому здесь нет ограничений чужого API.
Gizmo (компьютерные клубы) — чтение плюс создание карточек клиентов. Из клуба приезжают геймеры, чеки с плательщиком и маржой, меню с тайм-пакетами, список «за ПК сейчас». Обратно — только карточка гостя, и то за двумя отдельными тумблерами: запись в боевую базу работающего клуба мы включаем по его явному согласию. Логин геймера не трогаем вообще: его придумывает сам человек, и в сети клубов он у него разный.
iiko — ранний доступ. Подключение готово и обкатано, но на боевом терминале мы его ещё не гоняли, поэтому подключаем вручную вместе с вами. Сегодня это чтение: заказы столов и доставки, меню, себестоимость из калькуляций. Гости собираются лениво — из чеков, потому что массовой выгрузки клиентской базы в облаке iiko нет. Записи в iiko мы не делаем.
Отдельно стоит сказать про iikoCard: у iiko есть собственная программа лояльности, она живёт внутри кассы. Мы её не заменяем и не спорим с ней. Наша часть начинается там, где касса заканчивается: бот, карта в Wallet, сегменты, напоминания, брони, оценки визита.
Себестоимость: почему сумма чека — половина картины
Чек с суммой отвечает на вопрос «сколько выручили». Чек с себестоимостью строк отвечает на вопрос «сколько заработали», а это разные числа и часто разные лидеры.
Поэтому себестоимость мы тянем из кассы строкой, а не считаем по сегодняшней цене: продажа была вчера по вчерашней закупке. Если касса себестоимость не отдаёт, её можно ввести руками у позиции — синхронизация такое значение не перезатирает.
Дальше из этого получается разбор меню по двум осям: что берут часто и что приносит маржу. Мы писали об этом отдельно — какие блюда ставить первыми.
Что будет, если касса отключится
Честная секция, без которой остальное звучит как реклама.
- Касса на час недоступна. Чеки за этот час приедут следующей синхронизацией, ничего не теряется. Но в этот час гость не увидит свой счёт в приложении, а бонусы за визит начислятся с задержкой.
- Кассир не спросил телефон. Чек приедет безымянным и в карточку не ляжет. Никакая интеграция это не чинит — это вопрос к смене, а не к софту.
- Гость есть в кассе и в боте под разными номерами. Получатся две карточки. Мы склеиваем их по телефону автоматически, но если номер в кассе записан с ошибкой, склейка не сработает.
- Касса сама ведёт лояльность. Тогда мы читаем начисления из чека и не считаем свои. Попытка включить обе программы разом даёт двойное начисление — так делать нельзя.
- Обмен идёт по расписанию, а не мгновенно. Меню и чеки подъезжают раз в час; кнопка «Обновить из кассы» есть, но реального времени тут нет ни у кого.
Частые вопросы
Что даёт интеграция кассы с программой лояльности
Историю покупок в карточке гостя. Из неё получается всё остальное: сегменты, напоминания тем, кто перестал ходить, бонусы за реальный чек, разбор меню по марже и честный средний чек по гостю, а не по заведению.
Нужно ли менять кассу ради лояльности
Нет. Смысл интеграции ровно в том, чтобы касса осталась той же. Если вашей кассы в списке нет, остаётся наш открытый API — по нему кассу подключает ваш интегратор.
Как касса узнаёт гостя
По номеру карты лояльности, по телефону или по QR-коду из приложения гостя. Что именно спрашивать, решает касса: одни ищут по карте, другие по телефону. Кассиру достаточно одного действия.
Кто считает бонусы — касса или сервис
Одна из сторон, и это выбирается при подключении. Если программа уже настроена в кассе, мы читаем начисления из чека. Если программы нет, её ведём мы, а касса просто проводит оплату.
Что происходит с гостями, которых завели в кассе руками
Они приезжают в вашу базу гостей при первой же синхронизации — с телефоном, картой и историей чеков. Дубли с теми, кто уже пришёл из бота, склеиваются по телефону.
Работает ли это на нескольких точках
Да. База гостей общая на сеть, чеки помечаются точкой. Меню при этом одно на организацию: эталон берётся с выбранной точки, остальные подключаются к нему.
В демонстрационном заведении чеки настоящие: откройте карточку гостя и посмотрите его историю, а в «Аналитике» — разбор меню по марже из тех же строк чеков.
Попробуйте на своём заведении
Демо-кабинет открывается в один тап через Telegram — без заявки и звонка менеджера: гости, чеки и аналитика на демонстрационных данных. А если заводить своё — 14 дней тарифа «Про» без карты, база и настройки остаются вашими.