Bonus engine — второй по сложности модуль после wallet. Ошибки в wagering = direct P&L leak и bonus hunter paradise.

Типы
- Deposit match
- Freebet / freespin
- Cashback
- Loyalty points
Wagering
- Multiplier × bonus amount
- Game contribution % (slots 100%, live 10%)
- Max bet cap while active bonus
Lifecycle
grant → active → wagering → completed/forfeited/expired

Anti-abuse
- One bonus per household/device fingerprint
- Stacking rules
- Withdraw block until wager done
Чеклист
- Simulate edge cases in spreadsheet
- Separate bonus_wallet in ledger
- CRM segment targeting
Тест-кейсы bonus
- Partial wager then forfeit
- Max bet exceeded while bonus active
- Stacking two deposit bonuses — запрещено
- Freebet win → real money vs bonus money
P&L контроль
Dashboard: bonus cost / GGR по сегментам и кампаниям. Если cost >15% GGR — ужесточайте max bet, contribution live games и antifraud на grant, а не только wagering multiplier.
Wagering на live vs slots
Slots 100% contribution, live casino 10%, sports 50% — типичная сетка, но настраивается per campaign. Max bet 5% от bonus while active — защита от bonus hunter с high-variance slots.
Freebet: win идёт в bonus или real — policy в terms; engine должен писать отдельную ledger operation, иначе CRM и support не объяснят баланс игроку.
CRM и сегменты
Bonus grant только через campaign engine с eligibility rules (segment, country, deposit history). Ручные начисления — admin с audit log и dual approval для сумм выше порога.
Проверка bonus rules
- Spreadsheet: grant → wager → complete/forfeit на 10 edge cases
- Отдельный bonus_wallet в ledger
- Max bet и contribution % в unit tests
- Dashboard bonus cost / GGR по кампаниям