Расхождение с кассой

Раздел про заказы на точках, где меню и акции ведёт касса — iiko или R-keeper. Здесь описано, откуда берётся расхождение сумм, что видит гость, что видишь ты и что делать администратору, если гость позвонил.


Главное правило#

Что гость увидел на чекауте — то он и получает. Цена, скидка, промокод, списание баллов, подарок. Нямбот никогда не оформит заказ по сумме, отличной от той, с которой гость согласился.

Поэтому заказ сначала заводится в кассе — и только потом дело доходит до денег. Способ оплаты значения не имеет: наличные, карта при получении или онлайн — порядок один. В кассу уходит ровно та сумма, которую гость оплатил: за то, чего нет в чеке кассы, Нямбот денег не берёт (поэтому на точке с кассой приборы для гостя бесплатные, а платная доставка требует позиции «Доставка» в подключении кассы → Торговые точки).


Как оформляется заказ на кассовой точке#

  1. Гость собирает корзину и видит сумму со всеми скидками;
  2. нажимает «Оформить» — Нямбот заводит заказ в твоей кассе. Заказ приходит неподтверждённым: кухня его пока не готовит;
  3. касса считает заказ по своим программам и отвечает своей суммой;
  4. дальше три варианта.

Так работают iiko и R-keeper (White Server). У R-keeper есть два исключения, где касса узнаёт о заказе только после оплаты: курьерский заказ через r_k Delivery и онлайн-оплата на точке без «Валюты онлайн-оплаты» в подключении кассы. Что бывает, если касса откажет уже после денег, — ниже, в разделе «Касса отказала после оплаты».

Сумма сошлась#

Обычный случай. Гость идёт к оплате, заказ подтверждается и уходит на кухню. Ничего дополнительно делать не нужно.

Касса посчитала иначе#

Гость видит окно с обеими цифрами и разницей:

Заведение посчитало заказ иначе

У заведения — 890 ₽ Мы показывали — 888 ₽ Разница — +2 ₽

Мы ничего не списали. Оформляем по цене заведения?

[Да, 890 ₽] [Отменить заказ]

Гость соглашается — сумма заказа становится равной кассовой, по ней он и платит. Отказывается — заказ в кассе снимается, кухня его не видела, деньги не списаны.

Окно спрашивает о любой разнице — в обе стороны и хоть на копейку. Оплатить мимо окна нельзя: пока гость не ответил, оплата не начнётся, а повторное «Оформить» покажет то же окно.

Касса не ответила или отказала#

Если касса не ответила вовремя, Нямбот снимает недоехавший заказ, а гость видит: «Не получилось подтвердить заказ у заведения. Деньги мы не списали — попробуй ещё раз». Если касса ответила отказом (например, у R-keeper цена блюда не совпала с прейскурантом кассы): «Заведение не приняло заказ. Деньги мы не списали — повтор не поможет: собери корзину заново или позвони в заведение». Деньги не списываются ни в каком случае.


Заказ в кассе появился, а оплаты нет#

Это не сбой, а тот самый порядок: касса принимает заказ до денег. Пока гость платит, заказ лежит у тебя неподтверждённым.

Что видит кассир iiko на экране кассы:

  • жёлтый, «Подтвердить» / «Неподтв.» — заказ ещё не оплачен. Готовить его не нужно, кухня его и не видит;
  • синий, «Пора готовить» — заказ оформлен и оплачен, можно работать.

Отдельно ничего снимать не надо. Неоплаченный заказ уходит сам:

  • гость нажал «назад» на форме оплаты ЮKassa;
  • гость закрыл приложение и оформил новый заказ в той же точке — чтобы у тебя не висело два одинаковых;
  • гость просто исчез — через 15 минут.

Пятнадцать минут — не запас на всякий случай: столько живёт сама ссылка на оплату. Раньше снимать нельзя, иначе мы уберём заказ, который гость вот-вот дожмёт в приложении банка.

⚠️ Во всех трёх случаях Нямбот сначала спрашивает эквайринг (ЮKassa или Яндекс.Пэй), что с платежом:

  • оплачен — заказ не снимается, а оформляется как оплаченный;
  • ждёт оплаты (гость как раз подтверждает платёж в банке) или эквайринг не ответил — заказ не трогается;
  • отменён, не прошёл или платежа не было вовсе — заказ снимается: сначала в кассе, потом у Нямбота. Если касса снять не дала, заказ остаётся и у Нямбота — чтобы у тебя с кассой не разошлось.

