> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/guide/polzovateli/loyalnost/skidochnye-programmy.md).

# Скидочные программы

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

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

Путь в панели управления: **«Пользователи» — «Лояльность» — «Скидки»**

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fgit-blob-b5c0e0cdd75d7ece804e562decf58ac65b1b8c0f%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

## Для чего нужны скидочные программы

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

Например:

<table><thead><tr><th width="283.12109375">Клиент</th><th>Скидка</th></tr></thead><tbody><tr><td>Новый клиент</td><td>0%</td></tr><tr><td>Постоянный клиент</td><td>0.3%</td></tr><tr><td>Активный клиент</td><td>0.7%</td></tr><tr><td>VIP-клиент</td><td>1%</td></tr></tbody></table>

Чем выше оборот клиента, тем более выгодные условия он получает.

## Как работает система

Система анализирует успешные обмены клиента и считает их суммарный объём в USD.

После этого определяется текущий уровень клиента внутри скидочной программы.

Каждому уровню соответствует собственная скидка.

Пример:

<table><thead><tr><th width="159.921875">Уровень</th><th width="425.96875">Объём обменов</th><th>Скидка</th></tr></thead><tbody><tr><td>Базовый</td><td>0 – 1 000 USD</td><td>0%</td></tr><tr><td>Silver</td><td>1 000 – 5 000 USD</td><td>0.3%</td></tr><tr><td>Gold</td><td>5 000 – 20 000 USD</td><td>0.7%</td></tr><tr><td>VIP</td><td>от 20 000 USD</td><td>1%</td></tr></tbody></table>

Когда клиент достигает следующего уровня, новая скидка начинает применяться автоматически.

***

## Что считается успешным обменом

В расчёт попадают только успешно завершённые заявки.

Для каждой такой заявки система использует сумму обмена в USD.

Пример:

<table><thead><tr><th width="190.2421875">Заявка</th><th>Сумма</th><th>Статус</th></tr></thead><tbody><tr><td>№1</td><td>500 USD</td><td>Исполнена</td></tr><tr><td>№2</td><td>700 USD</td><td>Исполнена</td></tr><tr><td>№3</td><td>300 USD</td><td>Ожидает оплату</td></tr></tbody></table>

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

Итоговый объём клиента: `500 + 700 = 1 200 USD`

## Глобальные настройки системы

В правом верхнем углу раздела находится кнопка настроек.

Она открывает общие параметры работы скидочной системы.

{% stepper %}
{% step %}

### Отключить скидочную систему

Этот переключатель полностью включает или выключает работу скидок.

<table><thead><tr><th width="184.93359375">Значение</th><th>Результат</th></tr></thead><tbody><tr><td>Включено</td><td>Скидки работают</td></tr><tr><td>Выключено</td><td>Скидки не применяются</td></tr></tbody></table>

Если система отключена:

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

Используйте эту настройку только если нужно временно отключить всю систему лояльности.
{% endstep %}
{% endstepper %}

***

## Программа скидок

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

Например:

* Базовый;
* Silver;
* Gold;
* VIP.

У каждого уровня свои условия получения и свой размер скидки.

## Создание программы

Для создания программы:

1. Откройте раздел **«Пользователи» — «Лояльность» — «Скидки».**
2. Нажмите **«Добавить программу».**
3. Заполните основные параметры.
4. Добавьте уровни программы.
5. Сохраните изменения.

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fgit-blob-cfb4c2cc442fd5d403f7b297b4836536490865a3%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

## Основные настройки программы

{% stepper %}
{% step %}

### Название программы

Название отображается в админке и используется для идентификации программы.

Примеры:

* Стандартная программа скидок
* VIP программа
* Постоянные клиенты
* Premium

Название поддерживает несколько языков.
{% endstep %}

{% step %}

### Описание программы

Описание помогает администраторам понять назначение программы.

Пример:

Базовая накопительная программа скидок для всех клиентов.

Описание можно оставить пустым.
{% endstep %}

{% step %}

### Позиция

Позиция определяет порядок отображения программы.

Чем меньше число, тем выше программа находится в списке.

Рекомендуется использовать:

* 10
* 20
* 30
* 40
  {% endstep %}

{% step %}

### Статус программы

<table><thead><tr><th width="233.79296875">Статус</th><th>Что означает</th></tr></thead><tbody><tr><td>Активна</td><td>Программа участвует в работе</td></tr><tr><td>Отключена</td><td>Программа сохранена, но не используется</td></tr></tbody></table>
{% endstep %}

{% step %}

### Сделать программой по умолчанию

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

Рекомендуется всегда иметь одну активную программу по умолчанию.

Важно:

* программа по умолчанию должна быть активной;
* удалить программу по умолчанию нельзя;
* сначала необходимо назначить другую программу основной.
  {% endstep %}
  {% endstepper %}

***

## Метрика расчёта

Сейчас система использует: **Объём успешных сделок в USD**

Это означает, что уровень определяется на основании суммы успешных обменов пользователя в долларах США.

## Уровни программы

Каждая программа содержит один или несколько уровней.

Уровень определяет:

* диапазон объёма клиента;
* размер скидки;
* срок удержания уровня;
* статус уровня.

## Поля уровня

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fgit-blob-09c4103c2caa03a6d6774a77d5b1ee81a2712d8f%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

{% stepper %}
{% step %}

### Название уровня

Примеры:

* Базовый
* Silver
* Gold
* VIP

Название может отображаться клиенту.
{% endstep %}

{% step %}

### Описание уровня

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

Пример:

Стартовый уровень для всех новых пользователей.
{% endstep %}

{% step %}

### Объём от (USD)

Минимальный объём обменов, необходимый для получения уровня.

Пример: `1000`

Уровень начнёт действовать после достижения оборота 1 000 USD.
{% endstep %}

{% step %}

### Объём до (USD)

Максимальный объём для уровня.

Пример: `5000`

Уровень будет действовать до достижения оборота 5 000 USD.

Если поле оставить пустым, уровень считается последним.

Пример: `20 000 → ∞`

Такой уровень не имеет верхней границы.
{% endstep %}

{% step %}

### Скидка (%)

Размер скидки клиента.

Примеры:

<table><thead><tr><th width="184.4765625">Значение</th><th>Результат</th></tr></thead><tbody><tr><td>0</td><td>Без скидки</td></tr><tr><td>0.3</td><td>Скидка 0.3%</td></tr><tr><td>0.7</td><td>Скидка 0.7%</td></tr><tr><td>1</td><td>Скидка 1%</td></tr></tbody></table>

Скидка всегда указывается положительным числом.
{% endstep %}

{% step %}

### Таймер удержания (дней)

Определяет, сколько дней пользователь сохраняет уровень.

Пример: `30`

После получения уровня запускается таймер на 30 дней.

Если поле оставить пустым, уровень закрепляется без автоматического понижения.
{% endstep %}

{% step %}

### Позиция уровня

Определяет порядок уровней внутри программы.

Рекомендуемый порядок:

* 10
* 20
* 30
* 40

Чем меньше значение, тем выше уровень расположен в списке.
{% endstep %}

{% step %}

### Статус уровня

<table><thead><tr><th width="197.70703125">Статус</th><th>Что означает</th></tr></thead><tbody><tr><td>Активен</td><td>Уровень участвует в расчётах</td></tr><tr><td>Отключён</td><td>Уровень игнорируется системой</td></tr></tbody></table>
{% endstep %}
{% endstepper %}

***

## Правильная структура уровней

Рекомендуется соблюдать следующие правила:

* первый уровень начинается с 0 USD;
* между уровнями нет разрывов;
* последний уровень не имеет верхней границы;
* существует минимум один активный уровень.

Пример:

<table><thead><tr><th>Уровень</th><th width="187.48046875">От</th><th width="138.71484375">До</th><th>Скидка</th></tr></thead><tbody><tr><td>Базовый</td><td>0</td><td>1 000</td><td>0%</td></tr><tr><td>Silver</td><td>1 000</td><td>5 000</td><td>0.3%</td></tr><tr><td>Gold</td><td>5 000</td><td>20 000</td><td>0.7%</td></tr><tr><td>VIP</td><td>20 000</td><td>∞</td><td>1%</td></tr></tbody></table>

## Как считается прогресс пользователя

Система хранит прогресс внутри текущего уровня.

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

Когда клиент достигает границы уровня, происходит повышение.

### Пример повышения

Уровень:

```
Базовый
0 → 1000 USD
```

У клиента уже есть: `900 USD`

Он выполняет новый обмен: `200 USD`

Итог: `900 + 200 = 1100 USD`

Клиент переходит на следующий уровень.

Остаток: `1100 - 1000 = 100 USD` автоматически переносится в новый уровень.

## Таймер удержания уровня

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

Когда таймер заканчивается:

* система проверяет текущие условия;
* пользователь может быть понижен;
* либо цикл уровня будет начат заново.

Пример:

<table><thead><tr><th width="163.515625">Уровень</th><th width="192.06640625">Скидка</th><th>Таймер</th></tr></thead><tbody><tr><td>Gold</td><td>0.7%</td><td>30 дней</td></tr></tbody></table>

Через 30 дней система проверит условия и при необходимости понизит пользователя.

## Как применяется скидка

Скидка применяется при расчёте курса обмена.

Сначала система рассчитывает обычный курс направления:

* курс
* комиссии
* надбавки
* формулы

После этого применяется скидка пользователя.

Таким образом клиент получает более выгодный курс.

## Отключение скидок для отдельного направления

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

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

#### Где находится настройка

Откройте нужное направление обмена:

**«Основное» — «Направления обмена» — «Список направлений»**

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fgit-blob-5c6c956a225fadd2276d5fc3b8a8ed62e9a0bed8%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

Далее:

1. Выберите направление обмена.
2. Нажмите «Изменить».
3. Перейдите в раздел «Дополнительное».
4. Откройте подраздел «Ограничения и проверки».
5. Перейдите на вкладку «Проверки».
6. Найдите параметр: **«Разрешить применение пользовательской скидки?»**

<table><thead><tr><th width="171.95703125">Значение</th><th>Результат</th></tr></thead><tbody><tr><td>Да</td><td>Система будет применять персональную скидку клиента при расчёте курса по этому направлению.</td></tr><tr><td>Нет</td><td>Персональная скидка клиента будет полностью игнорироваться для данного направления.</td></tr></tbody></table>

## Карточка пользователя

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

Путь: **«Пользователи» — «Список пользователей»** — карточка пользователя

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fgit-blob-84fe841de00fb666e08a66fcfee86d319e43356f%2Fimage.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

Там можно увидеть:

* текущую программу;
* текущий уровень;
* текущую скидку;
* прогресс уровня;
* объём обменов;
* следующий уровень;
* предыдущий уровень;
* таймер удержания;
* историю изменений.

## Доступные действия

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fgit-blob-589ac8c31fcb04d4c71dc71a521e71703de4fcd9%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

{% stepper %}
{% step %}

### Обновить

Обновляет информацию о скидках пользователя.
{% endstep %}

{% step %}

### Пересчитать

Заново рассчитывает состояние пользователя на основании успешных заявок.

Используйте после:

* изменения уровней;
* исправления заявок;
* переноса данных.
  {% endstep %}

{% step %}

### Синхронизировать таймер

Проверяет срок удержания уровня и при необходимости выполняет понижение.
{% endstep %}
{% endstepper %}

***

## История скидочной системы

Система автоматически сохраняет историю изменений.

Записываются события:

<table><thead><tr><th width="256.65234375">Событие</th><th>Описание</th></tr></thead><tbody><tr><td>Инициализация</td><td>Пользователь получил скидочную систему</td></tr><tr><td>Повышение уровня</td><td>Переход на уровень выше</td></tr><tr><td>Понижение уровня</td><td>Переход на уровень ниже</td></tr><tr><td>Истёк таймер</td><td>Закончилось удержание уровня</td></tr><tr><td>Пересчёт</td><td>Выполнен ручной пересчёт</td></tr><tr><td>Успешная заявка</td><td>Изменение после успешного обмена</td></tr><tr><td>Откат заявки</td><td>Возврат к предыдущему состоянию</td></tr></tbody></table>

## Пример настройки

Для большинства обменников подойдёт такая схема:

<table><thead><tr><th width="164.94921875">Уровень</th><th width="144.8046875">От</th><th width="167.87890625">До</th><th>Скидка</th></tr></thead><tbody><tr><td>Базовый</td><td>0</td><td>1 000</td><td>0%</td></tr><tr><td>Silver</td><td>1 000</td><td>5 000</td><td>0.3%</td></tr><tr><td>Gold</td><td>5 000</td><td>20 000</td><td>0.7%</td></tr><tr><td>VIP</td><td>20 000</td><td>∞</td><td>1%</td></tr></tbody></table>

Новые пользователи начинают с базового уровня.

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

## Частые ошибки

| Проблема                                       | Что проверить                                |
| ---------------------------------------------- | -------------------------------------------- |
| Скидка не применяется                          | Не отключена ли система глобально            |
| Пользователь не повышается                     | Правильно ли настроены диапазоны             |
| Уровень не меняется                            | Есть ли успешные заявки                      |
| После изменения уровней остались старые данные | Выполнен ли пересчёт                         |
| Пользователь не понижается                     | Не истёк ли таймер удержания                 |
| Скидка равна 0                                 | Проверьте значение скидки уровня             |
| Направление игнорирует скидку                  | Разрешено ли применение скидки в направлении |

## Рекомендуемый порядок настройки

1. Создайте программу скидок.
2. Сделайте её программой по умолчанию.
3. Создайте базовый уровень от 0 USD.
4. Добавьте остальные уровни.
5. Укажите размер скидки для каждого уровня.
6. При необходимости настройте таймеры.
7. Проверьте, что программа активна.
8. Выполните пересчёт пользователей.
9. Проверьте результат на тестовом пользователе.

***

## Коротко

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

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