AML Post-Screening policy
AML Post-Screening policy интерпретирует результат, полученный от AML-провайдера, и решает: принять транзакцию как «чистую» или отклонить её из-за обнаруженных рисков.
В отличие от AML Screening, эта политика работает
с уже готовой оценкой: разбивкой истории адреса по категориям риска
(mixer, darknet, sanctions и т. п.) с долей каждой категории
в общем exposure (в процентах, 0–100).
Когда применяется
После того как AML-провайдер вернул результат скрининга. Применяется к обеим направлениям:
- исходящие — блокирует withdrawal с переводом транзакции в
статус
frozen(reason =aml); - входящие (депозиты) — приводит к заморозке vault, на который пришёл депозит.
Action — что делает правило
Логика AML Post-Screening инвертирована относительно других политик: правила здесь описывают рисковые случаи, при которых транзакцию нужно отклонить.
| Action | Что произойдёт |
|---|---|
AML_POST_SCREENING_REJECT |
Транзакция отклоняется. Для withdrawal — freeze с reason aml; для deposit — freeze vault. Снять заморозку может админ через UNFREEZE_TRANSACTION / UNFREEZE_VAULT. |
AML_POST_SCREENING_ACCEPT |
(Дефолтное действие.) Используется как «штатное» поведение, когда ни одно reject-правило не сматчилось. |
Дефолт — ACCEPT
Все правила в этой политике пишутся только под reject.
Если ни одно reject-правило не сработало, транзакция автоматически
ACCEPTED. Создавать правила с ACCEPT вручную обычно не нужно.
Структура правила
Правило срабатывает, если все указанные условия выполнены одновременно и среди рисков, которые вернул провайдер, нашёлся хотя бы один, удовлетворяющий критериям правила.
Фильтры на саму транзакцию
| Блок | Описание |
|---|---|
direction |
Направление: AML_POST_SCREENING_DIRECTION_OUTGOING, ..._INCOMING или ..._ANY (по умолчанию — любое). |
asset |
Актив и порог суммы. Если asset.amount задан — правило применяется, только когда сумма транзакции ≥ amount (в USD или NATIVE). Поведение полей идентично Transfer policy → Asset. |
Критерии риска
| Поле | Описание |
|---|---|
category |
Категория риска. Поле name — конкретная категория (например, mixer, darknet_market, sanctions, gambling, …). Флаг any_category = true — подходит любая категория. |
min_exposure_percent |
Порог по доле exposure категории в истории адреса, 0–100. Условие: среди категорий из ответа провайдера есть хотя бы одна, проходящая фильтр category, с долей ≥ rule.min_exposure_percent. Если поле не задано, а category указана — достаточно любого ненулевого появления категории. |
exposure_type |
Тип контакта. Пока принимается только ..._ANY и в оценке не участвует — текущие провайдеры не разделяют прямой и косвенный контакт. Поле зарезервировано под провайдеров с таким разделением. |
Логика матча
Провайдер возвращает разбивку exposure по категориям — долю
каждой категории в истории адреса. Правило срабатывает, если среди
них есть хотя бы одна, проходящая фильтр category, с долей не
ниже порога. В отклонении (Rejected) транзакция получает список
совпавших категорий с их долями — он попадает в reason заморозки
и аудит-лог.
Устаревшее поле
Поле risk_score (шкала 0–10) устарело: старые правила
автоматически переведены в min_exposure_percent (×10).
Поведение по умолчанию
При первом обращении создаётся одно правило:
- Default accept (position 1) —
AML_POST_SCREENING_ACCEPT,direction = ANY,any_asset,amount = 0,min_exposure_percent = 0.
При отсутствующей или деактивированной политике, а также при пустом
списке правил — транзакция всегда ACCEPTED.
Не оставляйте политику без reject-правил
Дефолтное accept ничего не блокирует. Чтобы AML-проверка имела
смысл, добавьте хотя бы одно reject-правило (см. сценарии ниже).
Типовые сценарии
1. Жёсткий запрет высокорискованных адресов
Больше 70% истории адреса приходится на любую одну рискованную категорию — отклонить.
| # | Action | Direction | category | min_exposure_percent |
|---|---|---|---|---|
| 1 | REJECT |
ANY |
any_category = true |
70 |
2. Чёрный список категорий
Любое появление этих категорий в истории адреса — отклонить, независимо от доли.
| # | Action | category | min_exposure_percent |
|---|---|---|---|
| 1 | REJECT |
sanctions |
— |
| 2 | REJECT |
darknet_market |
— |
| 3 | REJECT |
mixer |
— |
3. Порог по доле рискованной категории
Отклонять, если больше четверти истории адреса приходится на любую одну категорию, а также при заметной доле санкционных контактов.
| # | Action | category | min_exposure_percent |
|---|---|---|---|
| 1 | REJECT |
sanctions |
5 |
| 2 | REJECT |
any_category = true |
25 |
4. Мягче для маленьких сумм, строже для крупных
Депозиты до 100 USD — пропускать почти всё; крупные — резать жёстче.
| # | Action | Direction | Asset | category | min_exposure_percent |
|---|---|---|---|---|---|
| 1 | REJECT |
INCOMING |
any_asset, 100 USD |
any_category = true |
50 |
| 2 | REJECT |
INCOMING |
any_asset, 0 |
any_category = true |
80 |
Что делать с заблокированной транзакцией
- Withdrawal в
frozen— администратор с правомUNFREEZE_TRANSACTIONможет снять заморозку через UI; транзакция вернётся к предыдущему статусу и продолжит обработку. - Замороженный vault — снимается через
UNFREEZE_VAULT. До разморозки на vault нельзя принимать новые депозиты. - В обоих случаях reason содержит совпавшие категории с их долями exposure — это удобно для compliance-отчёта.