Skip to content

Как работает списание бонусов

Прежде чем приступить к каким-либо расчетам, система проверяет:

  • Включена ли бонусная программа
  • Является ли пользователь участником программы лояльности
  • Есть ли у пользователя доступные бонусные баллы
  • Есть ли хотя бы один товар в корзине, разрешающий списание бонусов Если хотя бы одно условие не выполняется — бонусы не списываются.

Обратите внимание

Лимит на списание бонусов может быть задан вручную с помощью параметра bonuses_amount в API-методе apply или estimate.

Если в запросе указано значение этого параметра, система не сможет списать бонусов больше указанного количества, даже при наличии большего баланса у клиента.

Пример:

На бонусном счёте клиента 500 бонусов, но в запросе передано bonuses_amount = 300. В этом случае в расчётах будет использовано значение 300 бонусов, и списание сверх этого лимита будет недоступно.

Настройки программы лояльности, влияющие на процесс списания

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

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

Исключения - настройка позволяет отключать скидки и бонусы для определённых брендов и категорий. Отдельные товары можно исключить на этапе импорта. Для этого в фиде должны быть заполнены эти поля:

  1. bonuses_accrual_allowed - запрет или разрешение начисления бонусов за покупку товара
  2. bonuses_spending_allowed - запрет или разрешение на списание бонусов при покупке товара
  3. discounts_allowed - запрет или разрешение скидок на товар

Максимальная доля цены товара, доступная для оплаты бонусами - максимальная доля стоимости товара, которую можно оплатить бонусами.

Курс обмена бонусов на валюту - влияет на расчёт количества списываемых бонусов и финальную сумму списания.

Глоссарий

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

Бонусы

Бонусы — внутренняя валюта программы лояльности.

Зачем нужен

Позволяют участнику программы лояльности частично оплатить заказ, снижая итоговую стоимость.

Как рассчитывается

Начальное количество бонусов берётся из бонусного баланса клиента. При проведении расчётов бонусы переводятся в рубли с использованием установленного курса бонусов.

Где используется

Используются для определения суммы денег, которую можно списать с заказа, и при расчёте количества списанных бонусов и фактического списания.


Курс бонусов

Курс бонусов — соотношение одного бонуса к рублю.

Зачем нужен

Позволяет пересчитывать бонусы в рубли и обратно в рамках всех этапов расчёта.

Как рассчитывается

Устанавливается в настройках программы лояльности. Например: 1 бонус = 1 рубль или 1 бонус = 0.5 рубля. Это значение используется во всех пересчётах бонусов в денежные единицы и наоборот.

Где используется

  • В расчёте суммы денег, которую можно списать с заказа
  • В расчёте количества списанных бонусов
  • В определении фактического списания

Цена товара после скидки

Цена товара после скидки — финальная стоимость товара с учётом всех действующих скидок.

Зачем нужен

Используется для расчёта лимита списания бонусов по товару.

Как рассчитывается

Если на товар действует скидка, используется цена после её применения. В противном случае — базовая цена товара.

Где используется

В формуле:
Цена товара после скидки × (Максимальная доля стоимости, разрешённая к оплате бонусами / 100)


Максимальная доля стоимости, разрешённая к оплате бонусами

Максимальная доля стоимости, разрешённая к оплате бонусами — процент от цены товара, который разрешено оплатить бонусами.

Зачем нужен

Ограничивает значение лимита списания бонусов по товару.

Как рассчитывается

Указывается в настройках программы лояльности — может быть задана на уровне конкретного товара, категории или бренда. Например: 20%, 50%.

Где используется

Участвует в формуле расчёта лимита списания бонусов по товару.


Лимит списания бонусов по товару (в денежном выражении)

Лимит списания бонусов по товару — максимальная сумма в рублях, которую можно оплатить бонусами, при расчёте за конкретный товар.

Зачем нужен

Ограничивает списание бонусов для отдельной товарной позиции.

Как рассчитывается

