Executing blockchain withdrawal

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:

  1. Only execute when ACCEPTED;
  2. Time-out - execute if you do not receive a response within X minutes/hours/days;
  3. 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.



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.

Adding txhash to sent travel rule

After the travel rule has been accepted by the beneficiary VASP (status=ACCEPTED) and the withdrawal of funds has been registered on the blockchain, you need to add its transaction hash to the travel rule you created for it with txUpdate.

    "id": "{{transaction_ID}}",
    "txHash": "2cc8796a-9a77-41e3-b120-7e4cdce590bc3333333333"

Sending both at the same time

If you are going to send the funds on the blockchain and the travel rule at the same time, we suggest that you complete the blockchain transfer first so that you can already add the txhash when creating and sending the travel rule message:

    "transactionAsset": "btc",
    "transactionAmount": "72000000000",
    "originatorVASPdid": "{{vaspDID}}",
    "beneficiaryVASPdid": "did:ethr:0x270d4f239359471f1d1c80781a53cf8105f7d08f",
    "transactionBlockchainInfo": {
        "txHash": "ec2632ef7facdba0c9a6a2f6479cf9295392a90b4b6f73ab3001d607f7b0ef56",
        "origin": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wl4",
        "destination": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"

What’s Next

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: