Upload CSV or register single address

In the Notabene dashboard, you can upload the current list of your operational wallet addresses in a CSV file. Once processed, Notabene will then automatically compare the destination address of your incoming travel rule messages against it and confirm that the address belongs to you.

The content of this CSV file needs to be formatted like this:

assetaddresscustomerRef
ETH0x1c7013B6C7250E6A8d6F87f22aa19fa8DB89694fAlice@SG987654321
BTC0xf92A864B7852DE1005ED4477cFFb8AAe5897B963Alice@SG987654321
USDT0x3b964fEc02c54395d5386B5AA2EDe3A91Ec7A28aAlice@SG987654321
XRPrPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDYMasterWallet
XRPrPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY:12345Alice@SG987654321

If the address in the incoming travel rule message is present in the list you have uploaded, the status of the travel rule message will change to "ACK" and the full travel rule 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.

If there are no hits on the originator person or the originating wallet address, the travel rule should automatically change status to "ACCEPTED" after being processed by your rules.

Notabene will allow you upload CSV files of up to 100MB. Since processing your CSV file can take long, we inform you of the progress, sending you a summary email when the process ends.

📘

New addresses

This manual method works if your list of operational wallet addresses remains fairly static. If you frequently have new addresses, you can schedule an automated upload using API.





Uploading a CSV file using the API

To upload an address book using API, you must first request the upload URL:

{{baseUrl}}/address/upload/:vaspDID
{
    "uploadUrl": "https://api.notabene.dev/upload?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJpYXQiOjE2NTUxMDcyNzAsImV4cCI6MTY1NTEwNzg3MCwiQGNvbnRleHQiOlsiaHR0cHM6Ly9hcGkubm90YWJlbmUuaWQvc2NoZW1hcy92MSJdLCJ0eXBlIjpbIlVwbG9hZFVybCJdLCJ1cGxvYWRNZXRhZGF0YSI6eyJrZXkiOiJkaWQ6ZXRocjoweGQ0YmQ5MDJlYzc4NTc4ZjMzYTIwZmY2MDE1MDRkMmFiMzI0Y2ZhYjkvYWRkcmVzcy8xNjU1MTA3MjcwNjM3IiwidXBsb2FkVHlwZSI6ImFkZHJlc3NMfgwergidXNlckRJRCI6ImRpZDpldGhyOjB4ZWZiYjE0YjczNDczY2NmZDYxMDU0M2FmNGIxYzhmZGEwMjdjNTdiZiIsImV4dHJhIjp7InZhc3BESUQiOiJkaWQ6ZXRocjoweGQ0YmQ5MDJlYzc4NTc4ZjMzYTIwZmY2MDE1MDRkMmFiMzI0Y2ZhYjkifX0sImlzcyI6ImRpZDpldGhyOjB4MTliNWZmODQ0MDAxOWI2MzVhODZiYmI2MzJkYjg1NGYyZWE4MDQyMyJ9.crPXp5VRT3wc6u6314ivu82eKu8xhkSksbS2ypkULkrT8DoXVkzzpobZIyQzJBw01Eu7r4l_FGFsnElMY-K2bQ"
}

Use the URL above in a POST request with a CSV file in the payload as form data:

curl --location '{{uploadUrl}}' --form 'file=@"/path/to/your/addresses.csv"'

The CSV file will be processed asynchronously by Notabene, returning a response like this:

{
    "text": "File uploaded!",
    "uploadedFile": {
        "locationURL": "s3://app-demo-s3/did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9/address/1680688383515",
        "mimeType": "text/csv",
        "name": "sample.csv",
        "metadata": {
            "key": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9/address/1680688383515",
            "uploadType": "addressList",
            "userDID": "did:ethr:0x1361d9d395ec01369042bcb7631fd80a4d564ac9",
            "extra": {
                "vaspDID": "did:ethr:0xd4bd902ec78578f33a20ff601504d2ab324cfab9",
                "counter": 0
            }
        }
    }
}




Registering a single address using the API

It is also possible to add a single address ad-hoc by calling: https://api.notabene.dev/address/registerCustomer

{
    "vaspDID": "{{vaspDID}}",
    "asset": "ETH",
    "address": "0x1c7013B6C7250E6A8d6F87f22aa19fa8DB89694f",
    "customerRef": "Alice@SG987654321"
}

Is also possible to check the current list of registered addresses and delete all or part of them using this API endpoints.



Registering an address with memo/tag

Notabene recommends adding the tag after the address when calling txCreate (destination:tag).

To enable address discovery on these types of addresses, you would need to register it in the same format:

{
"vaspDID": "{{vaspDID}}",
"asset": "XRP",
"address": "rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY:12345",
"customerRef": "{{$guid}}"
}

However, there is a risk that the counterparty is not adding the tag to the destination address and instead uses it in the accountNumber field. Therefore it might be beneficial to register the master address as well (without any of the tags):

{
"vaspDID": "{{vaspDID}}",
"asset": "XRP",
"address": "rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY",
"customerRef": "{{$guid}}"
}

📘

CSV

The same recommendation also applies if you wish to upload these in a CSV:

  1. All the address:tags/memos you have, plus
  2. Just the master address without the tags/memos

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: