Бонусы, промокоды и накопительные скидки в интернет-магазине: какие механики бывают и как связать их с 1С и кассой
Короткий ответ: в интернет-магазине обычно работают пять механик — бонусные баллы, кэшбэк баллами, накопительная скидка по уровням, промокоды и подарок к заказу. Чтобы программа не съедала прибыль, заранее записывают, какие скидки складываются, а какие нет, и ставят нижнюю границу цены. Если у вас есть розница, баланс баллов должен храниться в одном месте — в 1С или в сервисе лояльности, — а сайт и касса читать его оттуда. Оплату баллами отражают в чеке как скидку, а при возврате деньгами отдают только реально оплаченную сумму.
| Механика | Как работает | Кому подходит | Типичная ошибка |
|---|---|---|---|
| Бонусные баллы | За покупку начисляются баллы, ими можно оплатить часть следующего заказа | Магазинам с повторными покупками: косметика, зоотовары, продукты, расходники | Баллы списываются на товары, где маржа уже съедена акцией |
| Кэшбэк баллами | Процент от оплаченной суммы возвращается баллами после получения заказа | Тем, кто хочет простое правило «вернём 5 % баллами» | Начисление в момент оплаты, а не после срока возврата |
| Накопительная скидка и уровни | Скидка растёт от суммы покупок за период: 3 %, 5 %, 7 % | Одежда, обувь, товары для дома, B2B-клиенты | Уровень считают по всем заказам, включая отменённые и возвращённые |
| Промокод | Код даёт скидку суммой, процентом, бесплатную доставку или подарок | Рекламные кампании, блогеры, рассылки, извинения за сбой | Код без лимитов и сроков уходит на сайты-агрегаторы купонов |
| Подарок к заказу | При сумме корзины от порога в заказ добавляется товар за 0 | Магазинам с остатками пробников и сопутствующих товаров | Подарок не уходит со склада и не появляется в документах |
| Персональная цена | Покупатель видит в каталоге свою цену или скидку после входа | Оптовым клиентам и постоянным партнёрам | Цена на сайте расходится с ценой в 1С |
Какие механики бывают и чем они отличаются?
Механики различаются тем, когда покупатель получает выгоду: сразу в этом заказе (промокод, подарок, персональная цена) или в следующем (баллы, кэшбэк, уровень). Первые помогают закрыть покупку, вторые — вернуть покупателя. Начинать стоит с одной-двух, а не со всех сразу.
Короткая подсказка по выбору. Если покупают часто и недорого — баллы или кэшбэк: покупатель видит, что у него «лежит» на счёте, и возвращается потратить. Если чек крупный и покупки редкие — шубы, мебель, техника — баллы копятся годами и не работают; уместнее промокод на первый заказ или подарок к покупке. Если клиенты оптовые и постоянные — персональная цена после входа в кабинет. Так устроен кейс «Зелёная дорога»: оптовые покупатели входят в кабинет партнёра и видят прайс со своей скидкой.
Как не продать товар в минус, когда скидки складываются?
Нужно правило сложения и нижняя граница цены. Правило сложения отвечает, что применяется вместе: акция, промокод, уровень, баллы. Нижняя граница — сумма, ниже которой позиция не опускается ни при каком сочетании. Обе вещи проверяет сервер при каждом пересчёте корзины, а не браузер покупателя.
Без этого происходит предсказуемое: товар уже в акции −30 %, покупатель вводит промокод блогера на −15 %, применяет накопительную скидку 5 % и закрывает половину остатка баллами. По отдельности каждое правило выглядело разумным, вместе они дают продажу ниже закупки. Рабочие варианты ограничений:
- Порядок применения. Сначала акционная цена, потом промокод, потом уровень, потом баллы. Каждое следующее считается от уже уменьшенной суммы, а не от исходной цены.
- Запрет сложения по типам. Промокод не действует на товары со скидкой; баллы не списываются на позиции из распродажи.
- Предел оплаты баллами. Например, не больше 20–30 % от стоимости заказа после остальных скидок.
- Минимальная цена позиции. Цена, ниже которой товар не опускается. Её удобнее хранить рядом с закупочной ценой — в 1С или в админке.
- Исключённые товары и категории. Новинки, товары под заказ, подарочные сертификаты.
Важно, чтобы покупатель видел, почему скидка не применилась: понятное «Промокод не действует на товары со скидкой» вместо молчаливого нуля. Иначе он уйдёт с вопросом в поддержку или вовсе из корзины.
Как сделать промокоды, чтобы их не растащили?
У каждого промокода должны быть срок, лимит использований, минимальная сумма заказа и область действия. Для массовых кампаний — отдельный код на канал, для персональных — одноразовый код на покупателя. Проверка кода, суммы и лимита идёт на сервере, а в отчёте видно, сколько заказов и какую выручку дал каждый код.
Какие злоупотребления встречаются чаще всего и как от них закрываются:
- Код «первого заказа» используют десятки раз. Привязывайте его к номеру телефона или почте и проверяйте, были ли у этого контакта заказы. Новый аккаунт на ту же карту и адрес — повод пометить заказ для ручной проверки, а не автоматически отказать.
- Код блогера утекает на сайты купонов. Задайте лимит использований и срок, а в отчёте сравнивайте заказы по коду с охватом публикации — резкий рост видно сразу.
- Перебор кодов. Короткие предсказуемые коды вроде SALE10 подбирают вручную. Для персональных выдавайте длинные случайные коды и ограничьте число неверных попыток с одного адреса.
- Код применён, товар возвращён, код снова активен. Решите заранее: одноразовый код после отмены заказа либо возвращается покупателю, либо сгорает. Оба варианта честные, если описаны в условиях.
- Подмена суммы в браузере. Скидку и итог считает сервер; то, что пришло из формы, — только пожелание покупателя. В магазине AleksFurs промокод и итог заказа проверяет сервер, а в панели магазина для промокодов есть отдельный раздел.
Чем кэшбэк баллами отличается от накопительной скидки?
Кэшбэк — это баллы на счёте, которые покупатель тратит, когда захочет. Накопительная скидка — процент, который применяется к каждому следующему заказу автоматически. Для магазина разница в обязательствах: баллы висят как будущая скидка, уровень — постоянное уменьшение цены.
Что заложить в любую из этих механик:
- Момент начисления. Баллы и сумма для уровня учитываются, когда заказ получен и прошёл срок, в который покупатель может от него отказаться, — а не в момент оплаты. Иначе возвраты превращаются в бесплатные баллы.
- Срок жизни баллов. Сгорающие баллы — понятный повод напомнить о себе письмом или сообщением. Предупреждайте заранее и показывайте дату сгорания в кабинете.
- Период для уровня. «Сумма покупок за 12 месяцев» честнее, чем «за всё время»: уровень не застывает навсегда у покупателя, который пропал.
- Курс балла. Проще всего «1 балл = 1 рубль скидки». Сложные курсы вроде «10 баллов = 3 рубля» покупатели пересчитывают с трудом и меньше ими пользуются.
- Что видит покупатель. Баланс в шапке после входа, сколько баллов придёт за этот заказ — в корзине, история начислений и списаний — в кабинете.
Как сделать один баланс для сайта и розничной точки?
Один баланс получается, только если он хранится в одном месте, а сайт и касса читают и меняют его там. Две независимые копии — на сайте и в рознице — неизбежно расходятся: покупатель потратил баллы в магазине, а на сайте они всё ещё есть. Сверка вручную раз в неделю этот разрыв не закрывает.
На практике это выглядит так. Покупатель входит на сайт по номеру телефона, сайт по этому номеру находит его карту и спрашивает у источника баланс. При оформлении заказа сайт резервирует баллы, после оплаты — подтверждает списание, при отмене — снимает резерв. На кассе тот же номер или код карты, та же база. Если источник недоступен, сайт не должен угадывать баланс: заказ оформляется без баллов, а покупателю честно пишут, что оплатить ими сейчас нельзя.
| Где живёт баланс | Когда подходит | Что делает сайт | Риск |
|---|---|---|---|
| В 1С, где уже работает бонусная программа розницы | Есть точки продаж и бонусы уже ведутся в учётной системе | Запрашивает баланс и отправляет начисления и списания в 1С | Если 1С недоступна, сайт должен уметь подождать или отключить оплату баллами |
| В облачном сервисе лояльности | Касса уже подключена к сервису, а сайт нужно добавить | Работает через API сервиса | Лимиты и стоимость API по тарифу сервиса, правила ограничены его настройками |
| В базе самого магазина | Розницы нет или она не участвует в программе | Сам считает, хранит и показывает баланс; итоги передаёт в 1С | Если позже появится розница, придётся выбирать один источник и переносить историю |
Где хранить баланс: в 1С, в сервисе лояльности или на сайте?
Там, где он уже ведётся. Если бонусы розницы считает 1С — сайт подключается к 1С. Если касса работает с облачным сервисом лояльности — к его API. Если розницы нет, баланс проще держать в базе магазина и передавать итоги в учёт. Ниже — три варианта и их ограничения.
Отдельно про обмен с 1С. Типовой обмен сайта с 1С рассчитан на товары, цены, остатки и заказы — как у AleksFurs, где он идёт по протоколу CommerceML 2.08. Баланс баллов конкретного покупателя нужен в момент оформления, а не раз в час, поэтому для него мы делаем отдельный запрос к 1С или сервису лояльности. Как устроен основной обмен и сколько он стоит, разобрано в статье про магазин с обменом 1С, а если вы ещё выбираете учётную систему — в сравнении МойСклад или 1С.
Как пробить в чеке оплату баллами?
ФНС считает бонусы скидкой: в чеке указывают цену с учётом списанных баллов, а количество баллов и их стоимостный эквивалент можно указать дополнительно. Если баллами оплачено всё, цена и стоимость позиции — ноль. Сайт должен передавать в кассу уже уменьшенные цены по каждой строке.
Позиция изложена в письме ФНС от 30.04.2021 № АБ-4-20/6093 (изложение на 1С:ИТС). Пример из разбора на 1С:ИТС: товар за 100 руб., баллами списано 30 руб. — в теге цены и стоимости позиции стоит 70 руб., и эти 70 руб. проходят как оплата картой или наличными. При списании баллами 100 % цена, стоимость и сумма встречным предоставлением в чеке равны нулю.
Что это значит для разработки:
- скидку от промокода или баллов нужно распределить по строкам заказа, а не вычесть одной суммой из итога: в чеке каждая позиция идёт со своей ценой;
- при распределении появляются копейки — правило округления согласуйте с бухгалтером, чтобы сумма строк сходилась с оплатой;
- доставка — отдельная строка; распространяется ли на неё промокод, решаете вы и записываете в условия;
- подарок к заказу — тоже строка чека, с нулевой ценой, и тоже движение по складу.
Общие требования к онлайн-кассе и данным для чека мы разбирали в статье о приёме оплаты и 54-ФЗ. Настройки признаков расчёта и ставок под ваш налоговый режим утверждает бухгалтер — разработчик их реализует, но не выбирает.
Что делать с баллами и промокодом при возврате?
Деньгами возвращают ту сумму, которую покупатель заплатил по чеку, — то есть уже за вычетом баллов и промокода. Списанные баллы обычно возвращают на счёт, а начисленные за этот заказ снимают. Если товаров несколько, возврат одной позиции пересчитывается по той скидке, что пришлась именно на неё.
Тонкие места, которые стоит описать в условиях программы и запрограммировать до запуска:
- Баллы уже потрачены. Покупатель получил баллы за заказ, потратил их на следующий, а первый вернул. Варианты: увести баланс в минус и гасить будущими начислениями или удержать сумму из возврата. Второй вариант спорный — проще первый.
- Частичный возврат при пороговой акции. «Подарок при заказе от суммы», а покупатель вернул часть и опустился ниже порога. Решите, просите ли вы вернуть подарок, — и напишите об этом в условиях.
- Уровень после возврата. Сумма для уровня уменьшается на возвращённое. Если из-за этого покупатель теряет уровень, понижайте его с ближайшего пересчёта, а не задним числом.
Сам процесс возвратов — заявка, статусы, деньги, склад — разобран в статье о возвратах в интернет-магазине.
Что входит в работу и сколько это стоит?
Промокоды, скидки в карточке и персональные цены — часть админки магазина. Бонусный счёт, уровни и связка баланса с 1С или кассой — отдельный модуль, его объём зависит от механик и источника баланса. Цену называем после брифа и фиксируем в договоре до старта.
Ориентиры из прайса. Интернет-магазин под ключ — от 104 000 ₽ и от 5 дней: каталог, корзина, оплата, доставка, кабинеты покупателей, админка с товарами, ценами, остатками и заказами и одна связка с 1С, CRM или складом. Если магазин уже есть и нужно только связать его баланс с 1С или сервисом лояльности, это тариф интеграций — от 32 000 ₽ и от 2 дней, до двух систем. Подписка на сервис лояльности и доработка конфигурации 1С на её стороне в эти суммы не входят. После запуска правила программы обычно меняют несколько раз — это удобно делать на поддержке, от 7 900 ₽ в месяц.
Чтобы оценка была точной, подготовьте до брифа: какие механики нужны в первой версии, где сейчас ведутся бонусы и скидки, какая касса и учётная система, есть ли розничные точки, и черновик условий программы — хотя бы списком.
Когда своя бонусная программа не нужна?
Не нужна, если покупатель приходит раз в несколько лет, если маржа не выдерживает постоянной скидки или если в магазине пока мало заказов, чтобы видеть эффект. В этих случаях честнее работать ценой, сервисом и промокодами на конкретные кампании.
- Редкие покупки. Мебель, кухни, крупная техника — баллы сгорят раньше, чем ими воспользуются. Уместнее подарок к заказу или скидка на сопутствующий товар.
- Розница уже подключена к сервису лояльности. Если сервис умеет работать с сайтом, своя программа с нуля продублирует то, что у вас уже есть. Нужна только связка.
- Нет ресурса вести программу. Баллы, которые никто не продвигает и не напоминает о них, покупатели не замечают. Без рассылок и понятных условий это просто расходы.
- Нужна только карта в телефоне. Если задача — карта с баллами для кассы, сравните варианты из статьи о приложении лояльности: Wallet, бот или готовый сервис.
Какие ошибки делают при запуске бонусов и промокодов?
Главные ошибки — нет правила сложения скидок, баллы начисляются до окончания срока возврата, баланс ведётся в двух местах, а скидка вычитается из итога одной суммой и ломает чек. Все четыре проще предусмотреть в техзадании, чем исправлять после первых жалоб.
- Условия программы не опубликованы или расходятся с тем, как считает сайт.
- Промокоды без срока и лимита — их находят через полгода на сайтах купонов.
- Скидку считает браузер, а сервер принимает итог без проверки.
- Подарок не списывается со склада — остатки на сайте и в 1С расходятся.
- Нет отчёта по механикам: непонятно, сколько заказов дал каждый промокод и сколько баллов списано.
- Не проверены сценарии «отмена до оплаты», «частичный возврат», «возврат после списания баллов» — их обязательно прогнать на тестовых заказах до запуска.
Чек-лист перед заказом
- Выбраны одна-две механики для первой версии, остальные — в план.
- Записаны порядок применения скидок, запреты на сложение, предел оплаты баллами и минимальная цена.
- Определено, где хранится баланс, и что делает сайт, если источник недоступен.
- Для промокодов есть сроки, лимиты, минимальная сумма и отчёт по каждому коду.
- Бухгалтер согласовал, как скидка распределяется по строкам чека и как округляются копейки.
- Описаны правила возврата баллов и пересчёта уровня.
- Условия программы опубликованы на сайте и совпадают с тем, как считает система.
Короткие ответы на частые вопросы
Можно ли разрешить покупателю применить промокод и баллы в одном заказе?
Можно, если правило сложения записано заранее: например, промокод уменьшает цену, а баллами можно оплатить не больше 20 % от остатка. Без такого правила покупатель найдёт сочетание, при котором товар уходит в минус.
Нужно ли отражать оплату баллами в кассовом чеке?
Да. По позиции ФНС бонусы — это скидка, поэтому в чеке указывается цена с учётом списанных баллов, а количество баллов можно вывести справочно. Точную настройку чека согласуйте с бухгалтером.
Что вернуть покупателю, если заказ был частично оплачен баллами?
Деньгами возвращается сумма, которую покупатель реально заплатил по чеку. Списанные баллы обычно возвращают на бонусный счёт, а начисленные за этот заказ — снимают; это правило стоит заранее описать в условиях программы.
Может ли бонусная программа быть общей для сайта и магазина у дома?
Может, если баланс хранится в одном месте — в 1С, в сервисе лояльности или на сервере магазина, — а сайт и касса читают его оттуда. Два отдельных баланса с ручной сверкой со временем расходятся.
Сколько стоит добавить бонусы в интернет-магазин?
Тариф «Интернет-магазин» начинается от 104 000 ₽ и включает одну связку с 1С, CRM или складом. Бонусную программу как отдельный модуль считаем после брифа: цена зависит от механик и от того, где хранится баланс.
Услуги и кейсы по теме: интернет-магазины · кейс «Зелёная дорога» · цены и сроки
Расскажите, какие скидки и бонусы у вас уже есть в рознице и 1С, — предложим, как перенести их на сайт без двойного учёта.
Рассчитать проект →Оценку срока и цены по брифу делаем бесплатно, обычно отвечаем в течение часа в рабочее время. Типовой договор — посмотреть до оплаты.
