GH GambleHub

Time-to-Wallet: ключевая метрика

1) Определение и варианты TTW

Time-to-Wallet (TTW) — время от действия пользователя до фактической доступности средств на целевом кошельке/счете. Для iGaming используем два основных вида:
  • TTW₍deposit₎: `клик «Оплатить» → деньги доступны для игры`.
  • Включает UX/3DS, авторизацию у PSP/банка, подтверждение и запись баланса.

TTW₍payout₎: `клик «Вывести» → деньги на внешнем кошельке/банке`.
Включает risk/KYC/SoF проверки, same-method/ND-гейты, оркестрацию коридора, подтверждение у PSP/схемы и постинг у банка/кошелька.

💡 Что считаем «доступностью»: для депозита — баланс в игровом кошельке; для вывода — зачисление в целевой системе (успешный постинг, не «инициировано»).

2) Почему TTW — это P&L-метрика

Конверсия и AR: быстрый депозит ↑ вероятность первой ставки/сессии.
Удержание и доверие: быстрые выводы ↓ churn и тикеты саппорта.
Стоимость: instant-rails часто дороже ⇒ нужен баланс «скорость ↔ цена».
Операционный риск: длинные «хвосты» TTW создают кластеры инцидентов и chargeback-напряжение.

3) Декомпозиция TTW по этапам

3.1. Депозиты

1. UI/Checkout (рендер, валидация, 3DS)

2. PSP Auth (authorize)

3. Capture/Booking (подтверждение, обновление баланса)

4. Fallback/Retry (при soft-decline)

`TTW₍deposit₎ = t_UI + t_3DS + t_auth + t_capture + t_write_balance`

3.2. Выводы

1. Pre-checks (KYC/SoF, ND/same-method, лимиты RG/AML)

2. Risk decision (авто/ручное)

3. Payout orchestration (выбор коридора: SEPA Instant / PIX / Faster Payments / RTP / push-to-card / A2A / e-wallet)

4. PSP API (initiate → accepted)

5. Network/Banks (clearing/posting)

6. Reconcile & Notify (подтверждение пользователю)

`TTW₍payout₎ = t_precheck + t_risk + t_initiation + t_network + t_posting + t_notify`

4) SLA и целевые уровни

Депозит p95: ≤ 10–20 сек (кошельки/one-tap), ≤ 30–60 сек (карты с 3DS).

Вывод p95:
  • Instant rails (SEPA Instant/PIX/FPS/RTP, push-to-wallet/card): ≤ 15–30 мин.
  • Стандартные A2A/SEPA Credit: T+0/Т+1 banking (часы/сутки).
  • Международные SWIFT: 1–3 банковских дня.
  • p99 важно держать в коммуникациях (ETA-диапазоны), чтобы управлять ожиданиями.

5) Измерение: единицы, окна, сэмплинг

Единица измерения: транзакция (deposit/payout).
Аггрегация: p50/p90/p95/p99, SLA-hit% (доля в ETA), хвосты (tail > 2×p95).
Срезы: метод/коридор/PSP/MID/GEO/BIN-кластеры/время суток/канал.
Исключаем: отмененные/дупликаты (идемпотентность), ручные паузы по запросу игрока.

6) Модель данных (минимум)

sql payments. timeline (
tx_id PK, kind -- DEPOSIT    PAYOUT,
user_id, method, corridor, provider, mid, iso2, currency, amount_minor BIGINT,
t_ui_start TIMESTAMP, t_3ds_start TIMESTAMP, t_3ds_end TIMESTAMP,
t_auth_req TIMESTAMP, t_auth_ok TIMESTAMP,
t_capture_ok TIMESTAMP,     -- депозиты t_precheck_start TIMESTAMP, t_precheck_ok TIMESTAMP, -- выводы t_risk_start TIMESTAMP, t_risk_ok TIMESTAMP,
t_payout_initiated TIMESTAMP, t_network_posted TIMESTAMP,
t_wallet_available TIMESTAMP, -- final availability status TEXT, decline_code TEXT, meta JSONB
);

sla. catalog (
kind, method, corridor, geo, p95_target_seconds INT, p99_target_seconds INT, eta_text TEXT
);

7) SQL-шаблоны расчетов

7.1. TTW по депозитам (общий и по методам)

