Skip to main content
iEXWallet AML позволяет вашей CMS скринить криптоадреса и транзакции на риск (санкции, скам, даркнет, миксеры и т.п.) через те же ключи API, что и кошелёк — отдельная интеграция с AML-провайдером не нужна. Платформа сама выбирает подключённого провайдера и скрывает его внутренние детали (код провайдера, его идентификаторы проверки, сырой ответ наружу не отдаются). Этот раздел — про скрин по требованию: вы сами передаёте адрес или хэш транзакции и получаете оценку риска. Если же вам нужен AML-результат уже принятого депозита (скрин адреса отправителя выполняется платформой автоматически), смотрите AML по депозиту.
AML — лицензируемая возможность. Если она не включена на вашем инстансе, эндпоинты вернут 403 с кодом LICENSE_REQUIRED. Подключение и настройка AML-провайдера выполняются на стороне оператора (Админка → AML → Провайдеры).
Аутентификация — та же HMAC-подпись, что и у депозитов/выплат (см. Аутентификация). Ответы — в конверте { "ok": true, "data": ... } либо { "ok": false, "error": {...} }. К AML применяется тот же per-site rate-limit, что и к остальному Public API.

Эндпоинты

МетодПутьНазначение
GET/v1/public/aml/currenciesкакие валюты можно скринить
POST/v1/public/aml/checksзапустить скрин адреса или транзакции
GET/v1/public/aml/checks/{uuid}получить и опросить результат

Синхронный или асинхронный результат

Скрин выполняется через внешнего провайдера и в общем случае асинхронный. На POST платформа создаёт проверку и сразу возвращает её текущее состояние:
  • если провайдер ещё считает — придёт status: "pending"; тогда опрашивайте GET /v1/public/aml/checks/{uuid}, пока статус не станет терминальным;
  • если результат уже готов (или валюта не поддерживается) — POST сразу вернёт терминальный статус (success, failed, error или skipped).
Терминальные статусы: success, failed, error, skipped. Риск-оценку (riskScore/riskLevel) несёт только success. Обычно результат готов за несколько секунд. Подробно про трактовку статусов и уровней риска — Уровни риска и статусы.
Не опрашивайте GET /checks/{uuid} в тугом цикле. Достаточно интервала в несколько секунд: запрос на чтение реконсилит pending-проверку у провайдера, поэтому слишком частый опрос только расходует ваш rate-limit без пользы.

Список доступных валют

