GH GambleHub

Velocity-ліміти і анти-аб'юз

1) Що таке velocity і навіщо він потрібен

Velocity-ліміти - це обмеження на частоту і обсяг операцій за задані вікна часу. Мета:
  • знизити фрод і експлуатацію бонусів/промо,
  • захистити платіжну інфраструктуру від «штормів» ретраїв,
  • утримати здорову конверсію, переводячи сумнівні спроби в челендж (3DS/SCA) замість «жорсткої відмови» там, де це можливо.

Velocity-контролі доповнюють скоринг, AVS/CVV, 3DS2/SCA і smart-routing.

2) Які сутності лімітувати (scopes)

Проектуйте ліміти на декількох рівнях одночасно:
  • Платіжні сутності: `card_token` (vault/network), `bin`, `issuer`, `psp_route`.
  • Користувацькі: `account_id`, `kyc_level`, `email/phone`.
  • Технічні: `device_id` (fingerprint/SDK), `ip`, `asn`, `session_id`.
  • Бізнес-контекст: 'bonus _ id','campaign _ id','country','mcc 7995'підтип (депозит/вивід).
  • Фінансові: 'amount _ bucket'( мікро/середні/великі),'currency','payment _ method'.
💡 Принцип: мінімум один персональний і один неперсональний scope (наприклад,'device _ id'+'card _ token') - так ви ловите і мультиаккаунт, і «перельоти» карт.

3) Вікна та лічильники

Fixed window (T = 15m/1h/24h) - просто, але чутливо до кордонів.
Sliding window - точніше, вважає по «ковзаючому» інтервалу.
Leaky bucket/Token bucket - згладжують сплески, задають стійку пропускну здатність.
Комбіновані: burst (короткий сплеск) + sustained (довгий потік).

Приклади наборів:
  • `device_id`: ≤ 3 спроб авторизації за 15 хвилин, ≤ 10 за 24 години.
  • `card_token`: ≤ 2 decline поспіль без 3DS; третій - обов'язковий 3DS.
  • `ip`: ≤ 5 унікальних'card _ token'в 1 годину (інакше - капча/блок).
  • `account_id`: ≤ 2 скасованих депозитів поспіль; далі - кулдаун 1 година.

4) Алгоритми обмежень (коротко)

Token Bucket (дозволяє bursts):
  • Ініціалізуйте'capacity'і'refill _ rate'.
  • Перед кожною спробою «вийміть» 1 токен; якщо токенів немає - challenge/decline.
Leaky Bucket (згладжування):
  • Черга витікає з постійною швидкістю; події переповнюють - throttle.
Exponential backoff + jitter (для ретраїв):
  • 1-й повтор: 2-5 хв → 2-й: 10-20 хв → 3-й: 1-2 год → стоп, або переклад в альтернативний метод.

5) Політики рішень (decisioning)

Класифікуйте результати velocity-перевірок:
  • Allow: низький ризик, в межах порогів.
  • Challenge: перевищили «м'який» поріг → 3DS/SCA/капча/KBA (питання).
  • Throttle: тимчасово обмежити (кулдаун) з прозорим UX.
  • Decline: грубі порушення (масовий перебір карт, бот-пули, бонус-аб'юз).
  • Reroute: зміна PSP/методу (напр., A2A) при сплеску'91/96'у емітента.

Міні-матриця прикладів

'device _ id'спроби ≥ 3 за 15 хв і'cvv = N'≥2 → Decline + капча.
'card _ token'2 soft-decline підряд → 3DS-challenge (обов'язковий).
'ip'≥ 5 унікальних'account _ id'за 30 хв → Throttle 30 хв + KYC-перевірка.
'account _ id'депозит-вивід-депозит за 10 хв (карусель) → Challenge або ліміт за сумою.

6) Velocity для депозитів, ретраїв і висновків

Депозити:
  • Захищайте «мікро-вкидання» (багато невеликих транзакцій): ліміт на кількість і загальний оборот за T.
  • При низці'05 '/' 14 '/' 54'- зупиняйте «перебір» реквізитів, переводьте в 3DS.
Ретраї:
  • Рознесіть CIT і MIT черги. Для MIT використовуйте м'які вікна T + 1/T + 24h.
  • Soft-decline'SCA required'→ негайно 3DS, не паліть спроби.
Висновки:
  • Окремі ліміти на суму/частоту: напр., ≤ 2 висновки/24h та ≤ N за сумою/тиждень.
  • «Сходи» KYC: чим вище перевірка, тим вище ліміти.
  • Детект «circling»: швидкий депозит і миттєвий висновок - manual review/hold.

7) Анти-аб'юз промо і бонусів

