Защита от фрода: работа с risk score в Stripe

🛡️ Практические рекомендации, как использовать оценку риска Stripe (risk score), чтобы защитить выдачу товара от оплат крадеными картами. По смежным темам:

Контекст

Зачем это нужно

Мошенники покупают цифровые товары украденными картами. Через 2-3 недели настоящий владелец карты открывает диспут, и деньги уходят обратно вместе со штрафом. Товар уже выдан — вы в минусе.

Stripe Radar оценивает каждый платёж и присваивает risk_score от 0 до 100. Чем выше — тем подозрительнее.

Задача — использовать risk_score, чтобы задержать выдачу товара при подозрительных платежах, разобраться в ситуации и принять решение: выдать или вернуть деньги.

Важно понимать

Эти рекомендации основаны на практике работы с цифровыми товарами и Stripe Radar. Они не являются гарантией защиты от фрода и требуют адаптации под конкретную бизнес-модель, географию и допустимый уровень риска.

Любая антифрод-логика — это компромисс между конверсией и риском диспутов. Ниже описан базовый консервативный подход, который можно ослаблять или усиливать по мере накопления данных.


Пороги риска для высокорисковых цифровых товаров — Stripe risk_score

0–19 — низкий риск. Выдавайте товар сразу.

20–39 — повышенный риск. Смотрите на дополнительные признаки.

40+ — высокий риск. Задержите выдачу на 24 часа.


1. Настройте правила автоматической задержки

Это первая версия. Корректируйте по мере накопления данных.

Правило 1: высокий риск

Если risk_score > 39 — задержка на 24 часа.

Правило 2: повышенный риск + нетипичная страна

Если risk_score > 19 и страна карты не входит в список ваших типичных стран — задержка на 24 часа.

Типичные страны определите по последнему месяцу: выгрузите продажи и посмотрите, из каких стран приходят ваши покупатели.

Автоматические правила служат только для временной задержки выдачи товара. Финальное решение о рефанде или выдаче всегда принимает поддержка на основе совокупности факторов.


2. Предоставьте поддержке данные для принятия решения

Чтобы за 24 часа принять решение — делать рефанд или выдавать товар — у поддержки должны быть следующие данные:

2.1 Платежи, заблокированные на 24 часа

Email и имя покупателя. Email-адреса, не соответствующие обычным пользовательским паттернам сервиса, являются дополнительным сигналом риска.

Использованные карты. Один email попал в блокировку на 24 часа с несколькими разными картами — сигнал повышенного риска, требующий дополнительной проверки.

Страна карты. Резкое появление новых стран, ранее не представленных в продажах, часто является сигналом возможной атаки. У мошенников обычно пачка карт из одной-двух локаций.

Использование 3D Secure. Если three_d_secure: null — платёж прошёл без подтверждения владельца. При диспуте по фроду ответственность на продавце, что делает превентивный рефанд более обоснованным.

2.2 Неуспешные платежи за последние 24 часа

Те же данные, что и по заблокированным платежам, плюс:

Причина неуспеха платежа. Посмотрите поле outcome → seller_message в failed-платежах:

  • One of your rules blocked this payment — сработало правило Radar

  • Stripe blocked this payment as too risky — Stripe заблокировал сам, без правил. Максимальный риск.

Если таких неуспешных платежей много, из тех же нетипичных стран и с тех же email — это с высокой вероятностью атака с украденными картами.

2.3 Успешные платежи с карт из 2.1

Часть оплат с украденных карт Stripe воспринимает как полностью легальные с risk_score = 0. Товар по ним будет отгружен.

Но при продолжении атаки платёжная система начинает помечать следующие платежи как проблемные. Это позволяет ретроспективно выявить ранее прошедшие платежи с тех же карт.


Экономика рефандов

При небольших чеках экономически выгоднее превентивный рефанд, чем диспут со штрафом.

Диспут по фроду = возврат суммы платежа + штраф $15 от платёжной системы.

Для платежей до $10 проактивный рефанд позволяет сохранить $15, даже если товар уже выдан.


3. Примите решение о рефанде

Если сходятся несколько признаков:

  • нетипичные email-адреса

  • много неуспешных платежей

  • нетипичные страны

  • повышенный risk_score

  • отсутствие 3D Secure

Мы рекомендуем вернуть деньги по всем заблокированным платежам без 3D Secure: лучше потерять продажу, чем получить диспут со штрафом.

То же касается незаблокированных платежей, если они сделаны с предположительно украденных карт, прошли без 3D Secure и их сумма до $10.

Рефанд делается через Telegram-бот EasyPay. Если вашему объёму нужна автоматизация — напишите команде заботы EasyPay, подберём решение.


Где найти данные

Все поля ниже приходят в webhook EasyPay внутри объекта Charge — структура описана в Webhook EasyPay: структура данных платежей Stripe. Те же объекты можно получить по запросу через Endpoint: Получение платёжных объектов Stripe.

Что нужно

Путь

Имя пользователя

Charge → billing_details → name

Email

Charge → billing_details → email

Оценка риска

Charge → outcome → risk_score

Страна карты

Charge → payment_method_details → card → country

Последние 4 цифры

Charge → payment_method_details → card → last4

Статус 3D Secure

Charge → payment_method_details → card → three_d_secure

Причина отклонения

Charge → outcome → seller_message


Итого: алгоритм действия

  1. Добавить автоматическую блокировку выдачи товара на 24 часа: платежи с risk_score > 39 или risk_score > 19 из нетипичной страны.

  2. Предоставить поддержке данные: заблокированные платежи, неуспешные платежи с причинами, успешные платежи с предположительно украденных карт.

  3. Поддержка принимает решение — выдать товар или сделать рефанд.


Роль EasyPay

EasyPay предоставляет инструменты для реализации описанной логики и делится практикой, накопленной на аналогичных кейсах. Конкретные пороги, правила и решения остаются на стороне партнёра.