sql
SELECT method,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (t_wallet_available - t_ui_start))) AS p95_ttw_sec,
PERCENTILE_CONT(0. 99) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (t_wallet_available - t_ui_start))) AS p99_ttw_sec,
COUNT() AS attempts,
100. 0 AVG((EXTRACT(EPOCH FROM (t_wallet_available - t_ui_start)) <= s. p95_target_seconds)::int) AS sla_hit_p95_pct
FROM payments. timeline t
JOIN sla. catalog s ON s. kind='DEPOSIT' AND s. method=t. method
WHERE t. kind='DEPOSIT'
AND t. status='SUCCESS'
AND t. t_ui_start BETWEEN:from AND:to
GROUP BY 1;

7.2. TTW по выводам (коридоры)

sql
SELECT corridor,
PERCENTILE_CONT(0. 50) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (t_wallet_available - t_precheck_start))) AS p50_sec,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (t_wallet_available - t_precheck_start))) AS p95_sec,
PERCENTILE_CONT(0. 99) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (t_wallet_available - t_precheck_start))) AS p99_sec,
100. 0 AVG((EXTRACT(EPOCH FROM (t_wallet_available - t_precheck_start)) <= s. p95_target_seconds)::int) AS sla_hit_p95_pct,
COUNT() AS payouts
FROM payments. timeline t
JOIN sla. catalog s ON s. kind='PAYOUT' AND s. corridor=t. corridor
WHERE t. kind='PAYOUT' AND t. status='SUCCESS'
AND t. t_precheck_start BETWEEN:from AND:to
GROUP BY 1;

7.3. Декомпозиция «узких мест» (выводы)

sql
SELECT corridor,
AVG(EXTRACT(EPOCH FROM (t_precheck_ok - t_precheck_start))) AS precheck_sec,
AVG(EXTRACT(EPOCH FROM (t_risk_ok - t_risk_start)))     AS risk_sec,
AVG(EXTRACT(EPOCH FROM (t_network_posted - t_payout_initiated))) AS network_sec,
AVG(EXTRACT(EPOCH FROM (t_wallet_available - t_network_posted))) AS posting_sec
FROM payments. timeline
WHERE kind='PAYOUT' AND status='SUCCESS'
AND t_precheck_start BETWEEN:from AND:to
GROUP BY 1
ORDER BY network_sec DESC;

7.4. SLA-бричи и «длинные хвосты»

sql
SELECT method, corridor,
COUNT() FILTER (WHERE EXTRACT(EPOCH FROM (t_wallet_available - COALESCE(t_ui_start, t_precheck_start))) > s. p95_target_seconds) AS breaches,
COUNT() AS total,
100. 0 COUNT() FILTER (WHERE EXTRACT(EPOCH FROM (t_wallet_available - COALESCE(t_ui_start, t_precheck_start))) > s. p95_target_seconds)
/ NULLIF(COUNT(),0) AS breach_pct
FROM payments. timeline t
JOIN sla. catalog s ON s. kind=t. kind AND COALESCE(s. method, t. method)=t. method AND COALESCE(s. corridor, t. corridor)=t. corridor
WHERE t. status='SUCCESS' AND (t. t_ui_start BETWEEN:from AND:to OR t. t_precheck_start BETWEEN:from AND:to)
GROUP BY 1,2
ORDER BY breach_pct DESC;

8) Дашборды и KPI

TTW p50/p95/p99 по методам/коридорам/PSP/GEO/BIN-кластеру.
SLA-hit%, tail share (>2×p95), инциденты (аннотации).
Воронка выводов: Requested → Pre-check OK → Risk OK → Initiated → Posted → Available.
Корреляции: TTW vs AR/конверсия депозита, TTW vs тикеты саппорта/CSAT, TTW vs churn.
Стоимость: `cost_per_payout` и `take-rate` по коридору vs выигрыш по TTW.

9) Алерты

p95 breach: p95 TTW по коридору/PSP > SLA X минут.
Tail spike: доля >2×p95 выросла > Y% за Z часов.
Pre-check stall: t_precheck_start есть, t_precheck_ok нет > 15 мин (авто-эскалация).
Risk backlog: t_risk_start есть, t_risk_ok нет > порога (ручная очередь).
Network/posting anomaly: резкий рост `network_sec` по GEO/банку.
Policy drift: события без необходимых тайм-меток.

10) Как ускорять TTW (практики)

Депозиты

