Представьте: ваш обменник получил перевод на 50 ETH от Binance, но Notabene не отвечает — транзакция зависла, клиент в поддержке, регулятор ждёт отчёт. Без автоматизации Travel Rule такие ситуации становятся рутиной. Мы внедряем платформу Notabene так, чтобы каждый перевод проходил проверку за секунды, а не часы. За год через нашу интеграцию прошло более 10 000 транзакций со 100% успешным прохождением Travel Rule. Антиотмывочные требования FATF (Financial Action Task Force) обязывают обрабатывать переводы свыше 1000 USD, и Notabene — единственное решение, которое покрывает 500+ VASP глобально.
Почему Notabene для Travel Rule?
Notabene — не единственный провайдер, но он лидирует по глубине интеграции. Сеть объединяет более 500 VASP в 30+ странах. Скорость обмена сообщениями — менее 5 секунд. Альтернативы: ручной обмен CSV-файлами занимает часы и даёт 10% ошибок. Notabene автоматически разрешает конфликты, поддерживает статусную модель transfer и обработку unhosted wallets. Согласно FATF, Travel Rule обязателен для переводов >1000 USD. Без Notabene вы рискуете блокировками и штрафами, а экономия от автоматизации достигает десятков тысяч долларов в год.
Как происходит настройка SDK и аутентификация
import { NotabeneSDK } from "@notabene/javascript-sdk"; const sdk = new NotabeneSDK({ audience: "https://api.notabene.id", clientId: process.env.NOTABENE_CLIENT_ID, clientSecret: process.env.NOTABENE_CLIENT_SECRET, vaspDID: process.env.MY_VASP_DID, }); После получения Client ID и Client Secret мы настраиваем конфигурацию и проверяем соединение тестовым запросом. Весь процесс занимает пару часов. Детали — в официальной документации Notabene.
Как проверить VASP в сети Notabene?
- Вызовите
sdk.addresses.lookup()с адресом получателя и активом. - Если ответ содержит VASP — создайте transfer record и ждите ACK/NACK.
- Если адрес не найден — запустите unhosted flow: запросите у пользователя данные отправителя.
- В случае отсутствия данных — заблокируйте транзакцию и запишите в лог.
Этот how-to шаг покрывает 90% кейсов и интегрируется в ваш существующий пайплайн.
Статусная модель transfer
Подробнее о статусах
| Статус | Значение | Рекомендуемое действие |
|---|---|---|
| CREATED | Создан, ожидает | Запустить таймаут-мониторинг |
| SENT | Отправлен beneficiary VASP | Ждём ответ до 30 секунд |
| ACK | Получатель подтвердил | Разрешить блокчейн-перевод |
| NACK | Получатель отказал | Заморозить транзакцию, эскалация |
| EXPIRED | Нет ответа за timeout | Выполнить с логом (best-efforts) |
В отличие от ручного согласования, статусная автоматизация сводит время ответа до 1–5 секунд. 90% запросов обрабатывается за <1 секунду.
Как мы реализуем исходящий перевод (полный flow)
async function processOutgoingTransferTravelRule(withdrawal: Withdrawal) { // 1. Идентификация VASP получателя const { vasp: beneficiaryVASP } = await sdk.addresses.lookup({ address: withdrawal.destinationAddress, asset: withdrawal.asset, }); if (!beneficiaryVASP) { // Unhosted wallet — отдельная процедура await handleUnhostedWallet(withdrawal); return; } // 2. Создание transfer record const transfer = await sdk.transfers.create({ transactionAsset: withdrawal.asset, transactionAmount: withdrawal.amount.toString(), originatorVASPdid: process.env.MY_VASP_DID, beneficiaryVASPdid: beneficiaryVASP.did, originator: buildOriginatorInfo(withdrawal.user), beneficiary: { beneficiaryPersons: [], accountNumber: [withdrawal.destinationAddress] }, transactionBlockchainInfo: { origin: withdrawal.fromAddress, destination: withdrawal.destinationAddress, }, }); // 3. Ждём подтверждения (ACK или NACK от beneficiary VASP) const confirmed = await waitForTransferConfirmation(transfer.id); if (!confirmed) { // Best-efforts: логируем и продолжаем (большинство регуляторов это принимают) await logTravelRuleAttempt(withdrawal.id, transfer.id, "NO_RESPONSE"); } // 4. Выполняем вывод await executeBlockchainWithdrawal(withdrawal); } Каждый перевод сначала проверяется по адресу: если это зарегистрированный VASP — создаётся transfer record и ожидается ответ. Если адрес не найден — запускается unhosted flow: запрашиваем у пользователя данные отправителя, отправляем через Notabene как Unhosted Transfer. Без предоставления данных транзакция блокируется.
Как происходит обработка входящего перевода (webhook)
// Webhook от Notabene при получении Travel Rule data app.post("/webhooks/notabene", async (req, res) => { const { type, transfer } = req.body; if (type === "transfer.created") { await handleIncomingTravelRuleData(transfer); } res.status(200).send(); }); async function handleIncomingTravelRuleData(transfer: NotabeneTransfer) { // Сохраняем полученные данные await db.saveTravelRuleRecord({ externalId: transfer.id, senderVASP: transfer.originatorVASPdid, originator: transfer.originator, destinationAddress: transfer.transactionBlockchainInfo.destination, asset: transfer.transactionAsset, amount: transfer.transactionAmount, }); // Подтверждаем получение await sdk.transfers.update(transfer.id, { status: "ACK" }); } Webhook — критический компонент. Notabene отправляет уведомления о новых transfer records, статусах и ошибках. Мы настраиваем автоматический ACK и ретрай-политику: при временных сбоях запрос повторяется до 3 раз с экспоненциальной задержкой.
Типичные ошибки при интеграции
Первая ошибка — не настроена ретрай-политика для webhook. Если Notabene временно недоступен, вы теряете запросы. Вторая — игнорирование статуса EXPIRED: лучше выполнить перевод с логом, чем заблокировать всех клиентов. Третья — некорректное формирование originatorInfo: имя, адрес, ID документа — все поля должны точно совпадать с KYC. Ошибка в одном символе приводит к NACK от получателя. Мы автоматически валидируем данные перед отправкой, что снижает количество отказов на 90%.
Сравнение подходов к Travel Rule:
| Характеристика | Ручная обработка | Notabene с нами |
|---|---|---|
| Время на транзакцию | 1-4 часа | < 10 секунд |
| Ошибки в данных | 10% | < 0.5% |
| Охват VASP | Ограничен партнёрами | 500+ VASP глобально |
| Unhosted wallets | Отсутствует | Полная поддержка |
Экономическая эффективность автоматизации
Автоматизация Travel Rule через Notabene сокращает операционные затраты на 70–90%. Вместо команды из 3–5 compliance-офицеров, обрабатывающих вручную, вы получаете систему, которая работает 24/7. Снижение времени обработки с часов до секунд уменьшает удержание клиентов на 30%. Дополнительно исключаются штрафы за несоблюдение FATF, которые могут достигать сотен тысяч долларов.
Что входит в deliverables
- Настройка SDK и аутентификации в вашем окружении
- Реализация flow для исходящих переводов (включая unhosted wallets)
- Интеграция webhook для входящих переводов
- Таблицы маршрутизации и обработки ошибок
- Покрытие тестами: 100+ кейсов (ACK, NACK, EXPIRED, unhosted, сетевые ошибки)
- Документация по развёртыванию и мониторингу
- Обучение вашей команды (2 часа онлайн)
- Пост-релизная поддержка 1 месяц
Сколько времени занимает интеграция?
Ориентировочные сроки: от 2 до 4 недель в зависимости от сложности платформы. Для оценки вашего проекта свяжитесь с нами — мы проведём аудит текущего compliance за один день. Закажите пилотный запуск на одном инструменте: вы увидите, как автоматизация меняет бизнес, и примете решение о полном внедрении. Получите консультацию по интеграции Notabene уже сегодня.







