Используем cookie — для входа в кабинет и обезличенной статистики. Подробнее
Магазины

Бонусы, промокоды и накопительные скидки в интернет-магазине: какие механики бывают и как связать их с 1С и кассой

31 октября 2026·12 мин чтения

Короткий ответ: в интернет-магазине обычно работают пять механик — бонусные баллы, кэшбэк баллами, накопительная скидка по уровням, промокоды и подарок к заказу. Чтобы программа не съедала прибыль, заранее записывают, какие скидки складываются, а какие нет, и ставят нижнюю границу цены. Если у вас есть розница, баланс баллов должен храниться в одном месте — в 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. Условия программы не опубликованы или расходятся с тем, как считает сайт.
  2. Промокоды без срока и лимита — их находят через полгода на сайтах купонов.
  3. Скидку считает браузер, а сервер принимает итог без проверки.
  4. Подарок не списывается со склада — остатки на сайте и в 1С расходятся.
  5. Нет отчёта по механикам: непонятно, сколько заказов дал каждый промокод и сколько баллов списано.
  6. Не проверены сценарии «отмена до оплаты», «частичный возврат», «возврат после списания баллов» — их обязательно прогнать на тестовых заказах до запуска.

Чек-лист перед заказом

  • Выбраны одна-две механики для первой версии, остальные — в план.
  • Записаны порядок применения скидок, запреты на сложение, предел оплаты баллами и минимальная цена.
  • Определено, где хранится баланс, и что делает сайт, если источник недоступен.
  • Для промокодов есть сроки, лимиты, минимальная сумма и отчёт по каждому коду.
  • Бухгалтер согласовал, как скидка распределяется по строкам чека и как округляются копейки.
  • Описаны правила возврата баллов и пересчёта уровня.
  • Условия программы опубликованы на сайте и совпадают с тем, как считает система.

Короткие ответы на частые вопросы

Можно ли разрешить покупателю применить промокод и баллы в одном заказе?

Можно, если правило сложения записано заранее: например, промокод уменьшает цену, а баллами можно оплатить не больше 20 % от остатка. Без такого правила покупатель найдёт сочетание, при котором товар уходит в минус.

Нужно ли отражать оплату баллами в кассовом чеке?

Да. По позиции ФНС бонусы — это скидка, поэтому в чеке указывается цена с учётом списанных баллов, а количество баллов можно вывести справочно. Точную настройку чека согласуйте с бухгалтером.

Что вернуть покупателю, если заказ был частично оплачен баллами?

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

Может ли бонусная программа быть общей для сайта и магазина у дома?

Может, если баланс хранится в одном месте — в 1С, в сервисе лояльности или на сервере магазина, — а сайт и касса читают его оттуда. Два отдельных баланса с ручной сверкой со временем расходятся.

Сколько стоит добавить бонусы в интернет-магазин?

Тариф «Интернет-магазин» начинается от 104 000 ₽ и включает одну связку с 1С, CRM или складом. Бонусную программу как отдельный модуль считаем после брифа: цена зависит от механик и от того, где хранится баланс.

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

Рассчитать проект →

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

Канал Roboweb в Telegram
Разборы цен, сроков и условий договора. Без спама и продаж в личку.
Подписаться →

Ещё по теме

Магазины

Интернет-магазин стройматериалов: единицы измерения, расчёт количества, доставка по весу и продажа юрлицам

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

Читать →
Магазины

Интернет-магазин автозапчастей: подбор по VIN и марке, кросс-номера, прайсы поставщиков — как устроен и с чего начать

Как устроен интернет-магазин автозапчастей: откуда берутся данные подбора по VIN, кроссы и аналоги, загрузка прайсов поставщиков, наценки и «под заказ».

Читать →
Магазины

Товарный фид для Яндекс Директа, Яндекс Товаров и ВК Рекламы: что это, как выгружать с сайта и почему его отклоняют

Что такое товарный фид, чем YML отличается от CSV, какие поля требуют Директ, Яндекс Товары и VK Реклама, откуда брать данные и почему фид отклоняют.

Читать →
Обсудим вашу задачу?

Опишите, что нужно — вернёмся с оценкой срока и цены. Обычно отвечаем в течение часа в рабочее время.

Заявка отправлена

Получили — обычно отвечаем в течение часа в рабочее время. Хотите быстрее, продублируйте в WhatsApp.

Продублировать в WhatsApp или позвонить +7 933 177-00-86
Или сразу: +7 933 177-00-86 · Telegram · WhatsApp