Статус проверки (status / checkState)
Жизненный цикл запроса к AML-провайдеру. В скрине по требованию это поле называется status, в данных
по депозиту — checkState. Значения одинаковы:
| Значение | Что значит | Действие |
|---|---|---|
pending | Запущена, провайдер ещё считает | Опросите GET /v1/public/aml/checks/{uuid} чуть позже |
success | Готова — есть riskScore/riskLevel | Принимайте решение по riskLevel/decision |
failed | Провайдер вернул ошибку по конкретной проверке | Смотрите reason; можно повторить |
error | Сбой обращения к провайдеру | Смотрите reason; повторите позже |
skipped | Валюта/сеть вне allowlist провайдера | Смотрите reason; трактуйте как «не проверено» |
success, failed, error, skipped. Риск-оценку (riskScore, riskLevel,
decision, signals) несёт только success. У остальных терминальных статусов эти поля null.
Уровень риска (riskLevel)
Производный показатель — основной для автоматических решений. Платформа вычисляет его из числового
riskScore и наличия критичных сигналов, по порогам политики (по умолчанию: warn = 50, block = 80):
riskLevel | Когда (по умолчанию) | Рекомендация интегратору |
|---|---|---|
low | riskScore < 50 | Низкий риск — обычно пропускают |
medium | 50 ≤ riskScore < 80 | Пограничный — ручная проверка или доп. вопросы |
high | riskScore ≥ 80 | Высокий риск — задержать или отклонить |
severe | Сработал критичный сигнал (санкции, финансирование терроризма, краденое, эксплуатация детей) | Блокировать независимо от числового riskScore |
severe присваивается при наличии критичного сигнала — даже если числовой riskScore невысок.
Поэтому ориентируйтесь на riskLevel/decision, а не только на riskScore.
Пороги
warn и block настраиваются оператором глобально и могут переопределяться индивидуально по
валюте. Значения 50 и 80 — дефолты платформы; на вашем инстансе они могут отличаться.Решение скрина (decision)
В данных по депозиту присутствует поле decision — нормализованное решение скрина, на основе которого
платформа выставляет итоговый amlStatus депозита:
decision | Когда | amlStatus депозита |
|---|---|---|
pass | riskScore < warn-порога и нет критичных сигналов | passed |
flag | warn-порог ≤ riskScore < block-порога | flagged |
block | riskScore ≥ block-порога или критичный (severe) сигнал | hold (по политике может быть карантин) |
Числовой скор (riskScore)
Строка "0.00"–"100.00". null, если status/checkState ≠ success. Передаётся строкой —
не приводите к float без необходимости, чтобы не терять точность.
Сигналы (signals и topSignal)
signals — карта категория → вес в диапазоне 0..1, например:
topSignal — самая весомая не благонадёжная категория (благонадёжные источники вроде лицензированных
бирж, майнеров, платёжных сервисов в topSignal не попадают). Это поле удобно показывать в вашей
админке как «почему» сработала оценка.
Критичные (severe) категории
Наличие сигнала из этих групп переводит результат вriskLevel: "severe" и решение block
независимо от числового скора:
- санкционные списки;
- финансирование терроризма;
- краденые средства;
- эксплуатация детей.
sanctions_ofac, exchange_sanctioned_*, terrorist_financing, child_abuse_material)
тоже распознаются как severe.
Сводка: на что смотреть интегратору
Дождитесь терминального статуса
Пока
status/checkState = pending, оценки ещё нет. Опрашивайте результат.Проверьте, что это success
Только
success несёт оценку. skipped/error/failed означают «оценки нет» — не «чисто».Ссылки на отчёт
reportUrl— полный отчёт провайдера (если доступен).shareUrl— публичная share-ссылка отчёта (если доступна).
Платформа возвращает только безопасные поля — без сырого ответа провайдера, его внутреннего кода и
служебных идентификаторов проверки. Финальное решение «пропустить / задержать / отклонить» остаётся за
вашей CMS и настройками оператора.