Skip to main content
Когда платформа принимает депозит, она автоматически прогоняет AML-скрин source-of-funds — проверку адреса отправителя входящей транзакции на риск (санкции, миксеры, скам, даркнет и т.п.). Эти эндпоинты отдают результат уже выполненного скрина по существующему депозиту — по его uuid (из ответа на создание депозита) или по вашему order_id.
Это read-only выдача результата. Сам скрин запускает платформа автоматически при обнаружении входящей транзакции — отдельно ничего вызывать не нужно. Чтобы проскринить произвольный адрес или транзакцию по запросу, используйте AML-скрин адресов.
Аутентификация — та же HMAC-подпись, что и у депозитов (см. Аутентификация). Ответы — в конверте { "ok": true, "data": ... }. Если AML не лицензирован на инстансе, эндпоинты вернут 403 с кодом LICENSE_REQUIRED.

Эндпоинты

МетодПутьИдентификация
GET/v1/public/deposits/{uuid}/amlпо uuid депозита
GET/v1/public/deposits/by-order-id/{orderId}/amlпо вашему order_id
Оба варианта возвращают одинаковую структуру. Запросы скоупятся по вашему сайту — чужой депозит вернёт 404 (существование чужих данных не раскрывается).
Если AML на инстансе выключен, входящая транзакция ещё не замечена, или сеть/валюта не поддерживается провайдером — вернётся валидный ответ с amlStatus: "not_checked" и null в полях оценки. Это не значит «чисто» — это значит «оценки нет». Поле checkState отражает жизненный цикл самого запроса к провайдеру.

Получить AML депозита

curl https://wallet.your-exchange.com/v1/public/deposits/8f3a1c2e-5b6d-4e7f-9a0b-1c2d3e4f5a6b/aml \
  -H "X-Api-Id: pk_live_a1b2c3d4" \
  -H "X-Timestamp: 1781524800" \
  -H "X-Signature: 9f1c2b3a4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70"
{
  "ok": true,
  "data": {
    "uuid": "8f3a1c2e-5b6d-4e7f-9a0b-1c2d3e4f5a6b",
    "orderId": "order_2026_000123",
    "assetCode": "USDT_TRC20",
    "network": "TRON",
    "senderAddress": "TKh9xY2bV8cE3fG4hJ5kL6mN7pQ8rS9tU",
    "amlStatus": "passed",
    "checkState": "success",
    "riskScore": "12.50",
    "riskLevel": "low",
    "decision": "pass",
    "provider": "getblock",
    "topSignal": "exchange",
    "signals": { "exchange": 0.8, "p2p": 0.1 },
    "reportUrl": "https://provider.example/report/0f1c8b2a",
    "shareUrl": null,
    "checkedAt": "2026-06-18T12:00:03.000Z",
    "manualAction": null,
    "manualActionAt": null,
    "manualActionReason": null
  }
}

Поля ответа

uuid
string
UUID депозита (тот же, что в GET /v1/public/deposits/{uuid}).
orderId
string
Ваш order_id, переданный при создании депозита.
assetCode
string
Код актива депозита (например USDT_TRC20).
network
string
Код сети депозита.
senderAddress
string | null
Адрес отправителя входящей транзакции — именно он проходит скрин. null, пока транзакция не замечена.
amlStatus
string
Итоговый AML-статус депозита: not_checked, passed, flagged, hold, rejected. См. ниже.
checkState
string | null
Состояние запроса к провайдеру: pending, success, failed, error, skipped. null, если проверки не было.
riskScore
string | null
Риск-скор 0100 строкой. null, если проверки не было.
riskLevel
string | null
low, medium, high, severe. См. Уровни риска.
decision
string | null
Решение скрина: pass, flag, block.
provider
string | null
Код AML-провайдера, выполнившего скрин.
topSignal
string | null
Категория риска с максимальным весом (например mixer, sanctions, scam, darknet).
signals
object | null
Карта категорий риска и их весов 0..1. null, если провайдер их не вернул.
reportUrl
string | null
Ссылка на полный отчёт провайдера, если доступна.
shareUrl
string | null
Публичная share-ссылка на отчёт, если доступна.
checkedAt
string | null
Когда выполнен скрин (ISO-8601). null, если проверки не было.
manualAction
string | null
Ручное действие оператора над задержанным депозитом: release (разрешить свип) или quarantine_now. null, если оператор ещё не вмешивался.
manualActionAt
string | null
Когда применено ручное действие (ISO-8601).
manualActionReason
string | null
Комментарий оператора к ручному действию.

Итоговый статус депозита (amlStatus)

amlStatus — это решение платформы по депозиту в целом. Оно выводится из decision скрина по настроенной оператором политике (пороги риска и действия).
amlStatusЧто значитВлияние на депозит
not_checkedСкрина не было: AML выключен, tx ещё не замечена или валюта не поддерживаетсяДепозит обрабатывается штатно. Это не оценка «чисто»
passedСкрин пройден, риск ниже пороговДепозит обрабатывается штатно
flaggedПомечен как подозрительный, но не заблокированДепозит обрабатывается, но требует вашего внимания и/или ручного разбора
holdЗаблокирован: средства задержаны, ждут ручного решения оператораСвип не выполняется до решения оператора. Не выдавайте средства/обмен клиенту
rejectedОтклонёнДепозит не зачисляется

Поведение при высоком риске (hold)

Когда скрин возвращает decision: "block" (риск выше блок-порога или обнаружен критичный сигнал уровня severe — например санкции), платформа по умолчанию переводит депозит в amlStatus: "hold":
  • средства не сметаются (sweep) на системные кошельки до явного решения оператора;
  • оператор в Админке принимает решение — оно отражается в полях manualAction / manualActionAt / manualActionReason:
    • release — снять блокировку и разрешить обычный свип;
    • quarantine_now — увести средства на отдельный карантинный кошелёк.
amlStatus: "hold" — сигнал вашей CMS не выдавать клиенту средства/услугу по этому депозиту, пока статус не сменится. Конкретные пороги и действие при блокировке (hold или сразу карантин) настраивает оператор, в том числе индивидуально по валюте.
Категория flag (риск между warn- и block-порогом) по умолчанию не блокирует депозит и даёт amlStatus: "flagged", но оператор может настроить более строгое действие для конкретной валюты.

Частые ошибки

HTTPerror.codeКогда возникаетЧто делать
403LICENSE_REQUIREDAML не лицензирован на инстансеВключить фичу AML на стороне оператора
404DEPOSIT_NOT_FOUNDНет депозита с таким uuid/order_id или он чужого сайтаПроверьте идентификатор
401INVALID_SIGNATURE / TIMESTAMP_SKEWПодпись не сошлась или часы разъехалисьСм. Аутентификация
429RATE_LIMITEDПревышен per-site лимитСм. Rate limits

Частые вопросы

senderAddress заполняется, когда платформа увидела входящую блокчейн-транзакцию депозита. До этого момента (и пока tx не подтверждена) он будет null, а amlStatusnot_checked.
Нет. Скрин адреса отправителя выполняется автоматически при приёме депозита (если AML включён и сеть поддерживается). Эти эндпоинты только отдают готовый результат.
Это значит, что валюта/сеть не поддерживается провайдером, поэтому скрин пропущен. Оценки риска нет — трактуйте как «не проверено», а не как «чисто».
Используйте вебхуки депозита: статусные изменения приходят на ваш callback_url. Деталь AML затем читайте этими эндпоинтами. Подробнее про депозиты — Депозиты.