GH GambleHub

Санкційний комплаєнс по платежах

1) Навіщо це потрібно (рамка ризику)

Юридичний ризик: штрафи/відкликання ліцензії за порушення санкційних режимів.
Фінансовий ризик: заморожування коштів/рахунків на коридорі (кореспондент/PSP/схема).
Операційний ризик: форс-мажорні повернення, завислі транзакції, зростання ручних перевірок.
Репутація: «санкційні» інциденти б'ють по банках-партнерах і доступу до коридорів.


2) Режими і принципи

Списки: OFAC (SDN/SSI), EU, UK (OFSI), CA, AU, ООН, локальні.
Гео-ембарго: повні заборони по країнах/територіях.
Секторальні: обмеження по галузях/термінах фінансування (SSI/Directive).
«50% правило»: якщо один або кілька SDN володіють сукупно ≥50% - суб'єкт вважається заблокованим, навіть якщо не поіменований.
Експорт-контроль/подвійного призначення: платіж за заборонений товар/послугу (важливо в A2A/SWIFT ремітах).
Крипто/Travel Rule: передача KYC-атрибутів між VASP при транскордонних переказах.


3) Де і як скринити (платіжний контур)

3. 1. Депозити

Платник: ім'я/адреса/дата народження (якщо доступні), карта (BIN-гео), гаманець, IP/ASN, девайс.
Провайдер: PSP/MID та їх юрисдикція; перевірка «чистоти» маршруту.
Події: створення профілю (L0), перший депозит (L1), аномалії (velocity/гео-конфлікт).

3. 2. Висновки

Бенефіціар: IBAN/BIC/ім'я/адреса, карта/гаманець, крипто-адреса (VASP).
Маршрут: same-method/return-to-source, банк-одержувач, можливі кореспонденти.
Travel Rule (крипто): обмін originator/beneficiary-даними, перевірка VASP-статусу.

3. 3. Маршрутизація/коридори

A2A/SEPA/FPS/PIX/RTP: банк-одержувач та його країна/санк-ризик.
Push-to-card: банк-емітент картки (BIN-країна/банк).
SWIFT: банки-кореспонденти (всі ланки ланцюжка).
E-wallets: юрисдикція емітента/оператора гаманця.


4) Типи скринінгу та сигнали

Ім'я/аліаси/транслітерації (фаззі-матч, редукція діакритики).
Адреса/місто/поштовий індекс (гео-тригери, «санкційні» локації).
Дата народження/паспорт/MRN (коли доступні з KYC).
Організації/БЕНЕФІЦІАРИ (UBO): розширений due diligence.
IBAN/BIC і банк-одержувач: країна, «санкційний банк» або підсанкційний UBO.
BIN/емітент картки: країна/банк, cross-check з санк-переліками.
IP/ASN/VPN/хостинг: санк-гео, проксі/тіньові ASN.
Device-graph/household: перетину з раніше заблокованими.
Крипто-адреси: мітки «санкційні/міксери/ризикові кластери» у блокчейн-провайдерів.
Гео-конфлікт: KYC-країна ≠ IP ≠ SIM ≠ BIN-гео.


5) Оркестрація скринінгу: «Де вбудовувати»

1. Onboarding: легкий скринінг на ім'я/ДР, country risk.
2. Payment init: синхронний hit-check платника/бенефіціара, IBAN/BIN, IP/ASN.
3. Pre-routing: deny/hold/step-up (SoF/документи) до відправки в коридор.
4. In-flight: моніторинг статусів від PSP/банків (returns/holds).
5. Post-event: ретроспективний рескринінг при оновленні списків (backfill).


6) Політика рішень (risk-based)

AUTO-PASS: немає хітів; низький ризик країни/банку; same-method; ND≥0.
MANUAL REVIEW: fuzzy-хіт нижче високого порогу; новий бенефіціар; гео-конфлікт; високий country/sector risk.
DENY/BLOCK: точний SDN-хіт, «50% правило», ембарго GEO, санкційний банк/коридор.
STEP-UP: запит SoF/SoW, підтвердження адреси/імені бенефіціара, «name check/IBAN» (де доступно).


7) Зниження помилкових спрацьовувань (precision)

