GH GambleHub

Net Deposits: розрахунок і контроль

1) Що таке Net Deposits і навіщо вони потрібні

Net Deposits (ND) - це чисті користувацькі вкладення за період після обліку всіх «зворотних» грошових потоків. Метрика критична для:
  • юніт-економіки (кореляція ND з LTV, ARPPU, NGR),
  • відповідальної гри (ліміти, самоконтроль, джерело засобів),
  • ризику та комплаєнсу (AML/санкції, аномалії),
  • операцій (пріоритизація виплат і антиаб'юз бонусів).

Базова ідея

Гравець вніс X (deposits), вивів Y (withdrawals). Все, що залишилося в екосистемі як «реально внесені гроші» гравця, - це і є Net Deposits, скориговані на повернення, чарджбеки, скасування та інші технічні операції.

2) Формули і межі обліку

2. 1. Базова формула (рівень продукту)


ND = Deposits
− Withdrawals − (successful, paid)
− Refunded Deposits
+ Chargeback Debits
− Chargeback Credits
± Reversal Adjustments
Пояснення:
  • Deposits - тільки успішно зараховані (captured/settled). Авторизації без подальшого capture - не рахуємо.
  • Withdrawals - враховуємо лише виплачені (paid/settled). Відхилені/скасовані заявки ND не зменшують.
  • Refunded Deposits - повернення депозиту на те ж джерело (same-method).
  • Chargeback Debits/Credits - чистий ефект диспутів (списання/повернення).
  • Reversal Adjustments - техкорекції (наприклад, повернення з «помилкового» гаманця, сторно дубліката).

2. 2. Розширення обліку

Бонуси і Free Bets: не входять до Deposits; це внутрішні кредити. Однак abuse-сценарії (депозит заради бонусу → миттєвий кеш-аут) повинні знижувати ND через швидкі Withdrawals і/або через antifraud-корекції.
Комісії PSP: за замовчуванням не віднімаються з ND (ND - «гравсько-центрична» метрика). Комісії - в P & L.
Internal Transfer/Cross-Wallet (спорт → казино): ND не змінюється (це рух всередині балансу).
Cancel Withdrawal: скасування не зменшує ND (адже висновок не відбувся).
Promotional Cashout/Manual Credit: грошові кредити оператора не збільшують ND.
Токени/крипто: вважати за фіатним еквівалентом на момент settle (див. мультивалютність).
Partial/Split Payments: ND зростає на суму, яка реально settled.

2. 3. Межі періоду

Варіанти «зрізу» ND:
  • Activity-based (по'settled _ at'транзакції). Рекомендується для фінансової звітності.
  • Request-based (по `created_at`/`requested_at`): годиться для швидкої продуктової аналітики, але не для звірки.

3) Мультивалютність та оцінка курсів

Всі операції маппятся в reporting currency (наприклад, EUR) за курсом на момент settle.
Фіксуйте: `amount_original`, `currency_original`, `fx_rate_at_settle`, `amount_reporting`.
Для крипто: використовуйте середньозважену ціну (VWAP) на вибраному джерелі на'settled _ at'.
Не переоцінювати історичні ND при зміні курсів: зберігайте фактичний FX на момент події.

4) Рольові рівні ND

ND_user - чисті вкладення конкретного гравця.
ND_segment - по країнах, каналах, провайдерам оплати, афіліатам.
ND_cohort - за датами реєстрації/першого депозиту.
ND_platform - загальний ND платформи за період.

5) Політики та винятки

5. 1. Правило same-method & повернення на джерело

Якщо депозит A прийшов через метод M, повернення депозитних коштів бажано робити через M до суми нетто-внесення. Це знижує ризики AML і спірних крос-виплат.

5. 2. Внутрішні коригування

Будь-яке ручне коригування повинно мати reason_code, audit trail і посилання на первинну операцію.
Коригування не повинні маскувати loss-chasing/abuse.

5. 3. Бонусні цикли

Позначайте «bonus-driven ND» (депозит, що активував бонус) прапором. Будуйте звіти ND з/без бонус-пов'язаних депозитів.

6) Подієва модель і схема даних

6. 1. Ключові події

`DEPOSIT_AUTHORIZED`, `DEPOSIT_CAPTURED`, `DEPOSIT_REFUNDED`

`WITHDRAWAL_REQUESTED`, `WITHDRAWAL_PAID`, `WITHDRAWAL_REJECTED`, `WITHDRAWAL_CANCELED`

`CHARGEBACK_DEBITED`, `CHARGEBACK_CREDITED`

`ADJUSTMENT_APPLIED` (тип: REVERSAL, TECH_FIX, FRAUD_CORRECTION и т. п.)

Всі події - ідемпотентні ('idempotency _ key','event _ id'). Підтримуйте exactly-once доставки в DWH через дедуплікацію по'event _ id'.

6. 2. Міні-схема (спрощено)


