# D-025. Реферальный бонус — дни срока ключа Статус: принято, 21.10.2026. Заменяет денежный бонус из макета (Q-02). Крайние случаи — предложение по Q-19. ## Контекст В макете «месяц в подарок» начисляется обоим деньгами на баланс: 2 499 ₽ у dedicated и 699 ₽ у mass. Для этого нужна сумма в каждой валюте каждого сайта, а бонус уходит в ближайшее списание, в том числе за другой тариф. ## Решение 1. Бонус — дни срока ключа, без денег. Число дней — настройка сайта `referralBonusDays`, по умолчанию 30. 2. Приглашённый получает дни на ключ, который купил заказом, выполнившим условие (первый оплаченный `new_key`). 3. Пригласивший получает дни на свой последний купленный ключ. 4. Условие, проверка самоприглашений и границы сайта прежние ([04-billing.md](../04-billing.md), раздел 11). 5. Начисление — продление без оплаты. Тот же механизм у «Продлить вручную» в админке: запись в коллекции `key-extensions` ([04-billing.md](../04-billing.md), раздел 6.4). ## Крайние случаи (предложение, Q-19) 1. «Месяц» приглашённому — тоже 30 дней: одна настройка на обе стороны. 2. Ключ ещё готовится (`provisioning`) — дни добавятся при выдаче: срок идёт с выдачи. 3. «Последний ключ» — купленный последним среди неистёкших и неотменённых (`provisioning`, `active`, `grace`). Ключ в льготном периоде после начисления снова `active`. 4. У пригласившего такого ключа нет — дни ждут и добавятся к его следующему ключу. 5. Возврат по заказу приглашённого бонус пригласившего не отменяет; злоупотребления разбирает администратор. ## Рассмотренные варианты 1. Деньги на баланс, как в макете: суммы в каждой валюте, бонус уходит на любое списание. 2. Дни на ключ с ближайшей датой окончания: пользователь выбрал последний ключ. ## Последствия 1. В `sites` вместо сумм по валютам `referralBonus` — число дней `referralBonusDays`. Тип движения `referral_bonus` в `ledger-entries` не нужен. 2. Новая коллекция `key-extensions` — продления без оплаты: бонус и компенсация ([03-data-model.md](../03-data-model.md), раздел 5.4). У приглашения — ключи обеих сторон. 3. Кабинет: условия на странице «Реферальная программа» — в днях; в истории платежей строка «Реферальный бонус» показывает «+30 дней» вместо суммы ([07-frontend.md](../07-frontend.md), раздел 7).