Нормалізація ПІБ (перестановка імен/прізвищ, по батькові, відмінки, частинки).
Контекстні атрибути: дата народження/місто знижують FPR.
White-lists: перевірені бенефіціари/банки/IBAN (з TTL і ревалідацією).
Блек-лист ASN/VPN: менше гучних хітів по IP.
Сегментні пороги: суворіше для high-risk GEO/коридорів, м'якше для low-risk.
Auto-роздільна здатність після ручного APPROVE з однаковим фінгерпринтом (device/IBAN).
Журнали пояснюваності: чому відхилено/дозволено (швидкий, правила, поля-збіги).


8) UX і комунікації

Прозорі причини: «Необхідна валідація одержувача через банк/країну».
Терміни: чесні ETA для ручної перевірки/SoF.
Повернення: автоматичний рефанд в ігровий гаманець, посилання «вибрати інший метод/одержувача».
Локалізація: юридичні тексти, посилання на політику санкцій/підтримку.


9) Інженерія: модель даних (мінімум)

sql sanctions.watchlists (
source TEXT,      -- OFAC, EU, UK, UN, etc.
entity_id TEXT,    -- уникальный ID записи entity_type TEXT,   -- person    org    vessel    bank name TEXT, aliases TEXT[], dob DATE, country TEXT,
programs TEXT[],    -- санкционные программы ownership_json JSONB, -- связи для "50% правила"
updated_at TIMESTAMP
);

sanctions.hits (
hit_id PK, user_id, payout_id, deposit_tx_id,
entity_id, source, match_score NUMERIC, match_fields JSONB,
status TEXT,      -- OPEN    APPROVED    DENIED    ESCALATED    FALSE_POSITIVE reviewer TEXT, decided_at TIMESTAMP, created_at TIMESTAMP
);

payments.endpoints (
beneficiary_id PK, user_id, type, -- IBAN    CARD    WALLET    CRYPTO iban TEXT, bic TEXT, bin TEXT, wallet_ref TEXT, crypto_addr TEXT,
bank_country TEXT, bank_name TEXT, verified BOOLEAN,
last_screened_at TIMESTAMP, risk_tags TEXT[]
);

risk.context (
user_id, ip INET, asn INT, device_hash TEXT,
geo_ip TEXT, geo_kyc TEXT, geo_sim TEXT, updated_at TIMESTAMP
);

10) Псевдо-DSL політики

yaml policy: "sanctions_payments_v4"
lists:
sources: [OFAC, EU, UK, UN, CA]
refresh_interval_hours: 6 screening:
on_user_create: true on_deposit_init: true on_payout_init: true on_new_beneficiary: true rescreen_on_list_update: true thresholds:
name_fuzzy_pass: 0.72 name_fuzzy_manual: 0.62 org_fuzzy_pass: 0.80 crypto_risk_max: "MEDIUM"
routing_guards:
deny_if:
- geo in [EMBARGOED]
- bank_sanctioned == true
- ownership_sdn_agg >= 0.5  # "50% правило"
manual_review_triggers:
- fuzzy_hit == true
- new_beneficiary == true AND amount > 1000 EUR
- geo_conflict_score >= 2
- vasp_untrusted == true stepups:
- if: payout_amount > 2000 EUR then: ["name_check_iban"]
- if: crypto == true then: ["travel_rule", "beneficiary_vasp_check"]
audit:
store_feature_snapshot: true store_decision_tree: true exceptions:
whitelist_beneficiary_ttl_days: 180

11) SQL-шаблони

11. 1. Фаззі-пошук за іменами/аліасами

sql
SELECT w.entity_id, w.source, w.name,
similarity(unaccent(lower(:full_name)), unaccent(lower(w.name))) AS score
FROM sanctions.watchlists w
WHERE w.entity_type='person'
AND (unaccent(lower(:full_name)) % unaccent(lower(w.name))
OR EXISTS (SELECT 1 FROM unnest(w.aliases) a
WHERE unaccent(lower(:full_name)) % unaccent(lower(a))))
ORDER BY score DESC LIMIT 20;

11. 2. Перевірка «50% правила» по володінню

sql
SELECT entity_id
FROM sanctions.watchlists
WHERE entity_type='org'
AND (ownership_json->>'sdn_agg_share')::numeric >= 0.5;

11. 3. Тригер рескринінгу при оновленні списку

sql
INSERT INTO sanctions.hits (user_id, entity_id, source, match_score, status, created_at)
SELECT u.user_id, w.entity_id, w.source, 0.0, 'OPEN', now()
FROM users u
JOIN sanctions.watchlists w ON w.updated_at >:last_run
WHERE u.country IN (:risk_geos);

11. 4. IBAN/банк-одержувач: ризик-гвард

sql
SELECT e.beneficiary_id,
(e.bank_country = ANY(:embargo_geos)) AS embargo_hit,
(e.bic IN (SELECT bic FROM ref.sanctioned_banks)) AS bank_hit
FROM payments.endpoints e
WHERE e.beneficiary_id=:bid;

11. 5. Crypto Travel Rule (спрощений контроль)

sql
SELECT v.vasp_id, v.trust_level, tx.crypto_addr
FROM crypto.transfers tx
JOIN ref.vasps v ON v.domain = tx.beneficiary_vasp
WHERE tx.payout_id =:pid;

12) KPI і дашборди

Hit Rate: частка транзакцій/бенефіціарів з санкційними хітами.
False Positive % и Manual Approve %.
Manual TAT p50/p95 (час рішення).
Denied% за режимами/гео/коридорами/банками.
Rescreen backlog після оновлення списків.
Returns/holds% за санк-кодами від PSP/банків.
Travel Rule coverage% (крипто).
Whitelisted TTL breach% (протухлі «довірені» без ревалідації).


13) Алерти

List Update Spike: різке зростання хітів після оновлення списків.
FPR Surge: False Positive%> порогу d/d.
Manual Backlog: відкриті кейси> ліміту або p95 TAT> SLA.
Embargo Route Hit: спроби провести платежі за забороненими гео/банками.
Travel Rule Missing: крипто-перекази без обміну даними VASP.
Policy Drift: транзакції без снапшота правил/рішення.


14) Плейбуки інцидентів

A. Масові хіти після оновлення OFAC/EU

1. Заморозити авто-роутинг на ризик-коридорах → MANUAL.
2. Пріоритет за сумою/ЕТА, швидке навчання операторам нових аліасів/орфографій.
3. Комунікація PSP/банкам: попередити про тимчасове зростання ручних.

B. повернення з боку банку-кореспондента

1. Нормалізувати код причини, зібрати зразки (BIC, коридор).
2. Тимчасово виключити банк/коридор з каскаду, reroute.
3. Пост-мортем: оновити довідник «санк-банків», посилити precheck.

C. крипто без Travel Rule

1. Блокувати висновки на неперевірених VASP, запитати дані.
2. Включити «only trusted VASP» до виправлення інтеграції.
3. Ретест і звіт регулятору при необхідності.


15) Best practices (коротко)

1. Policy-as-code з версіями і снапшотами ознак/рішень.
2. Скринінг в декількох точках (профіль, init, pre-route, post).
3. Враховуйте 50% правило і UBO-зв'язку, а не тільки поіменні записи.
4. Name normalization і контекст (ДР/місто) для зниження FPR.
5. Білі списки перевірених бенефіціарів/банків з TTL і ревалідацією.
6. Сегментуйте пороги по GEO/методу/коридору.
7. Логи пояснюваності та аудит-трейл: «хто/коли/чому».
8. Домовтеся з PSP/банками про коди повернень і SLA ручних.
9. Travel Rule і реєстр довірених VASP для крипто.
10. Регулярні пост-інциденти і тюнінг правил.


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

  • Джерела списків і частота оновлення (OFAC/EU/UK/UN/локальні).
  • Політика «50%» і UBO-граф.
  • Скринінг на onboarding/deposit/payout/new beneficiary/rescreen.
  • Інтеграції: PSP/банки/васпи, коди повернень.

Порогова матриця (pass/manual/deny), сегменти GEO/методів.

  • Білі/чорні списки (beneficiary/bank/ASN/IP) з TTL.
  • Логи пояснюваності, снапшоти ознак/рішень, звіти для ліцензій.
  • Дашборди KPI і алерти; SLA ручних.
  • Плейбуки (оновлення списків, повернення, Travel Rule).
  • Навчання операторів (аліаси/транслітерації, country-рідкості).

Резюме

Санкційний комплаєнс по платежах - це оркестрація правил, даних і маршрутів, а не просто «пробити по списку». Вбудовуйте скринінг в ключові точки платіжного шляху, враховуйте UBO і 50% правило, керуйте коридорами/банками, знижуйте помилкові спрацьовування через нормалізацію і контекст, зберігайте пояснювані рішення і версії політик як код. Так ви збережете доступ до коридорів, знизите операційні витрати і витримайте вимоги ліцензій без вбивства конверсії.

Contact

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

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

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

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

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

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