Уявіть: ваш обмінник отримав переказ на 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?
- Викличте
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%.
Що входить у deliverables
- Налаштування SDK та аутентифікації у вашому середовищі
- Реалізація flow для вихідних переказів (включаючи unhosted wallets)
- Інтеграція webhook для вхідних переказів
- Таблиці маршрутизації та обробки помилок
- Покриття тестами: 100+ кейсів (ACK, NACK, EXPIRED, unhosted, мережеві помилки)
- Документація з розгортання та моніторингу
- Навчання вашої команди (2 години онлайн)
- Пост-релізна підтримка 1 місяць
Скільки часу займає інтеграція?
Орієнтовні терміни: від 2 до 4 тижнів залежно від складності платформи. Для оцінки вашого проекту зв'яжіться з нами — ми проведемо аудит поточного compliance за один день. Замовте пілотний запуск на одному інструменті: ви побачите, як автоматизація змінює бізнес, і приймете рішення про повне впровадження. Отримайте консультацію з інтеграції Notabene вже сьогодні.







