Оптовая платформа цифровых товаров

Fraud rules engine для B2B 2026: velocity rules, BIN scoring, device fingerprinting

Архитектура fraud-движка для B2B digital-goods: velocity rules, BIN risk, fingerprinting, сравнение Sift/Sumsub и in-house.

Fraud rules engine для B2B 2026: velocity rules, BIN scoring, device fingerprinting

B2B-фрод в цифровых товарах отличается от B2C: меньше количество транзакций, но средний чек $200–2000, и chargeback означает потерю не только продукта, но и interchange fee. Эта статья — план построения fraud-rules-движка, который ловит 70%+ fraud с false-positive < 0.5%.

1. Velocity rules — фундамент

Velocity = частота действий на единицу времени. Базовый набор:

type FraudSignal = { rule: string; score: number; reason: string };

async function checkVelocity(order: Order): Promise<FraudSignal[]> {
  const signals: FraudSignal[] = [];
  const ipCount = await redis.zcount(`vel:ip:${order.ip}`, Date.now() - 600_000, '+inf');
  if (ipCount > 5) signals.push({ rule: 'ip_velocity', score: 80, reason: '>5 orders/10min' });

  const cards = await redis.scard(`vel:cards:${order.userId}:24h`);
  if (cards > 3) signals.push({ rule: 'multi_card', score: 60, reason: '>3 cards/24h' });

  return signals;
}

Хранение — Redis sorted sets с TTL = window. Запись: ZADD vel:ip:1.2.3.4 NOW order_id + EXPIRE 600.

2. BIN risk scoring

Первые 6–8 цифр номера карты (BIN) идентифицируют issuing bank. У FoxReload и большинства fraud-vendor есть BIN-таблица с risk-score:

const binRisk = await binLookup(card.bin); // 0..100
if (binRisk > 70) flags.push({ rule: 'high_risk_bin', score: 50, reason: `BIN ${card.bin}` });
if (binRisk === 100) return reject('blocked_bin'); // prepaid mass-issuance cards

Высокорискованные BIN — prepaid cards (особенно mass-issuance non-bank), карты из санкционных юрисдикций, BIN-серии, замеченные в недавних fraud-кампаниях. Обновляйте таблицу еженедельно.

3. Device fingerprinting

Cookie-less fingerprint (fpjs, ClientJS):

import FingerprintJS from '@fingerprintjs/fingerprintjs-pro';

const fp = await FingerprintJS.load({ apiKey: process.env.FPJS_KEY });
const result = await fp.get();
// result.visitorId — стабильный hash, ~99% accuracy
const fpHistory = await db.fingerprints.find({ visitorId: result.visitorId });
if (fpHistory.chargebackCount > 0) flag.score += 90;

Это даёт привязку «один реальный девайс — много аккаунтов» — ловит mass-account-creation fraud.

4. Сравнение: Sift, Sumsub, in-house

Provider Type Cost/transaction Setup Accuracy
In-house JSON rules Rules $0 1–2 weeks 60–70%
Sift ML-as-service $0.04 1 day 85–92%
Sumsub KYC + fraud $0.50–1.50 3 days 80–88%
Riskified Chargeback guarantee 0.8–1.2% volume 2 weeks 90%+
Stripe Radar Built-in to payments 0.5%/decision 0 75–85%

Recommendation для FoxReload-партнёров: до $500k/мес — in-house rules + Stripe Radar. От $500k/мес — добавить Sift или Riskified. Sumsub берите только если параллельно нужен KYC.

CTA

FoxReload встроенный fraud-engine флагает заказы в POST /v1/orders response: fraud_score и flags[] — используйте их как primary signal в вашем pipeline. Получите доступ.

Часто задаваемые вопросы

Какой industry-average chargeback rate в digital goods?
0.6–1.2% от gross volume. >1% триггерит Visa/Mastercard chargeback monitoring program с штрафами $25k+. Целевой уровень для well-run reseller — <0.4%, достигается комбинацией velocity rules + 3DS2 + manual review.
Стоит ли строить fraud engine in-house или брать Sift?
До 10k транзакций/сутки — in-house JSON-rules достаточно. От 10k — берите Sift или Riskified: ML-модели на их данных ловят больше fraud. Cost: Sift ≈ $0.04 за транзакцию, Riskified — chargeback guarantee за 0.8–1.2% от volume.
Как использовать device fingerprinting не нарушая GDPR?
Используйте fpjs или ClientJS с cookie-less mode: hash из user-agent, screen, timezone, canvas. Это даёт ~99% recognition без personal data — legitimate interest basis по GDPR Art. 6(1)(f). Включите в privacy policy и DPIA.
Какие velocity rules ловят больше всего fraud?
Top-3: (1) >5 orders с одной IP за 10 минут, (2) >3 разных card на одного user за 24h, (3) >$2k aggregate volume на новом аккаунте <7 days. Каждое правило отдельно даёт ~25% catch rate, вместе — 70%.
Получить доступ к FoxReload API

Похожие статьи