Per-campaign caps: 'bonus _ id'≤ X активацій на'device _ id '/' ip '/' payment _ fingerprint'.
«Вилки» (перегін грошей між акаунтами): граф-аналіз загальних карт/IP/пристроїв.
Cool-off windows: після бонус-депозиту - заборона миттєвого виведення, прозорі правила в ToS.
Санкції за рівнями: від тимчасових блокувань до «назавжди», з журналом причин.

8) Архітектура: де жити velocity-правилам

Real-time шлюз (в оркестраторі): рішення ≤ 50-100 мс.
Сховище лічильників: in-memory (Redis/KeyDB) + довготривалі «зведення» (DWH).
Фічестор: єдині вікна/агрегати (15m/1h/24h/7d).
Rule engine + ML скоринг: «safety-net» правила поверх моделі.
Конфіг-прапори: «включити 3DS», «суворіше в регіоні X», «пауза PSP-A».
Ідемпотентність: захист від дублікатів при повторах/таймаутах.

9) Псевдокод правил (ескіз)

pseudo on payment_attempt(ctx):
s = features(ctx) // device/ip/account/bin/score/avs/cvv/history if counter(device, 15m) >= 3 and cvv_fail(device, 15m) >= 2:
return DECLINE(reason="velocity_device_cvv")
if soft_declines(card_token, 1h) >= 2:
return CHALLENGE_3DS()
if uniq_accounts(ip, 30m) >= 5:
return THROTTLE(ttl=30m)
if score > T2 and velocity(account, 1h) > Vmax:
return DECLINE(reason="high_risk_burst")
return ALLOW

10) UX-патерни (не ламаючи конверсію)

Чіткі повідомлення: "Занадто багато спроб за короткий час. Спробуйте через 15 хвилин або підтвердіть у банку".
Кнопка «Повторити пізніше» з таймером.
Пропозиція альтернатив: А2А/локальні гаманці при тротлінгу.
Авто-3DS без повторного введення реквізитів при SCA-soft.
Капча тільки точково (за IP/ASN/бот-сигналами), не до всіх.

11) Комплаєнс і приватність

GDPR/PII: зберігайте мінімальні ідентифікатори (хеші пристроїв, токени карт, last4), прозорі політики.
PCI DSS: ніякого PAN/CVV в логах; velocity-події без чутливих даних.
PSD2/SCA: переводьте перевищення в challenge там, де це доречно, замість тотальних відмов.

12) Метрики, алерти, SLO

KPI:
  • Approval Rate (загальний і при спрацьовуванні правил).
  • False Positive Rate правил velocity (частка чесних блоків → за подальшою легітимністю).
  • Число «штормів» ретраїв і середній час відновлення.
  • Частка перекладів з decline → challenge з успішним результатом.
  • Chargeback rate в сегментах, де спрацювали ліміти (очікуємо ↓).
Алерти:
  • Спайк'05/14/54'+ зростання спроб> X за 15 хв в кластері BIN/ASN.
  • Сплеск'91/96'→ авто-підвищення порогу T1 + роутинг в PSP-B.ru
  • FP-rate правила> цільового (наприклад, 1. 5 × тижневої медіани).
SLO:
  • Рішення по velocity ≤ 100 мс p95.
  • Частка успішних платежів, переведених в 3DS замість відмови ≥ цільового.

13) Анти-патерни

Універсальний «тотальний» ліміт для всіх ринків і типів клієнтів.
Блокувати по'AVS = U/S/G'в країнах, де AVS не працює штатно.
Не розділяти CIT/MIT - ламає підписки/повтори.
Ретраїти без jitter і ідемпотентності - дублі і шторми.
Ховати причини відмови - зростає саппорт і токсичність.

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

  • Карта сутностей (scopes) і вікна (15m/1h/24h/7d).
  • Вибір алгоритмів: sliding + token bucket для bursts.
  • Нормалізація ретраїв: backoff + jitter, окремо для CIT/MIT.
  • Інтеграція з 3DS/SCA: авто-challenge при м'яких перевищеннях.
  • Окремі ліміти для висновків і бонусів; граф-перевірки зв'язків.
  • Спостережуваність: дашборди KPI/алерти/аудит правил.
  • UX-шаблони повідомлень і альтернативні методи.
  • Політики PCI/GDPR: токени, маскування, мінімізація PII.
  • A/B-тести порогів по ринках/BIN/ASN і профілях клієнтів.
  • Плейбуки інцидентів: деградація емітента/PSP, сплеск ботів.

15) Резюме

Ефективні velocity-ліміти - це багаторівневі вікна і лічильники за різними сутностями, алгоритми згладжування (token/leaky bucket), розумні ретраї і тісна зв'язка з 3DS/SCA і скорингом. Такий контур зменшує фрод і аб'юз, не душить конверсію, і допомагає тримати стабільну монетизацію при волатильності емітентів і трафіку.

Contact

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

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

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

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

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

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