One-tap кошельки / Apple Pay / Google Pay, network tokens.
Frictionless 3DS по риску, встраивание 3DS в модалку.
Каскад PSP по BIN/GEO/здоровью, ретраи только на soft-decline.
Prefetch 3DS/ACS каналов, агрессивные тайм-ауты на деградации.

Выводы

Pre-KYC / pre-SoF для частых игроков; pre-approval на суммы ≤ порога.
Инстант-коридоры: SEPA Instant / Faster Payments / RTP / PIX / push-to-card/wallet.
Каскад коридоров: instant → fast A2A → стандартный SEPA/SWIFT (с ETA).
Same-method & ND-логика автоматизированы, без ручных проверок.
Временные окна: избегать cut-off и банковских «узких» часов.
Provider health-feed и авто-failover при росте `network_sec`.

Коммуникации

ETA на старте + прогресс-статусы («Проверка», «Инициировано», «Зачислено»).
Proactive оповещения при задержках > SLA, честные причины и ожидаемое время.

11) Экономика и компромиссы

Instant стоит дороже: сравнивайте uplift CSAT/churn/retention vs bps/fixed.
Хвосты дороже, чем p50: оптимизации на p95 дают больший P&L-эффект.
Локальные различия: в некоторых GEO «быстрый, но дорогой» канал окупается лучше.

12) Инцидент-плейбуки

1. Рост p95 по конкретному PSP/коридору

Авто-reroute на резервный коридор, снижение лимита по деградирующему.
Коммуникация игрокам с обновленным ETA, тикет в провайдер.

2. Risk backlog (ручные проверки)

Включить pre-approval на суммы ≤ X, перераспределить очередь, временно поднять пороги auto-pass.

3. Bank posting задержки по GEO

Обход с другим банком-корреспондентом/кошельком, временно отключить «медленный» коридор для новых заявок.

4. 3DS/ACS деградация (депозиты)

Форсировать frictionless/alternate DS там, где позволяет риск-политика, или каскад на другого PSP.

13) A/B-тесты вокруг TTW

Instant vs Standard коридор на части трафика (guardrails: CBR bps, cost/payout, CSAT).
Pre-KYC копирайт/флоу, ETA формулировки, порядок методов.
Метрики: TTW p95, SLA-hit%, тикеты/1000 trx, AR/конверсия, churn 7/30.

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

1. Мерьте по этапам и держите тайм-метки в единой схеме.
2. Оптимизируйте p95/p99, а не только медиану.
3. Встраивайте instant-rails там, где экономика сходится.
4. Делайте pre-KYC/SoF/approval для повторяющихся сценариев.
5. Авто-каскадируйте коридоры и PSP, реагируйте на health.
6. Говорите честный ETA и статусы, оповещайте о задержках.
7. SLA храните в каталоге и проверяйте SLA-hit% по каждому срезу.
8. Привяжите TTW к CSAT/тикетам/churn в дашбордах.
9. Пост-инциденты: фиксируйте причины, меняйте правила/пороговые таймеры.
10. Версионируйте схему событий, валидируйте полноту тайм-меток.

15) Чек-лист внедрения

  • Определения TTW для депозитов/выводов, согласованные с продуктом/финансами.
  • Тайм-метки по этапам в `payments.timeline`; SLA-каталог.
  • Дашборды p50/p95/p99, SLA-hit%, хвосты; алерты p95/tails/backlogs.
  • Каскады PSP/коридоров, health-feed и авто-failover.
  • Pre-KYC/SoF и pre-approval политики; ND/same-method автоматизированы.
  • ETA-коммуникации и статус-трекер для пользователя.
  • Экономическая модель «скорость ↔ цена» по коридорам.
  • Плейбуки инцидентов и процесс пост-mortem.
  • A/B-тесты улучшений TTW с guardrails.
  • Регулярный аудит полноты данных и корректности расчетов.

Резюме

Time-to-Wallet — это не просто «скорость вывода». Это сквозная метрика платежного опыта, влияющая на конверсию, удержание и P&L. Измеряйте TTW по этапам, оптимизируйте p95/p99, подключайте instant-rails и каскады, снимайте трение через pre-KYC/approval и автоматизируйте ND/same-method проверки. Сильная телеметрия, честные ETA и готовые плейбуки сделают платежи быстрыми, предсказуемыми и экономически оправданными.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Telegram
@Gamble_GC
Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

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