Received deposit vs. travel rule

Every time your VASP receives a blockchain deposit, you can use txNotify to check if it has travel rule data:

🚧

Token

This call uses the accessToken

{
    "txHash": "0xc93e0d531a233fe207808feb3c9d224694fa8c5313ac59ff54ef50f67e1aa55a",
    "transactionAmount": "1234000000000000",
    "transactionAsset": "ETH",
    "beneficiaryVASPdid": "{{vaspDID}}",
    "destination": "0x95dceec19dcc8ea575e4acc9ded3e800b4170fda",
    "origin": "0x061f7937b7b2bc7596539959804f86538b6368dc"
}

When you call txNotify, it will look into your received travel rule data transfers and if we find a corresponding one that matches the transaction hash, it will return the details of that travel rule message.

📘

Delay

Since the txNotify checks if there is a matching transaction hash to see if there is a travel rule message for it, this only works if the hash has been added by the originating VASP after the value transfer on the blockchain.

In some cases it might take them a short while to add this, so doing txNotify and then txInfo on the message ID a few minutes later before starting data collection might show that the travel rule message has been received.

If that corresponding message has been "ACCEPTED", you can release the funds to your customer. If it is still pending, you should withhold the funds until the travel rule information has been reviewed by the compliance team.

{
    "id": "c5e0569a-edee-48ea-8946-9320fcdf9611",
    "status": "ACCEPTED",
    "transactionType": "TRAVELRULE",
    "transactionAsset": "BTC",
    "transactionAmount": "1234000000000000",
    "chargedQuantity": 313078140000,
    "showToBeneficiary": true,
    "originatorDid": null,
    "beneficiaryDid": "did:ethr:0x86f5388895c840b6b9ff45045df751e3bb8ee761",
    "originatorVASPdid": "did:ethr:0x940a4b2a0932733b842e4aa906761bb3d3bd8148",
    "beneficiaryVASPdid": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
    "transactionBlockchainInfo": {
        "txHash": "0xc93e0d531a233fe207808feb3c9d224694fa8c5313ac59ff54ef50f67e1aa55a",
        "origin": "0x061f7937b7b2bc7596539959804f86538b6368dc",
        "destination": "0x95dceec19dcc8ea575e4acc9ded3e800b4170fda"
    },

If no corresponding travel rule data for the transaction hash is found, a new one will be automatically created with the available data from your txNotify request. This travel rule message will be created with the INCOMPLETE status:

{
    "id": "c5e0569a-edee-48ea-8946-9320fcdf9611",
    "status": "INCOMPLETE",
    "transactionType": "TRAVELRULE",
    "transactionAsset": "BTC",
    "transactionAmount": "1234000000000000",
    "chargedQuantity": 313078140000,
    "showToBeneficiary": true,
    "originatorDid": null,
    "beneficiaryDid": "did:ethr:0x86f5388895c840b6b9ff45045df751e3bb8ee761",
    "originatorVASPdid": "did:ethr:0x940a4b2a0932733b842e4aa906761bb3d3bd8148",
    "beneficiaryVASPdid": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
    "transactionBlockchainInfo": {
        "txHash": "0xc93e0d531a233fe207808feb3c9d224694fa8c5313ac59ff54ef50f67e1aa55a",
        "origin": "0x061f7937b7b2bc7596539959804f86538b6368dc",
        "destination": "0x95dceec19dcc8ea575e4acc9ded3e800b4170fda"
    },
    "createdBy": "did:ethr:0xefbb14b73473ccfd610543af4b1c8fda027c57bf",
    "updatedBy": "did:ethr:0xefbb14b73473ccfd610543af4b1c8fda027c57bf",
    "isTest": null,
    "ivms101": null,
    "ivms101Encrypted": null,
    "protocol": null,
    "protocolData": null,
    "originatorProof": null,
    "beneficiaryProof": null,
    "originatorPIIref": null,
    "beneficiaryPIIref": null,
    "createdAt": "2022-06-13T03:36:33.482Z",
    "updatedAt": "2022-06-13T03:36:33.482Z"
}

Originator VASP information might be automatically returned if you have previously successfully interacted with the origin blockchain address. If the origin address is unknown, it will return "originatorVASPdid": null.

📘

Extra

See the Sequence Diagrams for deposits that cover both of the scenarios above.

Completing an incomplete travel rule message

There are a few ways to gather the required information you need to complete these:

  1. Before releasing the funds to the recipient, ask them to provide details about the originator.
  2. If the originating VASP is identifiable and reachable, Notabene will automatically send a message to them and request that a travel rule message is sent.
  3. If neither of the options above are possible, you need to decide if you release the funds or withhold them until you have the information you need.

To facilitate the collection of information in #1, you can either set up an email that is sent to the beneficiary that asks for it, or create a page where customers go to fill it in:

You have received 1234 BTC from 0x061f7937b7b2bc7596539959804f86538b6368dc.
The transaction hash of this deposit is: 0xc93e0d531a233fe207808feb3c9d224694fa8c5313ac59ff54ef50f67e1aa55a.

Since the amount requires us to verify the originator before we can credit them to your account, please provide the following details:
First name: Bruce
Last name: Wayne

For Singapore requirements, also provide one of the following:

1. Address information
Building number:
Street:
City:
Country:

2. Date and place of birth
Date of Birth:
Place of Birth:

3. National ID
ID number: 123EE22
ID type: DRLC
Country of issue: DC

Our reference: cad5d297-d2df-41c9-b2d7-53c131f71927

SUBMIT

Clicking on "submit" triggers txUpdate below.

Updating an incomplete travel rule message

Once you have collected the missing information, txUpdate can be used together with the travel rule ID and the other details to update the incomplete travel rule message:

{
    "id": "c5e0569a-edee-48ea-8946-9320fcdf9611",
    "originatorVASPdid": "did:ethr:0x940a4b2a0932733b842e4aa906761bb3d3bd8148",
    "originatorVASPname": "",
    "originator": {
        "originatorPersons": [
            {
                "naturalPerson": {
                    "name": [
                        {
                            "nameIdentifier": [
                                {
                                    "primaryIdentifier": "Bruce",
                                    "secondaryIdentifier": "Wayne"
                                }
                            ]
                        }
                    ],
                    "nationalIdentification": {
                        "countryOfIssue": "DC",
                        "nationalIdentifier": "123EE22",
                        "nationalIdentifierType": "DRLC"
                    }
                }
            }
        ],
        "accountNumber": [
            "0x061f7937b7b2bc7596539959804f86538b6368dc"
        ]
    },
    "beneficiary": {
        "beneficiaryPersons": [
            {
                "naturalPerson": {
                    "name": [
                        {
                            "nameIdentifier": [
                                {
                                    "primaryIdentifier": "Wunderland",
                                    "secondaryIdentifier": "Alice"
                                }
                            ]
                        }
                    ]
                }
            }
        ],
        "accountNumber": [
            "123456789"
        ]
    }
}

Requesting the originating VASP to provide all details

{
    "id": "c5e0569a-edee-48ea-8946-9320fcdf9611",
    "originatorVASPdid": "did:ethr:0x049fc13a4f1e79d4d03f082ca96758179a91da29"
}

This will create an incomplete travel rule message for the originating VASP where they can provide the information about both the originator and the beneficiary.

Requesting the originating VASP to provide originator details

{
    "id": "c5e0569a-edee-48ea-8946-9320fcdf9611",
    "originatorVASPdid": "did:ethr:0x049fc13a4f1e79d4d03f082ca96758179a91da29",
    "beneficiary": {
        "beneficiaryPersons": [
            {
                "naturalPerson": {
                    "name": [
                        {
                            "nameIdentifier": [
                                {
                                    "primaryIdentifier": "Wunderland",
                                    "secondaryIdentifier": "Alice"
                                }
                            ]
                        }
                    ]
                }
            }
        ],
        "accountNumber": [
            "{{$randomBankAccount}}"
        ]
    }
}

This will create an incomplete travel rule message for the originating VASP where they can provide the information about the originator.

Statuses for txNotify

📘

Status flow

txNotify = ACCEPTED / REJECTED

txNotify = INCOMPLETE
txUpdate = SENT
txConfirm = ACK
txAccept/txReject = ACCEPTED / REJECTED

When calling txNotify:

a) If there is an existing travel rule message that matches the blockchain transaction details, it will return ACCEPTED or REJECTED.

b) If there is none, one will be created with INCOMPLETE status.

When calling txUpdate:

a) If you add the full set of information (originator VASP + originator + beneficiary) in the txUpdate call, it will go to SENT and from there it follows the standard travel rule flow as if it was sent from that VASP to you. This means that you need to confirm the address, then make a decision on either accepting or rejecting (keep in mind that you've already recieved the viritual assets), exactly as you would when reciveing a travel rule message.

b) If you do not add the full set of information, it will still be in INCOMPLETE status.


Did this page help you?