Trigger webhook
Introduction
Ideally, you would only execute the value transfer on the blockchain once the travel rule you send to the beneficiary VASP has been ACCEPTED.
As travel rule starts getting adopted worldwide, there are three strategies you can implement:
- Only execute when ACCEPTED;
- Time-out - execute if you do not receive a response within X minutes/hours/days;
- Execute at the same time as sending the travel rule message.
The first option is the "correct" way, but it might not be possible for every transaction.
No response
Your regulator might require you to perform enhanced Customer Due Diligence on counterparties, or post-facto submissions in lower-risk cases if you do not receive a response to your travel rule message.
Failsafe
We recommend that you implement a failsafe that kicks in if travel rule messages cannot be created for some reason or the Notabene system is down.
If a travel rule message cannot be created, you will not get the SENT status which your system might be waiting for. If this blocks the withdrawal process for your customers for a prolonged time, it might be seen as a withdrawal freeze.
It is the same if Notabene systems are down; you cannot create messages or receive responses to them. Make sure that the messages which are not created are added to a queue or similar, so that it can be sent once connection is re-established.
Using webhook to trigger blockchain actions
In the Notabene dashboard, a compliance admin can configure which of the travel rule statuses should trigger the blockchain transaction to be executed.
To support this in your integration, you need to add the Multi-Message Webhook and execute the transfer once it pushes the following message to you:
Process Blockchain Transaction
Notabene will send this message when the Transaction has reached the state in which the blockchain transaction can be done. The trigger state is meant to be set by via the setting statusToProcessBlockchain ("CREATED", "SENT", "ACK", "ACCEPTED" or null) or manually by Compliance Officers from the Dashboard (under Settings)
The message will contain the full Transaction Object (same object returned by /tx/create or /tx/info).
{
"message": "notification.processBlockchainTransaction",
"payload": {
"transaction": "..."
},
"version": "1.0.0"
}
The payload
that is pushed by the webhook is the same transaction object that is returned after txCreate.
Halt Blockchain Transaction
This message is complementary to the notification.processBlockchainTransaction one, as it depends on the same setting statusToProcessBlockchain to be implicitly enabled.
Notabene will send this message when the Transaction has reached the state in which the blockchain transaction needs to be halted. The states triggering this notification are: "CANCELLED", "REJECTED" and "DECLINED".
The message will contain the full Transaction Object (same object returned by /tx/create or /tx/info).
{
"message": "notification.haltBlockchainTransaction",
"payload": {
"transaction": "..."
},
"version": "1.0.0"
}
The payload
that is pushed by the webhook is the same transaction object that is returned after txCreate.
Duplicates
Please be aware that some messages could be sent more than once with the same payload, depending on specific use cases. Make sure you are controlling that on your end.
Adding txhash to sent travel rule
After you have received the process notification and the withdrawal is executed on the blockchain, you need to add it's transaction hash to the message. Please follow the guide on how to use txUpdate.
Webhook IP
Make sure that your Webhook is reachable by Notabene (through SVIX). The requests to your webhook will come from one of the IPs mentioned here under EU.
Updated about 1 year ago
Now that you have successfully implemented the travel rule into your withdrawal process, let's start working on automating the deposit flow which has incoming travel rule messages: