Assets
Notabene names every crypto asset with standard identifiers, so a transfer always says exactly which token moves on which blockchain. Use them for the asset, its blockchain, the addresses and the amounts in your calls.
Assets, tokens and blockchains
| Term | What it means | Identifier |
|---|---|---|
| Asset | The instrument itself, whatever the blockchain, such as USDC or Bitcoin. | An id in your asset registry |
| Token | One deployment of an asset on one blockchain. USDC on Ethereum and USDC on Polygon are two tokens of the same asset. | CAIP-19, for example eip155:1/ |
| Blockchain | The network a token lives on. | CAIP-2, for example eip155:1 |
| Term | What it means | Identifier |
|---|---|---|
| Asset | The instrument itself, whatever the blockchain, such as USDC or Bitcoin. | An id in your asset registry |
| Token | One deployment of an asset on one blockchain. USDC on Ethereum and USDC on Polygon are two tokens of the same asset. | CAIP-19, for example eip155:1/erc20:0x... |
| Blockchain | The network a token lives on. | CAIP-2, for example eip155:1 |
Native coins have a CAIP-19 identifier too: ETH on Ethereum is eip155:1/slip44:60, and BTC is bip122:000000000019d6689c085ae165831e93/slip44:0.
Naming the asset in a transfer
In asset, send the token’s CAIP-19 identifier. You can also send a plain symbol such as ETH or BTC, which Notabene resolves to its CAIP-19 identifier, and transfers and webhooks then show that identifier. Use CAIP-19 for any token that exists on more than one blockchain, such as USDT on Ethereum and on Polygon, so there is no doubt about which one you mean.
{
"asset": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"amount": "250.00",
"settlement_address": "eip155:1:0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"
}
{
"asset": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"amount": "250.00",
"settlement_address": "eip155:1:0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"
}The full call is in Withdrawals, and the other fields that describe the movement of funds follow the same standards.
| Field | Format | Example |
|---|---|---|
amount string, decimal | The amount in whole units of the asset, as a decimal string. | "0.5" for 0.5 ETH, not an amount in wei |
settlement_address, source_address string, CAIP-10 | CAIP-10. A bare address is read on the asset’s blockchain. | eip155:1:0x5aAe…eAed |
settlement_id string, CAIP-220 | CAIP-220, or a raw transaction hash read on the address’s blockchain. | eip155:1:tx/ |
memo_tag string | The XRPL destination tag or Stellar memo. It is the same as appending :tag to the address. | "1234567" |
| Field | Format | Example |
|---|---|---|
amount, string, decimal | The amount in whole units of the asset, as a decimal string. | "0.5" for 0.5 ETH, not an amount in wei |
settlement_address, source_address, string, CAIP-10 | CAIP-10. A bare address is read on the asset’s blockchain. | eip155:1:0x5aAe…eAed |
settlement_id, string, CAIP-220 | CAIP-220, or a raw transaction hash read on the address’s blockchain. | eip155:1:tx/0x9b1f… |
memo_tag, string | The XRPL destination tag or Stellar memo. It is the same as appending :tag to the address. | "1234567" |
Find an asset
Search Notabene’s asset list by symbol, name, blockchain or contract address. Each result shows the symbols you can send in asset and the CAIP-19 identifier they resolve to.
To resolve one symbol or identifier from your backend instead, call GET /api/v1/customers/{customer}/assets/resolve?asset=USDT-ETH, which answers with its CAIP-19 identifier, its blockchain, its name and its decimals.
Fiat value and thresholds
Notabene values each transfer in fiat to compare it with the Travel Rule threshold that applies. To use your own valuation, send fiat_amount_usd with the transfer, and it then takes precedence over Notabene’s pricing as the value the threshold is compared against. Send it for any asset Notabene cannot price, and when you assess such a transfer, fiatAmountUsd is required.
Your currencies, under My Organization › Currencies in the dashboard, are the fiat currencies amounts are shown in and thresholds are measured in. GET /api/v1/currencies lists them.
The tokens you support
Each token carries a support status that your token rules use, so a transfer in a token you do not support can be flagged or rejected automatically. You see and change it in the dashboard under My Organization › Tokens.
| Token status | What your token rules do |
|---|---|
| Supported | Approve the transfer. |
| Watched | Flag the transfer for review. |
| Not supported | Reject the transfer. |
| Not reviewed | Use the verdict you set for Not reviewed tokens, if you set one. |
| Token status | What your token rules do |
|---|---|
| Supported | Approve the transfer. |
| Watched | Flag the transfer for review. |
| Not supported | Reject the transfer. |
| Not reviewed | Use the verdict you set for Not reviewed tokens, if you set one. |
Blockchains, under My Organization › Blockchains, have a support status too but no rules of their own, so their status reaches a transfer only through their tokens.
- When a blockchain is Not supported, every token on it becomes Not supported.
- When a blockchain is Not reviewed, every token on it becomes Not reviewed.
- When a blockchain is Supported, its tokens stay Not reviewed until you mark each one Supported.
- Marking a token Supported also marks its blockchain Supported.
- A token used in a transfer you create is added to your supported tokens automatically.
Through the API, GET /api/v1/tokens and GET /api/v1/chains list your tokens and blockchains with their status, and PUT /api/v1/tokens/{id}/trust and PUT /api/v1/chain/trust/{caip2} change it. How the API values New, Authorized, Flagged, Banned and HumanReview correspond to these statuses is still to be confirmed. (placeholder)
Adding a token or a blockchain
If a token is missing from your lists, register it with POST /api/v1/tokens, which takes the token’s CAIP-19 identifier, its blockchain, contract address, decimals, name and symbol. Add asset_id to link the token to an asset in your registry, so that the same asset on several blockchains stays one asset. A missing blockchain goes to POST /api/v1/chains with its CAIP-2 identifier and its name, while POST /api/v1/assets registers an asset.
Updated about 6 hours ago