Цена товара после скидки × (Максимальная доля стоимости, разрешённая к оплате бонусами / 100)

Это означает, что из полной стоимости товара сначала вычитается скидка, а затем применяется установленный процент, разрешённый для оплаты бонусами.

Где используется

Служит базой для формирования общего лимита списания бонусов по корзине и для дальнейшего расчёта суммы списания по товару.


Общий лимит списания бонусов по корзине (в денежном выражении)

Общий лимит списания бонусов по корзине — сумма всех лимитов списания бонусов по товарам в корзине в рублях.

Зачем нужен

Определяет максимально возможную сумму, которую можно заплатить бонусами за все товары заказа.

Как рассчитывается

Суммируются значения лимита списания бонусов по товару только для тех товаров, у которых разрешено списание. Таким образом определяется верхняя граница списания бонусов по всему заказу.

Где используется

Участвует в расчёте суммы денег, которую можно списать с заказа и коэффициента списания бонусов.


Сумма денег, которую можно списать с заказа

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

Зачем нужен

Определяет максимально возможную оплату бонусами с учётом баланса клиента и настроек товаров.

Как рассчитывается

min(Бонусы × Курс бонусов, Общий лимит списания бонусов по корзине)

То есть берётся минимальное значение из двух: сколько клиент может потратить (с учётом баланса) и сколько разрешено потратить (по лимитам корзины).

Где используется

Участвует в расчёте коэффициента списания бонусов.


Коэффициент списания бонусов

Коэффициент списания бонусов — переменная, которая вычисляется для расчёта пропорционального списания денег с каждого товара в корзине(в счёт оплаты бонусными баллами)

Зачем нужен

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

Как рассчитывается

Сумма денег, которую можно списать с заказа / Общий лимит списания бонусов по корзине

Если бонусов достаточно, коэффициент равен 1. Если бонусов не хватает — коэффициент будет меньше единицы, и списания будут уменьшены пропорционально.

Где используется

Применяется к каждому лимиту списания бонусов по товару при расчёте суммы списания по товару.


Сумма списания по товару (в денежном выражении)

Сумма списания по товару — сумма в рублях, которая будет списана бонусами за конкретный товар с учётом коэффициента.

Зачем нужен

Определяет базу для перевода списания в бонусы.

Как рассчитывается

Лимит списания бонусов по товару × Коэффициент списания бонусов То есть лимит по товару уменьшается (или остаётся без изменений) в зависимости от того, насколько хватает бонусов по корзине в целом.

Где используется

Используется для расчёта количества списанных бонусов.


Количество списанных бонусов

Количество списанных бонусов — число бонусов, списанное за конкретный товар.

Зачем нужен

Отражает списание с бонусного счёта клиента.

Как рассчитывается

Сумма списания по товару / Курс бонусов
Полученное значение округляется вниз до целого числа. То есть итоговое количество бонусов рассчитывается на основе списания в рублях и текущего курса.

Где используется

Применяется при расчёте фактического списания и вычитается из бонусного баланса.


Фактическое списание (в денежном выражении)

Фактическое списание — сумма в рублях, которая реально будет списана после округления бонусов.

Зачем нужен

Отражает итоговую сумму списания с учётом округлений, используется в транзакциях и отчётах.

Как рассчитывается

Количество списанных бонусов × Курс бонусов Итоговая сумма может быть меньше изначально рассчитанной из-за округления количества бонусов.

Где используется

Для отображения списаний по товарам и в итогах заказа.

Процесс списания бонусов

Обратите внимание

Лимит на списание бонусов может быть задан вручную с помощью параметра bonuses_amount в API-методе apply или estimate.

Если в запросе указано значение этого параметра, система не сможет списать бонусов больше указанного количества, даже при наличии большего баланса у клиента.

Пример:

