Перейти к основному содержанию
Это руководство охватывает весь интерфейс интеграции «Мониторинга транзакций». Быстрый старт поможет запустить интеграцию, а эта страница описывает всё необходимое для выхода в продакшн.

Архитектура

Аутентификация

Используется стандартный заголовок x-api-key. Те же ключи применяются для сессий и сущностей. См. аутентификация API.

Отправка транзакции

Единственный endpoint: POST /v3/transactions/. Полную схему см. в разделе отправка транзакций. Минимальный payload:
Расширенный payload с методами оплаты, контекстом устройства и пользовательскими свойствами:
Для каждого поля верхнего уровня принимаются псевдонимы в camelCase (txnId, txnDate, type, info, applicant, props, travelRule, includeCryptoScreening). Формат передачи данных SDK и формат snake_case попадают в одно и то же место.

Моделирование сторон

У каждой транзакции есть обязательное поле subject (ваш клиент, которого вы отслеживаете) и необязательное поле counterparty (другая сторона). У каждой из них свой payment_method и необязательный контекст device. В ответе они приходят в массиве parties с ролями APPLICANT и COUNTERPARTY. Сторона без vendor_data сохраняется как внешний снимок (kind: EXTERNAL) без связанной сущности. Поля сторон см. в разделе payload транзакций.

Идемпотентность

txn_id (то есть transaction_id, который вы отправляете) уникален в рамках приложения. Повторная отправка существующего transaction_id возвращает 400 с сообщением A transaction with this transaction_id already exists. в поле transaction_id. Если два одинаковых запроса выполняются одновременно, второй получает 409. Ни один из этих ответов не возвращает существующую транзакцию. При ответе 400 или 409 для дублирующегося transaction_id не отправляйте запрос повторно, а найдите существующую транзакцию. Прочитайте её через GET /v3/transactions/{uuid}/, используя uuid из первого ответа, или используйте transaction_id (uuid Didit), который событие transaction.created передаёт рядом с вашим txn_id. Всегда генерируйте txn_id на своей стороне до отправки. Не полагайтесь на ID, который генерирует Didit, для идемпотентности. Используйте собственный ID из базы данных, UUID или хеш полей транзакции.

Реальное время и пакетная обработка

  • Реальное время: рекомендуется для большинства сценариев. Отправляйте транзакцию в момент её появления в вашей системе. Правила выполняются синхронно и возвращают решение.
  • Пакетная обработка и загрузка истории: для импорта исторических данных передавайте txn_date в прошлом. Правила всё равно выполняются и могут запускать webhook. Чтобы не запускать правила при загрузке истории, используйте импорт CSV в консоли с флагом “dry ingest”.

Импорт исторических данных

Если вы переходите с другой системы мониторинга транзакций:
  1. Экспортируйте исторические транзакции в CSV.
  2. Используйте Transactions → Import history в консоли (или отправляйте данные через API в цикле) с txn_date в прошлом.
  3. Включайте правила только после завершения импорта или используйте dry ingest, чтобы пропустить выполнение правил.
Продумайте выполнение правил на исторических данных. Прогон данных за шесть месяцев через правило “20 переводов за 30 дней” создаст тысячи оповещений сразу.

Webhook

Подпишитесь на:
  • transaction.created: каждая отправленная транзакция.
  • transaction.status.updated: изменения статуса (например, когда аналитик переводит транзакцию из IN_REVIEW в APPROVED или когда асинхронная проверка AML обновляет оценку).
Подробнее: webhook TM.

Обработка статусов

См. статусы TM.

Связывание транзакций с сущностями

Передавайте vendor_data для каждого участника. Это даёт следующие преимущества:
  • Каждая транзакция агрегируется в профиль пользователя или компании.
  • Правила по скорости и поведению имеют полную историю для оценки.
  • Блокировка сущности автоматически распространяется на будущие транзакции.
Отсутствие vendor_data не является жёсткой ошибкой: транзакция сохраняется как внешний снимок. Однако вы теряете агрегацию на уровне сущностей.

Сессии устранения

Когда действие правила переводит транзакцию в статус AWAITING_USER, Didit автоматически создаёт сессию устранения: стандартную размещённую сессию верификации для того же vendor_data. Пользовательские правила всегда указывают сценарий прямо в самом действии. Для встроенных правил из библиотеки сценарий берётся из сценария устранения в настройках транзакций, затем из сценария Биометрическая аутентификация вашего приложения (если у субъекта есть сохранённое эталонное лицо), затем из сценария по умолчанию вашего приложения. Транзакции Travel Rule исключены из этого автоматического выбора: их ожидающее действие - подтверждение владения кошельком. Транзакция (ответ, каждое последующее чтение и каждый webhook) содержит его в каноническом блоке action_required:
remediation сохранён для обратной совместимости; action_required является каноническим блоком (он также содержит действия wallet_ownership для переводов по Travel Rule). Действие wallet_ownership само по себе не меняет статус транзакции: транзакция сохраняет тот статус, который ей присваивают ваши правила, часто APPROVED, поэтому проверяйте action_required в каждом ответе, а не только при AWAITING_USER. Пользователь проходит верификацию. Для сценария Биометрическая аутентификация это селфи с проверкой живости, сопоставленное с лицом, полученным при его исходном онбординге KYC, и это самый строгий дополнительный шаг для транзакций высокой стоимости. Как только сессия получает решение, транзакция следует ему автоматически: APPROVED (decision_reason_code: user_action_approved), DECLINED (user_action_declined) или IN_REVIEW (user_action_in_review), и срабатывает webhook transaction.status.updated.
Можно выбрать любой тип сценария, кроме KYB. Сценарии Биометрическая аутентификация (а также сценарии, где сравнение лиц выполняется до верификации личности) требуют, чтобы у субъекта уже было сохранённое эталонное лицо из одобренной верификации. Пользователи без него направляются в сценарий по умолчанию вашего приложения, а в транзакции фиксируется примечание о такой замене.

Лучшие практики

Лимиты запросов

См. ограничение частоты запросов. Создание транзакции - один из самых высоконагруженных endpoint’ов; типичные лимиты составляют сотни запросов в секунду. Соблюдайте осторожность при отправке всплесков запросов.

Следующие шаги

Транзакции

Полный справочник по payload.

Правила

Как оцениваются правила.

Webhook

Каталог событий.

Устранение неполадок

Частые проблемы интеграции.
Последнее изменение 7 ноября 2026 г.