Verify address using API ad-hoc

If you do not wish to upload your entire address book and leave the look-up to us, you can verify that you control the address on-demand by looking up the "destination address" that is pushed by the notification webhook for an incoming travel rule message and querying it against your list of addresses. If you find the address, you call txConfirm, and if you don't, txReject.

{
  "id": "74a66a4d-7533-4dd7-a402-5b531af227ab",
  "status": "SENT",
  "transactionType": "TRAVELRULE",
  "transactionAsset": "BTC",
  "transactionAmount": "72000000000",
  "chargedQuantity": 14649840,
  "amountInLocalCurrency": "{\"currency\":\"SGD\",\"amountInLocalCurrency\":20525040}",
  "originatorDid": "did:ethr:0x85c6553e19a87ca83fe25e3a95ecae0dd95494ef",
  "beneficiaryDid": "did:ethr:0x34b661302d841329208691b0d4d5d367ae750079",
  "isTest": null,
  "originatorVASPdid": "did:ethr:0x940a4b2a0932733b842e4aa906761bb3d3bd8148",
  "beneficiaryVASPdid": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
  "transactionBlockchainInfo": {
    "txHash": "",
    "origin": "39oSD4x8a9EBb1Ft7weNFbqhZZuz",
    "destination": "3uyZiAC2khxuxC26weZcrcEWubE8vEjY3"
  },
  "ivms101": {
    "originatingVASP": {
      "originatingVASP": {
        "legalPerson": {
          "name": {
            "nameIdentifier": [
              {
                "legalPersonName": "GoodbyeFiat",
                "legalPersonNameIdentifierType": "LEGL"
              }
            ]
          }
        }
      }
    },
    "beneficiaryVASP": {
      "beneficiaryVASP": {
        "legalPerson": {
          "name": {
            "nameIdentifier": [
              {
                "legalPersonName": "Notabene VASP SG",
                "legalPersonNameIdentifierType": "LEGL"
              }
            ]
          }
        }
      }
    },
    "beneficiary": {
      "accountNumber": [
        "89900178"
      ],
      "beneficiaryPersons": [
        {
          "naturalPerson": {
            "name": [
              {
                "nameIdentifier": [
                  {
                    "primaryIdentifier": "Emory",
                    "secondaryIdentifier": "Heller"
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  },

When you get a push message from the webhook for a newly received travel rule message, you can look up "0x467932879843268943232" in your internal address book. If this is an address that you have, you then call txConfirm with the unique 'id' of that travel rule message:

{{baseUrl}}/tx/confirm?id=a640e07a-2944-48c9-b33b-8956fbda99e8

If you do not have this address, call txReject:

{
    "id": "a640e07a-2944-48c9-b33b-8956fbda99e8",
    "reason": "This address is not in our list"
}

If you confirm that the address is yours, the status of the travel rule message will change to "ACK" and the originator details will be made available to you.

The name of the originator is then processed by your sanctions screening provider and the originating wallet address by your blockchain analytics provider (if the integration with them is enabled in our marketplace). If these integrations are not enabled, you can use the details pushed by the webhook instead to do this internally.


What’s Next

Now that you are able to confirm that an address belongs to you, let's set up the process to make sure that all incoming blockchain deposits have a corresponding travel rule message:

Did this page help you?