На бонусном счёте клиента 500 бонусов, но в запросе передано bonuses_amount = 300. В этом случае в расчётах будет использовано значение 300 бонусов, и списание сверх этого лимита будет недоступно.

  1. Проверка условий для списания
    Проверяется:
    • Включена ли бонусная программа
    • Пользователь участвует в программе лояльности
    • У пользователя есть бонусный баланс
    • В корзине есть хотя бы один товар с разрешённым списанием бонусов Если хотя бы одно из условий не выполняется — списание не производится.
  2. Определение лимита списания бонусов по товару
    Для каждого товара, разрешающего списание, определяется максимально допустимая сумма оплаты бонусами в денежном выражении. Она зависит от цены товара после скидки и максимальной доли стоимости, разрешённой к оплате бонусами.
  3. Расчёт общего лимита списания бонусов по корзине
    Складываются лимиты всех товаров, для которых разрешено списание. Полученное значение — верхняя граница для списания бонусов по заказу в рублях.
  4. Определение суммы денег, которую можно списать с заказа
    Рассчитывается с учётом бонусного баланса пользователя и курса бонусов.
    Используется минимальное значение из двух: сколько денег пользователь может списать и какую сумму разрешено списывать по всей корзине.
  5. Вычисление коэффициента списания бонусов
    Если бонусов достаточно, коэффициент равен 1. Будет списана максимальная сумма в пределах лимита. Если бонусов не хватает — коэффициент < 1. С его помощью определяется сколько денег будет списано от цены каждого товара. Списание распределяется между товарами пропорционально.
  6. Определение суммы списания по товару Для каждого товара применяется коэффициент к его лимиту. Итоговое значение определяет, сколько рублей будет заплачено бонусами за товар.
  7. Определение количества списанных бонусов
    На основе рассчитанной суммы списания по товару и курса бонусов определяется, сколько бонусов нужно списать. Значение округляется вниз до целого числа.
  8. Определение фактического списания
    Рассчитывается итоговая сумма в рублях, которая будет отражена в транзакциях, с учётом округления бонусов.

Важно учитывать

Пример расчёта списания бонусов

У клиента: 200 бонусов В данном примере 1 бонус соответствует 0.5 рубля.
Это означает, что с текущим бонусным балансом клиент может оплатить 100 рублей от стоимости заказа.


Настройки программы лояльности

  • Курс бонусов: 1 бонус = 0.5 рубля
  • Максимальная доля стоимости, разрешённая к оплате бонусами: 30%
    Это значение задано на уровне программы лояльности и применяется ко всем товарам, за исключением тех, у которых списание бонусов запрещено (например, индивидуально через поле bonuses_spending_allowed=false в фиде или по категории/бренду заданным в настройках программы лояльности).

Данные из корзины

ТоварБазовая ценаСкидкаЦена товара после скидки
Джинсы3000 рублей1000 рублей2000 рублей
Футболка1500 рублей0 рублей1500 рублей
Кепка800 рублей0 рублей800 рублей

Этап 1. Определение лимита списания бонусов по товару

Для каждого товара определим сумму в рублях, которую можно оплатить бонусами. Она рассчитывается как процент от цены товара после скидки.

  • Джинсы: можно оплатить не более 30% от 2000 рублей, то есть 600 рублей
  • Футболка: не более 30% от 1500 рублей, то есть 450 рублей
  • Кепка: не более 30% от 800 рублей, то есть 240 рублей

Этап 2. Расчёт общего лимита списания бонусов по корзине

Складываем лимиты списания бонусов по всем товарам в корзине:
600 рублей (джинсы) + 450 рублей (футболка) + 240 рублей (кепка) = 1290 рублей


Этап 3. Определение суммы денег, которую можно списать с заказа

Сравниваем:

  • сколько клиент может оплатить с учётом бонусного баланса — это 100 рублей
  • и сколько максимально разрешено потратить бонусами по корзине — это 1290 рублей Берём минимальное значение: 100 рублей

Этап 4. Определение коэффициента списания бонусов

Определим долю от лимитов, которая может быть реально использована. Для этого делим сумму, которую можно списать с заказа (100 рублей), на общий лимит (1290 рублей).
Получается коэффициент примерно 0.0775.