GET /v1/public/aml/currencies
Возвращает allowlist валют подключённого провайдера. Каждый элемент описывает поддерживаемую валюту в терминах сети и символа провайдера. Пустой список означает, что провайдер ещё не синхронизировал список валют — скрин при этом всё равно возможен, но неподдерживаемая валюта/сеть вернётся как skipped.
Поле symbol здесь — это символ валюты у провайдера (например USDT, TRX). В теле POST /checks вы передаёте код актива платформы в поле assetCode (например USDT_TRC20) — см. Справочники активов и сетей. Это разные идентификаторы: один описывает валюту у AML-провайдера, второй — актив в каталоге кошелька.
curl https://wallet.your-exchange.com/v1/public/aml/currencies \
  -H "X-Api-Id: pk_live_a1b2c3d4" \
  -H "X-Timestamp: 1781524800" \
  -H "X-Signature: 9f1c2b3a4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70"
{
  "ok": true,
  "data": {
    "items": [
      { "network": "TRON", "symbol": "TRX", "name": "TRON", "contractAddress": null, "isToken": false },
      { "network": "TRON", "symbol": "USDT", "name": "Tether USD", "contractAddress": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "isToken": true },
      { "network": "ETHEREUM", "symbol": "USDT", "name": "Tether USD", "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "isToken": true }
    ]
  }
}

Поля валюты

network
string
Код сети (например TRON, ETHEREUM).
symbol
string
Символ валюты у провайдера (например USDT, TRX).
name
string
Человекочитаемое название валюты.
contractAddress
string | null
Адрес контракта токена. null — нативная валюта сети.
isToken
boolean
true, если это токен (есть contractAddress), иначе нативная валюта.

Запустить скрин

POST /v1/public/aml/checks
Скринит адрес (по умолчанию) или транзакцию через подключённого провайдера. Возвращает созданную проверку: либо pending (опрашивайте по uuid), либо сразу терминальный статус.

Тело запроса

network
string
required
Сеть адреса или транзакции. Допустимые значения соответствуют каталогу сетей платформы (например TRON, TON, ETHEREUM, BSC, POLYGON, BITCOIN, LITECOIN, XRP, SOLANA). Если сеть не поддерживается провайдером — проверка завершится статусом skipped.
address
string
required
Адрес для скрина (до 255 символов). Обязателен для checkMethod address и both.
assetCode
string
Код актива платформы (как в справочнике активов), например USDT_TRC20. Если не указан — берётся нативная валюта сети. Для токенов влияет на то, какой контракт скринится. До 64 символов.
txHash
string
Хэш транзакции (до 255 символов). Нужен для checkMethod transaction и both.
checkMethod
string
Метод скрина: address, transaction или both. По умолчанию — transaction, если задан txHash, иначе address.
Передавайте заголовок X-Idempotency-Key (UUID). Повтор с тем же ключом не потратит лишнюю квоту провайдера и вернёт ту же проверку. Идемпотентность скоупится по сайту и кешируется на 1 час. См. Идемпотентность.
curl -X POST https://wallet.your-exchange.com/v1/public/aml/checks \
  -H "X-Api-Id: pk_live_a1b2c3d4" \
  -H "X-Timestamp: 1781524800" \
  -H "X-Signature: 4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70819a2b3c" \
  -H "X-Idempotency-Key: 3a1f9c2e-5d6e-4f70-9a1b-2c3d4e5f6a7b" \
  -H "Content-Type: application/json" \
  -d '{
    "network": "TRON",
    "assetCode": "USDT_TRC20",
    "address": "TKh9xY2bV8cE3fG4hJ5kL6mN7pQ8rS9tU"
  }'
{
  "ok": true,
  "data": {
    "uuid": "0f1c8b2a-5d6e-4f70-9a1b-2c3d4e5f6a7b",
    "status": "success",
    "network": "TRON",
    "assetCode": "USDT_TRC20",
    "address": "TKh9xY2bV8cE3fG4hJ5kL6mN7pQ8rS9tU",
    "txHash": null,
    "checkMethod": "address",
    "riskScore": "12.50",
    "riskLevel": "low",
    "topSignal": "exchange",
    "signals": { "exchange": 0.8, "p2p": 0.1 },
    "reportUrl": "https://provider.example/report/0f1c8b2a",
    "shareUrl": null,
    "reason": null,
    "createdAt": "2026-06-18T12:00:00.000Z",
    "completedAt": "2026-06-18T12:00:03.000Z"
  }
}

Получить результат

GET /v1/public/aml/checks/{uuid}
Возвращает текущее состояние проверки по её uuid. Если она ещё pending — платформа дёргает провайдера и реконсилит статус, поэтому именно этим эндпоинтом вы дожидаетесь готового результата. Структура data — та же, что у POST выше.
curl https://wallet.your-exchange.com/v1/public/aml/checks/0f1c8b2a-5d6e-4f70-9a1b-2c3d4e5f6a7b \
  -H "X-Api-Id: pk_live_a1b2c3d4" \
  -H "X-Timestamp: 1781524860" \
  -H "X-Signature: 819a2b3c4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70819a2b3c4d5e6f70"
{
  "ok": true,
  "data": {
    "uuid": "0f1c8b2a-5d6e-4f70-9a1b-2c3d4e5f6a7b",
    "status": "success",
    "network": "TRON",
    "assetCode": "USDT_TRC20",
    "address": "TKh9xY2bV8cE3fG4hJ5kL6mN7pQ8rS9tU",
    "txHash": null,
    "checkMethod": "address",
    "riskScore": "12.50",
    "riskLevel": "low",
    "topSignal": "exchange",
    "signals": { "exchange": 0.8, "p2p": 0.1 },
    "reportUrl": "https://provider.example/report/0f1c8b2a",
    "shareUrl": null,
    "reason": null,
    "createdAt": "2026-06-18T12:00:00.000Z",
    "completedAt": "2026-06-18T12:00:03.000Z"
  }
}

Поля проверки

uuid
string
Публичный идентификатор проверки. По нему опрашивайте результат.
status
string
Жизненный цикл проверки: pending, success, failed, error, skipped. См. Уровни риска и статусы.
network
string
Сеть, переданная в запросе.
assetCode
string
Код актива (явный из запроса либо нативная валюта сети, подставленная платформой).
address
string
Проверяемый адрес.
txHash
string | null
Хэш транзакции, если передавался, иначе null.
checkMethod
string
Применённый метод: address, transaction или both.
riskScore
string | null
Риск-скор 0100 строкой (например "12.50"). null, если status не success.
riskLevel
string | null
low, medium, high или severe. null, если status не success. См. Уровни риска.
topSignal
string | null
Категория риска с максимальным весом (например mixer, sanctions, scam, darknet).
signals
object | null
Карта категорий риска и их весов 0..1. null, если провайдер их не вернул.
reportUrl
string | null
Ссылка на полный отчёт провайдера, если доступна.
shareUrl
string | null
Публичная share-ссылка на отчёт, если доступна.
reason
string | null
Причина для статусов skipped, error, failed (например валюта не в allowlist или сбой провайдера). null для success/pending.
createdAt
string
Когда проверка создана (ISO-8601).
completedAt
string | null
Когда проверка завершена (ISO-8601). null, пока pending.

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

HTTPerror.codeКогда возникаетЧто делать
403LICENSE_REQUIREDAML не лицензирован на инстансеОбратитесь к оператору, чтобы включить фичу AML
400PROVIDER_UNAVAILABLEНи один AML-провайдер не включён в настройкахОператор должен подключить и включить провайдера
404NOT_FOUNDПроверки с таким uuid нет (или она чужого сайта)Проверьте uuid из ответа POST
400VALIDATION_FAILEDНевалидное тело (нет network/address, неверный enum)Сверьтесь с таблицей полей выше
401INVALID_SIGNATURE / TIMESTAMP_SKEWПодпись не сошлась или часы разъехались (±300с)См. Аутентификация
403IP_NOT_WHITELISTEDIP сервера не в whitelistДобавьте IP в Админке
429RATE_LIMITEDПревышен per-site лимитСм. Rate limits
Полный перечень кодов и формат конверта ошибки — на странице Ошибки.

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

skipped означает, что валюта или сеть не входит в allowlist подключённого провайдера (или провайдер явно объявил их неподдерживаемыми). Это не значит «адрес чистый» — оценки риска нет. Причина указана в поле reason. Проверьте, что валюта присутствует в GET /v1/public/aml/currencies.
Здесь вы скрините произвольный адрес или транзакцию по своему запросу. AML по депозиту (/aml/deposit-checks) — это read-only выдача результата скрина, который платформа выполняет автоматически над адресом отправителя входящей транзакции при приёме депозита.
Раз в несколько секунд достаточно. Результат обычно готов за единицы секунд. Каждый GET по uuid реконсилит статус у провайдера, поэтому слишком частый опрос только расходует rate-limit.
Нет, один запрос — одна валюта. Чтобы проскринить адрес как держателя токена, передайте assetCode токена (например USDT_TRC20). Без assetCode берётся нативная валюта сети.