payments. transactions (
id, user_id, provider, method, type, status,
amount_original, currency_original,
amount_reporting, reporting_currency, fx_rate_at_settle,
requested_at, settled_at, related_tx_id, reason_code, meta
)

types: DEPOSIT    WITHDRAWAL    REFUND    CHARGEBACK_DEBIT    CHARGEBACK_CREDIT    ADJUSTMENT status: PENDING    AUTHORIZED    CAPTURED    PAID    REJECTED    CANCELED    REFUNDED    SETTLED

Підсумки по ND вважаються агрегаціями по'type'і'status'з фільтрами «тільки settled/paid/captured, де застосовується».

7) Контроль якості даних і звірка

7. 1. Звірка з PSP/Acquirer

Щоденна звірка PSP-звітів (settlement files) з вашою'transactions'.
Матчі по'provider _ ref', сумам, датам settle, валютам і fee (для P&L).
Розбіжності → тікети в Ops: “missing capture”, “double refund”, “late presentment”.

7. 2. Антидубль та ідемпотентність

Контроль: унікальність по'( provider, provider_tx_id, type, settle_date)'.
Окремий аудит лог за ручними операціями ('ADJUSTMENT _ APPLIED').

7. 3. Цілісність бізнес-правил

Висновок «PAID» без депозитної історії в обраному методі - червоний прапор.
Близькі за часом'DEPOSIT _ CAPTURED'→'WITHDRAWAL _ PAID'на ту ж суму - сірий прапор (bonus-abuse).

8) Звітність і дашборди

8. 1. Базові KPI

'ND _ total'за період;'ND _ per _ user','ND _ median';

Розкладання ND по країнах, методам, PSP, афіліатам;

'ND _ 7/30/90'за когортами реєстрації;

Cash Conversion Lag: медіана від'DEPOSIT _ CAPTURED'до'WITHDRAWAL _ PAID'.

8. 2. Сегменти ризику

Гравці з «ND≈0» і високим оборотом - кандидати на перевірку джерела коштів.
Швидкий розворот (deposit→withdrawal) <N годин - тригер розслідування.

8. 3. Площини аналітики

Продукт (спорт/казино/live): де ND найбільш «здоровий».
Методи оплати: провали ND при фрод-трафіку на конкретному методі.
Кампанії/бонуси: ND-uplift і пост-ефект відмін.

9) Політики антифроду і відповідальної гри

Ліміти депозитів (daily/weekly/monthly) - у ND-звітах окремою метрикою дотримання.
Velocity-правила: n депозитів> X за Y хвилин + швидкий кеш-аут = блок/мануальна перевірка.
Санкції/PEP/SoF: зростання ND вище порогу → обов'язковий Source of Funds.
Муллокалізація: порівнюйте гео/метод/банківську країну з KYC-країною.
Self-exclusion: ND після виключення має бути строго 0; будь-які спроби - алерт.

10) Процеси і SLO

SLO розрахунку ND-дашборду: T + 1, готовність до 09:00 локального TZ звітної зони.

Інциденти: впустити пріоритет P1, якщо:
  • пропущені settlement-файли PSP,
  • дублікати призводять до невірного ND сегмента,
  • масові розбіжності FX.
  • DRP: репроцесинг ND через re-ingest подій за період з детермінованим порядком.

11) Приклади SQL (шаблони)

💡 Нижче - спрощені приклади для вітрини'dw. transactions_flat' з нормалізованими полями.

11. 1. Розрахунок ND по користувачеві і дню

sql
WITH base AS (
SELECT user_id,
DATE(settled_at) AS d,
SUM(CASE WHEN type='DEPOSIT'     AND status IN ('CAPTURED','SETTLED') THEN amount_reporting ELSE 0 END) AS dep,
SUM(CASE WHEN type='WITHDRAWAL'   AND status='PAID'           THEN amount_reporting ELSE 0 END) AS wd,
SUM(CASE WHEN type='REFUND'     AND status='SETTLED'         THEN amount_reporting ELSE 0 END) AS ref_dep,
SUM(CASE WHEN type='CHARGEBACK_DEBIT'  AND status='SETTLED'        THEN amount_reporting ELSE 0 END) AS cb_deb,
SUM(CASE WHEN type='CHARGEBACK_CREDIT' AND status='SETTLED'        THEN amount_reporting ELSE 0 END) AS cb_cr
FROM dw. transactions_flat
WHERE settled_at >=:from AND settled_at <:to
GROUP BY 1,2
)
SELECT user_id, d,
dep - wd - ref_dep + cb_deb - cb_cr AS nd
FROM base;

