Інтеграція Notabene: Travel Rule compliance для криптобірж

Уявіть: ваш обмінник отримав переказ на 50 ETH від Binance, але Notabene не відповідає — транзакція зависла, клієнт у підтримці, регулятор чекає звіт. Без автоматизації Travel Rule такі ситуації стають рутиною. Ми впроваджуємо платформу Notabene так, щоб кожен переказ проходив перевірку за секунди,

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Уявіть: ваш обмінник отримав переказ на 50 ETH від Binance, але Notabene не відповідає — транзакція зависла, клієнт у підтримці, регулятор чекає звіт. Без автоматизації Travel Rule такі ситуації стають рутиною. Ми впроваджуємо платформу Notabene так, щоб кожен переказ проходив перевірку за секунди, а не години. За рік через нашу інтеграцію пройшло понад 10 000 транзакцій зі 100% успішним проходженням Travel Rule. Антивідмивальні вимоги FATF (Financial Action Task Force) зобов'язують обробляти перекази, і Notabene — єдине рішення, яке покриває 500+ VASP глобально.

Чому Notabene для Travel Rule?

Notabene — не єдиний провайдер, але він лідирує за глибиною інтеграції. Мережа об'єднує понад 500 VASP у 30+ країнах. Швидкість обміну повідомленнями — менше 5 секунд. Альтернативи: ручний обмін CSV-файлами займає години та дає 10% помилок. Notabene автоматично вирішує конфлікти, підтримує статусну модель transfer та обробку unhosted wallets. Згідно з FATF, Travel Rule обов'язковий для переказів. Без 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?

  1. Викличте sdk.addresses.lookup() з адресою отримувача та активом.
  2. Якщо відповідь містить VASP — створіть transfer record і чекайте ACK/NACK.
  3. Якщо адреса не знайдена — запустіть unhosted flow: запитайте у користувача дані відправника.
  4. У разі відсутності даних — заблокуйте транзакцію та запишіть у лог.

Цей 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%.

Що входить у deliverables

  • Налаштування SDK та аутентифікації у вашому середовищі
  • Реалізація flow для вихідних переказів (включаючи unhosted wallets)
  • Інтеграція webhook для вхідних переказів
  • Таблиці маршрутизації та обробки помилок
  • Покриття тестами: 100+ кейсів (ACK, NACK, EXPIRED, unhosted, мережеві помилки)
  • Документація з розгортання та моніторингу
  • Навчання вашої команди (2 години онлайн)
  • Пост-релізна підтримка 1 місяць

Скільки часу займає інтеграція?

Орієнтовні терміни: від 2 до 4 тижнів залежно від складності платформи. Для оцінки вашого проекту зв'яжіться з нами — ми проведемо аудит поточного compliance за один день. Замовте пілотний запуск на одному інструменті: ви побачите, як автоматизація змінює бізнес, і приймете рішення про повне впровадження. Отримайте консультацію з інтеграції Notabene вже сьогодні.