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:
asset | address | customerRef |
---|---|---|
ETH | 0x1c7013B6C7250E6A8d6F87f22aa19fa8DB89694f | Alice@SG987654321 |
BTC | 0xf92A864B7852DE1005ED4477cFFb8AAe5897B963 | Alice@SG987654321 |
USDT | 0x3b964fEc02c54395d5386B5AA2EDe3A91Ec7A28a | Alice@SG987654321 |
XRP | rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY | MasterWallet |
XRP | rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY:12345 | Alice@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:
- All the address:tags/memos you have, plus
- Just the master address without the tags/memos
Updated 6 months ago
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: