AML Post-Screening policy
AML Post-Screening policy интерпретирует результат, полученный от AML-провайдера, и решает: принять транзакцию как «чистую» или отклонить её из-за обнаруженных рисков.
В отличие от AML Screening, эта политика работает
с уже готовой оценкой: списком категорий риска (mixer, darknet,
sanctions и т. п.), численным риск-скором (0–10) и типом контакта
(прямой / косвенный).
Когда применяется
После того как 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. |
Критерии риска (применяются к каждому риску из ответа провайдера)
| Поле | Описание |
|---|---|
risk_score |
Минимальный риск-скор, при котором риск считается опасным. Шкала 0–10; чем выше — тем выше риск. Условие: risk.risk_score ≥ rule.risk_score. |
category |
Категория риска. Поле name — конкретная категория (например, mixer, darknet_market, sanctions, gambling, …). Флаг any_category = true — подходит любая категория. |
exposure_type |
Тип контакта: ..._DIRECT (прямой контакт с подозрительным адресом), ..._INDIRECT (через цепочку транзакций), ..._ANY (или поле не указано — любой). |
Логика матча по рискам
Провайдер возвращает массив рисков. Правило срабатывает, если
среди них есть хотя бы один риск, удовлетворяющий всем
критериям выше. В отклонении (Rejected) транзакция получает
полный список совпавших рисков — он попадает в reason
заморозки и аудит-лог.
Поведение по умолчанию
При первом обращении создаётся одно правило:
- Default accept (position 1) —
AML_POST_SCREENING_ACCEPT,direction = ANY,any_asset,amount = 0,risk_score = 0.
При отсутствующей или деактивированной политике, а также при пустом
списке правил — транзакция всегда ACCEPTED.
Не оставляйте политику без reject-правил
Дефолтное accept ничего не блокирует. Чтобы AML-проверка имела
смысл, добавьте хотя бы одно reject-правило (см. сценарии ниже).
Типовые сценарии
1. Жёсткий запрет высокорискованных контактов
Любая категория с риск-скором ≥ 7 и прямым контактом — отклонить.
| # | Action | Direction | risk_score | category | exposure_type |
|---|---|---|---|---|---|
| 1 | REJECT |
ANY |
7 |
any_category = true |
DIRECT |
2. Чёрный список категорий
Любое появление этих категорий — отклонить, независимо от скора.
| # | Action | category | exposure_type | risk_score |
|---|---|---|---|---|
| 1 | REJECT |
sanctions |
ANY |
0 |
| 2 | REJECT |
darknet_market |
ANY |
0 |
| 3 | REJECT |
mixer |
DIRECT |
0 |
3. Мягче для маленьких сумм, строже для крупных
Депозиты до 100 USD — пропускать почти всё; крупные — резать жёстче.
| # | Action | Direction | Asset | risk_score | exposure_type |
|---|---|---|---|---|---|
| 1 | REJECT |
INCOMING |
any_asset, 100 USD |
5 |
ANY |
| 2 | REJECT |
INCOMING |
any_asset, 0 |
8 |
DIRECT |
Что делать с заблокированной транзакцией
- Withdrawal в
frozen— администратор с правомUNFREEZE_TRANSACTIONможет снять заморозку через UI; транзакция вернётся к предыдущему статусу и продолжит обработку. - Замороженный vault — снимается через
UNFREEZE_VAULT. До разморозки на vault нельзя принимать новые депозиты. - В обоих случаях reason содержит список матчнувшихся рисков (категория, скор, тип контакта) — это удобно для compliance-отчёта.