Nested VASP redirect

What is nested VASPs

Multi-entity support or nested VASPs is crucial for Travel Rule compliance, as many Originating and Beneficiary VASPs have entities in multiple locations. When end customers want to send funds to these, it might be difficult for them to identify the exact subsidiary that should receive the transaction.

For example, when Alice sends a transaction to Bob's BitNice account, she likely doesn't know if his account is with BitNice Singapore or BitNice Malaysia.

How does it work

Notabene supports subsidiary VASP profiles that can be connected to a parent VASP:

  • Each subsidiary will have its own profile
  • All subsidiaries of a VASP are connected to a parent VASP
  • Originator VASP and customer only see (and only need to identify) the parent VASP
  • The parent VASP forwards Travel Rule data transfers to the right subsidiaries


Parent VASP

The parent needs to have access to the blockchain address book of all the subsidiaries so that it know where to redirect the travel rule message.

With this nesting enabled, the Originator Customer (Alice) will only have to identify the Parent Beneficiary VASP (BitNice), where the Travel Rule data transfer will be directed. BitNice will then route the transaction to the correct subsidiary.

How to redirect transactions

If your VASPs are nested, you need to implement a way to redirect travel rule messages that are sent to the parent VASP to the correct subsidiary VASP. To do this, you need to know all the wallet addresses that each subsidiary VASP owns or a way to query each VASP in real-time for that answer.

Once you know which VASP should receive the travel rule message, you can use txRedirect together with the ID of the travel rule message you have received, and the DID of the child-VASP that should receive it.

BitNice has recieved a travel rule message from VASPA which looks like this:

  "id": "f3473feb-a283-4525-b414-ece7774230ce",
  "status": "SENT",
  "transactionType": "TRAVELRULE",
  "transactionAsset": "BTC",
  "transactionAmount": "336209107",
  "chargedQuantity": 109.62,
  "amountInLocalCurrency": null,
  "originatorDid": "did:ethr:0xbacbd49275e6c5e818bf735a112e4ed7a6c9882e",
  "beneficiaryDid": "did:ethr:0x5385b966b7cbc19cfce40703cb20c895b1c32827",
  "isTest": null,
  "originatorVASPdid": "did:ethr:0x049fc13a4f1e79d4d03f082ca96758179a91da29",
  "beneficiaryVASPdid": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
  "transactionBlockchainInfo": {
    "txHash": "",
    "origin": "3qR7cZYmhJvKc75P6UEqPVseQF8z",
    "destination": "1CX6qbQd9yucgckJyCY9Mv86R"
  "ivms101": {
    "originator": {
      "originatorPersons": [

They lookup the destination address (1CX6qbQd9yucgckJyCY9Mv86R) and sees that this belongs to BitNice UK (did:ethr:0x54768b1da0c6f1bd0fda15dc6c55cbba40f85744), so they redirect it to there using the API: