Перейти к основному содержанию
Передайте транзакции в Didit через API Создать транзакцию. Каждая транзакция содержит структурированные данные о сторонах, платеже и контексте, которые движок правил оценивает в реальном времени.
Если транзакция создаётся на устройстве конечного пользователя, например при выводе криптовалюты или платеже в приложении, рассмотрите отправку транзакции через SDK. Вместо API-ключа используется token с ограниченной областью действия, данные об устройстве собираются автоматически, а необходимые действия пользователя (подтверждение владения кошельком, дополнительная верификация) запускаются сразу.

Категории транзакций

У каждой транзакции есть transaction_category, который определяет, как правила и аналитика обрабатывают её:

Данные транзакции

Объект transaction_details содержит финансовые данные:

Субъект и контрагент

Каждая транзакция имеет субъекта (обязательно) и необязательного контрагента. Оба используют одну модель стороны: Если address передан объектом, Didit получает country_code стороны из address.country. Если address передан строкой, country_code для этой стороны возвращается как null. Когда vendor_data совпадает с существующим пользователем или компанией, Didit автоматически связывает транзакцию с профилем этой сущности, что позволяет оценивать правила в рамках нескольких сессий и проверять частоту операций. В ответе обе стороны возвращаются в массиве parties с ролями APPLICANT и COUNTERPARTY.

Способы оплаты

Прикрепите payment_method к каждой стороне, чтобы описать платёжный инструмент с её стороны: В транзакциях travelRule способ оплаты контрагента с method_type: "unhosted_wallet" (псевдоним type) указывает, что кошелёк контрагента является некастодиальным. Если Travel Rule включён и сумма в валюте по умолчанию вашего приложения не ниже threshold_amount, перевод сразу переходит в статус UNCONFIRMED_OWNERSHIP и попадает в процесс подтверждения владения. См. раздел Заявленные некастодиальные кошельки. Для криптотранзакций указывайте адреса кошельков в account_id и задавайте currency_kind равным crypto, чтобы скрининг блокчейна запускался автоматически. Направление определяет, какой кошелёк проверяется: при входящем скрининге до перевода используется кошелёк отправителя в counterparty.payment_method.account_id; при исходящем скрининге используется кошелёк получателя в counterparty.payment_method.account_id. Если вы передаёте хеш блокчейна в transaction_details.payment_reference_id, для скрининга входящей транзакции требуется адрес депозита вашего сервиса в subject.payment_method.account_id, а для скрининга исходящей транзакции требуется кошелёк получателя в counterparty.payment_method.account_id.

Переопределение скрининга криптовалют

Используйте include_crypto_screening на верхнем уровне запроса, чтобы переопределить значение по умолчанию, заданное в разделе Транзакции > Настройки в консоли:

Контекст устройства

Передайте информацию об устройстве субъекта (а при необходимости и контрагента), чтобы работали правила анализа устройства. Поле запроса называется device_context и передаётся для каждой стороны. Также принимается алиас в camelCase device, именно он используется в формате SDK. В ответе оно возвращается как device в каждом элементе массива parties.
browser_family и platform не выводятся из user_agent. Их нужно передавать как явные ключи верхнего уровня внутри device_context, иначе правила анализа устройства не сработают. Если вы используете SDK Didit, эти поля собираются автоматически.
Для каждого поля принимаются алиасы в camelCase: userAgent, browserFamily, browserVersion, osFamily, osVersion, acceptLang, sessionId, sessionAgeMs. Подобъект network_context принимает алиасы ip / countryCode3 / lat / lon, а блок верхнего уровня ipInfo также включается в network_context. Контекст устройства позволяет настроить правила для выявления мультиаккаунтинга (один и тот же отпечаток у разных субъектов), сочетания нового браузера и нового IP, перевода крупной суммы при малом возрасте сессии, а также скоринга риска по местоположению.

Пользовательские свойства

Добавляйте любые дополнительные пары ключ-значение в объект custom_properties. Правила могут ссылаться на эти поля в своих условиях. Это удобно для передачи бизнес-контекста, например категории товара, ID мерчанта или канала.
В условиях правил ссылайтесь на каждый ключ через путь к полю custom_values.<key>. Например, payload выше соответствует условию custom_values.product_category eq "electronics". В конструкторе правил в Console ключи, встречавшиеся в недавно поступивших транзакциях, отображаются в селекторе полей условий в разделе Пользовательские свойства. Кнопка Ввести пользовательское свойство в той же группе позволяет вручную ввести любой ключ (с учётом регистра). Подробности см. в разделе Правила и скоринг.

Пример запроса

Ответ

API возвращает созданную транзакцию с первичными результатами оценки: Полную схему запроса и ответа см. в справочнике API. Разбор payload с пояснениями см. в справочнике схемы ответа.

Назначение транзакции проверяющему

Назначьте приостановленную транзакцию участнику вашего приложения или снимите назначение с помощью API-ключа с правом write:transactions. Каждое изменение фиксируется на временной шкале транзакции как TRANSACTION_ASSIGNED. В обоих вызовах передаётся assignee_email, адрес электронной почты участника приложения, который вошёл в Didit. Передайте null или пустую строку, чтобы снять назначение. Массовый вызов также принимает transaction_ids, список из 1–500 UUID транзакций.
Одиночный вызов возвращает uuid, transaction_number, assignee и changed (false, если транзакции уже был назначен этот проверяющий), либо 404, если транзакция не существует в приложении. Массовый вызов возвращает transactions (по одной записи в формате выше), updated_count и not_found_transaction_ids. Фильтруйте список транзакций по assignee. Это список через запятую, где достаточно совпадения любого значения: me, unassigned, rules (решение принято только правилами, проверяющий не участвовал) или email участника.

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

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), который передаётся в webhook transaction.created рядом с вашим txn_id. Всегда генерируйте txn_id на своей стороне (например, ID из вашей базы транзакций, UUID или детерминированный хеш).

Загрузка исторических транзакций

Передайте txn_date в прошлом, чтобы загрузить исторические транзакции. Правила по умолчанию всё равно выполняются. Если вы хотите пропустить оценку правил при массовой загрузке исторических данных, используйте импорт CSV в консоли в режиме dry-ingest. См. руководство по интеграции.

Дальнейшие шаги

Правила и скоринг

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

Схема ответа

Полный аннотированный payload ответа.

Скрининг криптовалют

Автоматический скрининг кошельков и транзакций для криптовалютных транзакций.

Travel Rule

Прикрепление данных о соблюдении Travel Rule к переводам виртуальных активов.

Обогащение данных по IP

Контекст, полученный из IP, доступен правилам.

Справочник API

Полная схема запроса для endpoint Create Transaction.
Последнее изменение 7 ноября 2026 г.