Баллы и промокод, которые гость потратил на снятый заказ, возвращаются ему. Денег не было — задачи на возврат нет.

Если жёлтый заказ висит дольше 15 минут#

Значит эквайринг ещё не ответил «отменён» — платёж ждёт гостя или ответа нет вовсе, — и заказ намеренно не тронут: снять заказ, за который гость как раз платит, хуже, чем оставить лишнюю строку. Такой заказ снимется на одной из следующих проверок. Если он висит часами — напиши нам, это уже про связь с эквайрингом.


Касса отказала после оплаты#

Бывает у R-keeper в двух случаях из раздела выше, где касса узнаёт о заказе только после оплаты, и когда касса снимает заказ, пока гость платил. Нямбот такой отказ не проглатывает:

  • заказ отменяется у Нямбота, в истории — причина;
  • баллы и промокод возвращаются гостю;
  • при онлайн-оплате заводится задача на возврат с причиной «Касса не приняла заказ»: плитка «Ждут возврата», тревога команде, письмо тебе. Деньги возвращаешь ты кнопкой в СРМ → Возвраты;
  • гость сразу получает сообщение в бот: «Заказ отменён: заведение не смогло его принять», при онлайн-оплате — «Оплату — N ₽ — вернём на ту же карту, с которой прошла оплата». На экране заказа в мини-приложении — «Заведение не смогло принять заказ».

Подробнее — R-keeper: заказы и оплата.


История заказа: кто что сделал#

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

  • заказ создан, подтверждён, готовится, выдан;
  • гость согласился с ценой кассы — и обе суммы, которые он видел;
  • сумма приведена к цене кассы — если наш расчёт разошёлся с кассой, а гость видел ровно сумму кассы (см. «Поправка кассы» ниже);
  • заказ снят — с причиной: гость отказался от оплаты, оформил новый заказ, оплата не поступила или касса не приняла заказ.

Если снял не человек, а сам Нямбот — в истории так и написано, вместе с причиной. По этой ленте разбирается любой спор: видно, что именно видел гость, на что он согласился и почему заказ изменился.


«Поправка кассы» в деталях заказа#

В разборе суммы заказа (Заказы → Из чего сложилась сумма) может быть строка «Поправка кассы: +N ₽» или «−N ₽». Подсказка к ней: «Касса посчитала заказ иначе, чем Нямбот. Гость видел и оплатил сумму кассы».

Откуда она берётся. Касса назвала свою сумму, и заказ приведён к ней — гость согласился в окне или видел ровно сумму кассы. Строки разбора (позиции, скидки, доставка, приборы) показывают расчёт Нямбота, а разница с итогом — это и есть поправка. Поэтому разбор всегда сходится с суммой, которую гость заплатил.

  • Это не скидка: за что именно касса посчитала иначе, строка не говорит. Смотри на акции кассы — раздел «Почему суммы вообще расходятся» ниже.
  • Строка есть только у заказов, приведённых к кассе. У обычного заказа разбор сходится без неё.
  • Гость видит ту же строку как «Поправка заведения» — в мини-приложении и в сообщениях бота. Сотрудники в «Команде» и в уведомлениях видят «Поправка кассы».

Почему суммы вообще расходятся#

Расхождение — это не поломка Нямбота и не ошибка гостя. Оно означает, что настройки в кассе разошлись с тем, что видит гость на витрине. Частые причины:

  • акция закончилась или началась между тем, как гость собрал корзину, и тем, как нажал «Оформить»;
  • скидка в кассе изменена — процент, условия или список блюд. Витрина догоняет такие правки в течение часа: Нямбот раз в час проверяет, не менялись ли программы кассы, и обновляет скидки на блюдах, если менялись;
  • баллы гостя изменились — он потратил их в другом заказе;
  • подарочная программа перестала выполняться из-за изменения состава.

