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 минут или подтвердите в банке».
Кнопка «Повторить позже» с таймером.
Предложение альтернатив: A2A/локальные кошельки при троттлинге.
Авто-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.
  • 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).

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