Этап 5. Расчёт суммы списания по товару

Применяем коэффициент списания бонусов к каждому лимиту:

  • Джинсы: 600 рублей × 0.0775 = 46.5 рублей
  • Футболка: 450 рублей × 0.0775 = 34.875 рублей
  • Кепка: 240 рублей × 0.0775 = 18.6 рублей

Этап 6. Определение количества списанных бонусов

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

  • Джинсы: 46.5 / 0.5 = 93 (после округления - 93 бонуса)
  • Футболка: 34.875 / 0.5 = 69.75 (после округления - 69 бонусов)
  • Кепка: 18.6 / 0.5 = 37.2 (после округления - 37 бонусов)

Этап 7. Определение фактического списания

Переводим количество списанных бонусов обратно в рубли:

  • Джинсы: 93 бонуса × 0.5 = 46.5 рублей
  • Футболка: 69 бонусов × 0.5 = 34.5 рублей
  • Кепка: 37 бонусов × 0.5 = 18.5 рублей

Итог

  • Списано бонусов: 93 + 69 + 37 = 199 бонусов
  • Фактическое списание: 46.5 + 34.5 + 18.5 = 99.5 рублей
  • Оставшийся бонусный баланс: 200 – 199 = 1 бонус

Расчёты

В этом разделе собраны все формулы, используемые в механике расчёта списания бонусов.

Лимит списания бонусов по товару

Цена товара после скидки × (Максимальная доля стоимости, разрешённая к оплате бонусами / 100)

Пример

Цена товара после скидки — 2000 Максимальная доля стоимости, разрешённая к оплате бонусами — 25% 2000 × (25 / 100) = 500


Общий лимит списания бонусов по корзине (в денежном выражении)

Общий лимит списания бонусов по корзине = Сумма всех лимитов списания бонусов по товарам в корзине

Пример

Рубашка: лимит 300 рублей Джинсы: лимит 500 рублей Футболка: лимит 200 рублей Шарф: списание запрещено Общий лимит списания бонусов по корзине: 300 + 500 + 200 = 1000 рублей


Сумма денег, которую можно списать с заказа

Сумма денег, которую можно списать с заказа = min(Бонусы × Курс бонусов, Общий лимит списания бонусов по корзине)

Пример

Бонусы: 150 Курс бонусов: 1 бонус = 1 рубль Общий лимит списания бонусов по корзине: 1000 рублей Сумма списания = min(150 × 1, 1000) = 150 рублей


Коэффициент списания бонусов

Коэффициент списания бонусов = Сумма денег, которую можно списать с заказа / Общий лимит списания бонусов по корзине

Пример

Сумма списания: 150 рублей Общий лимит по корзине: 1000 рублей Коэффициент = 150 / 1000 = 0.15


Сумма списания по товару

Сумма списания по товару = Лимит списания бонусов по товару × Коэффициент списания бонусов

Пример

Лимит по джинсам: 500 рублей Коэффициент: 0.15 Списание с товара Джинсы: 500 × 0.15 = 75 рублей


Количество списанных бонусов

Количество списанных бонусов = Сумма списания по товару / Курс бонусов Значение округляется вниз до целого

Пример

Сумма списания по джинсам: 75 рублей Курс: 1 бонус = 1 рубль 75 / 1 = 75 бонусов


Фактическое списание

Фактическое списание = Количество списанных бонусов × Курс бонусов

Пример

Количество списанных бонусов: 75 Курс: 1 бонус = 1 рублей Фактическое списание: 75 рублей


Воспользуйтесь калькулятором бонусов, чтобы получить подробные объяснения на примере.

Калькулятор списания бонусов

Бонусный баланс клиента

Доступно для списания: 100.00 ₽ (200 бонусов × курс 0.5 ₽/бонус)

Настройки программы лояльности

Товары в корзине

2400.00 ₽
1200.00 ₽
640.00 ₽