⚠️ А вот цены прейскуранта расхождения не дают. iiko считает заказ по тем ценам, которые прислал Нямбот, и своих не подставляет: если цену изменили в кассе, а меню в Нямботе не синхронизировали, заказ уйдёт по старой цене — суммы сойдутся, но заведение недополучит разницу. R-keeper такой заказ отбивает целиком — гость видит «Заведение не приняло заказ». В обоих случаях это лечится синхронизацией меню, а не этим механизмом.

Единичное расхождение — обычное дело. Систематические расхождения означают, что настройки кассы и витрины разъехались, и это стоит разобрать.


Что видно тебе в СРМ#

В таблице заказов#

Появляются два столбца:

  • Цена кассы — сумма, которую назвала касса;
  • Разница — на сколько она отличается от показанной гостю. Плюс означает, что касса посчитала дороже.

Оба пустые, если расхождения не было.

В фильтре статусов есть пункт «Сумма изменилась» — он оставляет в списке заказы, где гость согласился на изменившийся итог. Тот же фильтр ставит щелчок по плитке «Сумма изменилась» в полоске метрик над таблицей: там же видно, сколько таких заказов за выбранный период.

В карточке заказа#

Карточка «Расхождение с кассой»: обе суммы («Показали гостю» и «Касса посчитала»), разница, что именно разошлось — скидка, баллы, подарок или состав, — а также что гость выбрал и в какое время.

Точка без кассы. Итог может измениться и там — например, акция закончилась, пока гость оформлял заказ. Тогда карточка называется «Сумма заказа изменилась», суммы подписаны «Показали гостю» и «Итог заказа», пропавшие подарки — строкой «Подарки, которых не стало: …», а внизу — «Гость увидел обе суммы и согласился на итог заказа». Слова «касса» в ней нет.

Неоформленные заказы#

Вкладка рядом с таблицей заказов. Сюда попадают попытки, которые не стали заказами: гость отказался от цены кассы, закрыл мини-апп, не ответив, или касса не подтвердила заказ.

Вкладка важнее, чем кажется. В обычной таблице заказов видны только те расхождения, с которыми гость согласился. Случаи, из-за которых гость ушёл, там не появятся никогда — а именно они и стоят тебе выручки.

Сколько их за выбранный период, видно сразу: плитка «Неоформленные» в полоске метрик над таблицей. Щелчок по ней открывает эту вкладку.

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

Плитка считается по торговой точке и периоду и не подчиняется фильтру статусов над таблицей: у неоформленного заказа нет ни статуса, ни способа оплаты.


Что видит администратор в «Команде»#

Администратор видит обе суммы и разницу — этого хватает, чтобы ответить гостю по делу и передать владельцу. Разбор причин остаётся за владельцем: у него полная картина по всем точкам.

Ему же доступны сегодняшние попытки по своей точке с поиском по телефону и по номеру заказа. Номер у гостя обычно есть: он приходит уведомлением бота и виден в «Моих заказах». Но бывает и наоборот — гость закрыл мини-апп и номера не запомнил, — поэтому телефон работает всегда.

Если гость позвонил#

Разбираться в причинах расхождения — не задача администратора. Его задача — принять звонок и не оставить гостя без ответа.

Как отвечать:

  1. найти попытку по номеру заказа, если гость его называет, или по телефону;
  2. подтвердить, что видит её: «Да, вижу вашу попытку заказа в 20:15»;
  3. сказать, что разберётся: «Уточню по кассе и свяжемся с вами сегодня или завтра, объясним причину»;
  4. если гость готов заказать сейчас — принять заказ голосом обычным порядком.

Чего делать не нужно: объяснять причину расхождения на месте и называть технические подробности. Причину разбирает владелец — у него есть полная картина.


Что делать владельцу с расхождениями#

  1. открой карточку заказа или экран неоформленных и посмотри, что именно разошлось — скидка, баллы, подарок или состав;
  2. сверь настройку в кассе с тем, что показывает витрина: чаще всего дело в акции, которую изменили в кассе. Условие зеркала Нямбот подтягивает из кассы сам на ближайшей сверке, а у акции появляется метка «Кампания изменилась»;
  3. если расхождения повторяются на одной и той же акции — открой её в разделе «Маркетинг»: у зеркала, заведённого вручную, условие поправь сам, у зеркала из кампании кассы проверь саму кампанию в iikoCard;
  4. если расхождения пошли сразу по всем заказам точки — проверь связь с кассой в разделе «Интеграции».