11. 2. Прапор швидких розворотів (аб'юз)

sql
SELECT t_dep. user_id, t_dep. id AS dep_id, t_wd. id AS wd_id,
EXTRACT(EPOCH FROM (t_wd. settled_at - t_dep. settled_at))/3600 AS hours_between,
t_dep. amount_reporting, t_wd. amount_reporting
FROM dw. transactions_flat t_dep
JOIN dw. transactions_flat t_wd
ON t_dep. user_id = t_wd. user_id
AND t_wd. type='WITHDRAWAL' AND t_wd. status='PAID'
AND t_wd. amount_reporting BETWEEN t_dep. amount_reporting0. 9 AND t_dep. amount_reporting1. 1
WHERE t_dep. type='DEPOSIT' AND t_dep. status IN ('CAPTURED','SETTLED')
AND t_wd. settled_at - t_dep. settled_at <= INTERVAL '24 hours';

11. 3. Сегментація за методами/PSP

sql
SELECT method, provider,
SUM(CASE WHEN type='DEPOSIT'  AND status IN ('CAPTURED','SETTLED') THEN amount_reporting ELSE 0 END) AS dep,
SUM(CASE WHEN type='WITHDRAWAL' AND status='PAID'          THEN amount_reporting ELSE 0 END) AS wd,
SUM(CASE WHEN type='REFUND'   AND status='SETTLED'         THEN amount_reporting ELSE 0 END) AS ref_dep,
SUM(CASE WHEN type='CHARGEBACK_DEBIT' AND status='SETTLED'     THEN amount_reporting ELSE 0 END) AS cb_deb,
SUM(CASE WHEN type='CHARGEBACK_CREDIT' AND status='SETTLED'     THEN amount_reporting ELSE 0 END) AS cb_cr,
SUM(CASE WHEN type='DEPOSIT'  AND status IN ('CAPTURED','SETTLED') THEN amount_reporting ELSE 0 END)
- SUM(CASE WHEN type='WITHDRAWAL' AND status='PAID'          THEN amount_reporting ELSE 0 END)
- SUM(CASE WHEN type='REFUND'   AND status='SETTLED'         THEN amount_reporting ELSE 0 END)
+ SUM(CASE WHEN type='CHARGEBACK_DEBIT' AND status='SETTLED'     THEN amount_reporting ELSE 0 END)
- SUM(CASE WHEN type='CHARGEBACK_CREDIT' AND status='SETTLED'     THEN amount_reporting ELSE 0 END) AS nd
FROM dw. transactions_flat
WHERE settled_at BETWEEN:from AND:to
GROUP BY 1,2
ORDER BY nd DESC;

12) Алерти і тригери (операційка)

Spike ND↓ на методі: падіння ND> 30% d/d - перевірити PSP-інциденти і блокування.
Spike ND↑ за сегментом: зростання ND> 50% w/w - ймовірний новий афф. Джерело або схема обнала.
ND≈0 при високому обороті - примусова KYC/SoF-перевірка.
Ненормальна частка Refund/Chargeback в ND - аудит ланцюжка «depozit→igra→vyvod».

13) Best practices (коротко)

1. Вважати ND за settle-датами і фіксувати FX на момент settle.
2. Жорстко відокремлювати internal transfer від грошей гравця.
3. Всі ручні правки - з reason_code і аудитом.
4. Антифрод-правила на швидкі розвороти і крос-методи.
5. Два звіти: операційний T + 1 і фінансовий закриваючий (місяць/квартал).
6. Версіонування логіки: ND v1/v2 з міграцією історичних вітрин.

14) Часті питання

Q: Чи враховувати скасовані висновки?
A: Ні, ні. Тільки'WITHDRAWAL _ PAID'зменшує ND.

Q: Що робити з депозитом, який був авторизований, але не захоплений?
A: Не включати в ND. Це не реальні надходження.

Q: Як відображати chargeback після вже зробленого висновку?
A: 'CHARGEBACK _ DEBIT'додасть негативний внесок гравця (по суті, платформа втрачає), ND збільшиться на дебет, але підсумковий фінансовий звіт також повинен показати збиток/витрату по чарджбекам.

Q: Чи потрібно віднімати PSP-комісії з ND?
A: Ні, ND - гравсько-центрична метрика. Комісії - в P & L.

15) Чек-лист впровадження

  • Подієва шина з ідемпотентністю та гарантією доставки
  • Вітрина'transactions _ flat'з уніфікованими типами/статусами
  • FX-нормалізація на settle, зберігання оригіналів
  • Правила mapping PSP-статусів → ваші статуси
  • Щоденна звірка з PSP і алерти на дельти
  • Дашборди ND (загальний, за методами, за сегментами, за когортами)
  • Політики відповідальної гри і SoF-тригери на базі ND
  • Документація формули ND v1 і план еволюції v2

Резюме

Net Deposits - центральна метрика «реальних» грошей гравця в системі. Коректний ND вимагає суворих правил визнання (settle-дати), акуратної мультивалютності, подієвої ідемпотентності, регулярної звірки з PSP і вбудованих антифрод-тригерів. Сформуйте єдиний довідник статусів і типологію операцій - і ND стане надійною опорою як для фінансів, так і для відповідальної монетизації.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.