AVS/CVV проверки и фрод-сигналы
1) Зачем AVS/CVV в iGaming
AVS (Address Verification Service) и CVV/CVC — базовые контроли card-not-present, которые:- уменьшают риск фрода/чарджбеков по «No Auth»/«Fraud»,
- повышают доверие эмитента при первичных CIT,
- помогают отсеивать ботов/дропы до 3DS-челленджа,
- дает данные для policy-based роутинга и скоринга.
Важно: AVS/CVV не заменяют 3DS2/SCA и токенизацию, но хорошо работают вместе.
2) Как это работает (в общих чертах)
AVS: сравнение биллингового адреса клиента (улица, индекс, иногда город/штат) с адресом у эмитента. Возвращается код (match/partial/no match/unsupported).
CVV: проверка кода на карте; возвращается match / no match / not processed / issuer not certified.
Оба результата приходят в ответе авторизации от PSP/эквайера (или в отдельных полях вебхуков) и должны логироваться без PAN, связываться с `payment_id`.
3) Коды AVS (сводная логика принятия решений)
Коды различаются между схемами и PSP, но практическая нормализация выглядит так:- Полное совпадение: `Y` (улица + индекс) → сильный позитивный сигнал.
- Частичное совпадение: `A` (улица ок, индекс нет), `Z` (индекс ок, улица нет), `W/X` (9-/5-значный ZIP), `D/M` (международные совпадения) → умеренно позитивный.
- Нет совпадения: `N` → негативный сигнал; возможен отказ или усиленная проверка/3DS.
- Недоступно/не применимо: `U` (issuer unavailable), `R` (retry), `S` (AVS not supported), `G` (international not supported) → нейтральный/слабонегативный, решение зависит от контекста.
- Высокорисковые рынки/карты: требовать ≥ частичного совпадения либо 3DS-challenge по умолчанию.
- Низкорисковые клиенты с историей: смягчать до допуска «partial match» без челленджа.
- Для подписок (MIT): AVS полезен на initial CIT; далее опирайтесь на 3DS-артефакты/токены и историю.
4) Коды CVV/CVC (нормализация)
Match: `M` — сильный позитивный фактор (особенно для первичной записи карты).
No Match: `N` — сильный негатив; рекомендуется отказ или обязательный 3DS-challenge.
Not processed/Not present: `P`/`S` — слабонегативный, см. контекст (иногда эмитент не поддерживает или поле потеряно).
Issuer not certified/Unavailable: `U` — нейтральный/слабонегативный.
- Для CIT с `CVV=N` — обычно отклонять (или отправлять в 3DS-challenge и проверку).
- Для MIT (повторы) CVV не запрашивается; полагайтесь на связь с initial CIT.
5) Связка AVS/CVV ↔ 3DS/SCA и network-токены
3DS2 с успешным результатом (ECI/CAVV) обеспечивает liability shift (в рамках правил), что уменьшает значимость AVS/CVV как «обязательного» барьера, но:- AVS/CVV снижают риск челленджа и повышают шанс frictionless.
- При `AVS=N` и/или `CVV=N` — разумно насильно инициировать 3DS.
- Network tokens (VTS/MDES/NSPK) и VAU/ABU повышают AR и LTV; вместе с AVS/CVV дают лучшую картину риска на initial CIT.
6) Фрод-сигналы: что собирать и как использовать
Технические/контекстные сигналы:- Device fingerprint (canvas/webgl/audio, шрифты, timezone, lang).
- Velocity: попытки оплаты за окно (по карте/аккаунту/устройству/IP/BIN).
- Гео-согласованность: IP-страна vs BIN-страна vs биллинг vs язык/валюта.
- Поведенческие паттерны: скорость ввода, фокус полей, копипаст, ошибки CVV.
- История аккаунта: возраст, AHT игровых сессий, KYC-статус, возвраты.
- Платежные атрибуты: MCC 7995, тип карты (prepaid/debit/credit), эмитентский риск.
- 3DS-метаданные: method completion, dsTransID, частота челленджей у эмитента.
- Стройте композитный риск-скор (0–100) с весами: CVV, AVS, device, geo, velocity, 3DS-история.
- `score ≤ T1` → frictionless (если доступно);
- `T1 < score ≤ T2` → challenge (3DS);
- `score > T2` → decline или ручная проверка/альтернатива.
7) Матрица решений (пример для оркестратора)
8) Ретраи и UX-паттерны
CVV-ошибка (N): покажите понятное сообщение «Проверьте код на карте», очистите только поле CVV, не заставляйте вводить все заново.
AVS-несовпадение: предложите проверить индекс/улицу, дайте подсказки формата (ZIP-5/ZIP-9).
Soft-decline/SCA: автоматический повтор с 3DS, без повторного ввода карты.
Velocity-блок: короткий «cool-down» с таймером и советом использовать другой метод.
Альтернативы: A2A (банковские переводы), локальные кошельки по рынку.
9) Data & схемы хранения (минимум полей)
Храните только безопасные метаданные, без PAN/CVV:- `payment_id`, `psp_txn_id`, `token_id`, `bin`, `last4`, `scheme`, `issuer_country`
- `avs_result_normalized` ∈ {Y, PARTIAL, N, NA}
- `cvv_result_normalized` ∈ {M, N, NA}
- `risk_score`, `velocity_bucket`, `device_id`, `ip_country`, `bill_country`
- `threeDS`:{`version`, `eci`, `cavv`?, `method_done`:bool, `challenge`:bool}
- `decision` ∈ {approve, challenge, decline}, `reason`
- `route` (PSP_A/B), `was_retry`:bool, timestamps
10) Метрики и наблюдаемость (KPI/SLO)
Качество и конверсия
Approval Rate по кластерам `AVS/CVV` (например, `CVV=M & AVS=Y` vs `CVV=M & AVS=partial`).
Frictionless % и Challenge success % при разных классах AVS.
Abandon rate на экранах ввода CVV/адреса.
Риск
Chargeback rate (fraud/consumer dispute) в разрезе AVS/CVV комбинаций.
Доля false positive: отказов при последующей легитимности (по апелляциям/повторам).
Soft-decline → успешный повтор (после 3DS).
Техника
Latency AVS/CVV проверки (p95) и доля `U/S/G` (недоступно).
Спайки по `CVV=N`, `AVS=N` (алерты) в разрезе BIN/эмитента/PSP.
11) Анти-паттерны
Трактовать `AVS=U/S/G` как жесткий отказ на международных BIN — потеря конверсии.
Требовать AVS в странах/банках, где он системно не поддерживается.
Логировать сырые адреса без маскировки и без целей — риск утечек/PII.
Хард-отклонять `CVV=N` без анализа частоты ошибки ввода (возможен честный мис-тайп).
Игнорировать 3DS-артефакты и историю клиента при частичных совпадениях AVS.
12) Чек-лист внедрения
- Нормализованный словарь кодов AVS/CVV по схемам/PSP.
- Политики принятия решений (approve/challenge/decline) по комбинациям.
- Интеграция с 3DS2: автопереход в challenge при негативных AVS/CVV.
- Скоринг риска: device, geo, velocity, история клиента, BIN-политики.
- UX-шаблоны ошибок (локализация, сохранение введенных полей).
- Дэшборды KPI и алерты по всплескам `N`/`U/S/G`.
- PAN-safe: hosted fields/iframe, токенизация; в логи — только метаданные.
- A/B-тесты порогов (T1/T2) и правил по рынкам/эмитентам.
- Плейбуки ретраев/soft-decline и альтернативных методов оплаты.
- Политики хранения адресов/PII (GDPR/DSR), маскирование, минимизация.
13) Пример политик по рынкам (эскиз)
США/Канада (AVS силен): `AVS=Y` или `partial + 3DS/низкий риск`; `AVS=N` → challenge/decline.
ЕС (PSD2): упор на 3DS2 (frictionless где можно); AVS — сигнал для скоринга.
Международные рынки с ограниченной поддержкой AVS: опора на 3DS + device/geo/velocity; `AVS=U/S/G` — нейтрально.
14) Резюме
AVS/CVV — это «первые фильтры» в CNP-платежах. Они должны работать в связке с 3DS2, токенизацией и риск-скорингом, а решения — приниматься по контексту, а не по одному коду. Нормализуйте ответы, стройте скоринг, автоматизируйте переход в 3DS, аккуратно обращайтесь с адресами/PII и измеряйте результат метриками. Так вы снизите фрод и чарджбеки, не убивая конверсию.