Blockchain addresses

Manage deposit addresses associated with your virtual account.

Depending on how virtual accounts are connected to the blockchain, the virtual accounts can be:

  • Virtual accounts with associated deposit addresses
    Customers can send funds to and receive funds from other blockchain addresses.
  • Virtual accounts with no deposit addresses
    These accounts have a cryptocurrency assigned but do not have any associated deposit addresses. The customers can send funds to and receive funds from another virtual accounts and can send funds to blockchain addresses. However, the customers cannot receive funds from blockchain addresses.

Create a deposit address for a virtual account

2 credits per API call
On Flow, additional 3000 credits are consumed for each created address.

Create a deposit address associated with a virtual account.

You can create multiple deposit addresses for one virtual account. When you have multiple deposit addresses created for the same virtual account, you aggregate various blockchain transactions from different addresses under a single account.
You can deposit funds from another blockchain address to a deposit address associated with the virtual account, and the funds will be credited to that virtual account.

Scanning for incoming deposits

By default, deposit addresses are scanned for incoming deposits. Deposit addresses are automatically synchronized with the associated virtual account, and you can see incoming deposits on the virtual account.
Scanning deposit addresses for incoming deposits consumes 20 credits per address per day.

If you want to be notified about certain events occurring on the deposit addresses, subscribe for notifications.

Virtual account cryptocurrency

Depending on the cryptocurrency of the virtual account, this API generates:

  • Public address for BTC, BCH, ETH, or LTC
  • DestinationTag for XRP
  • Message for XLM

For fore information about supported blockchains and address types, see the API for creating virtual accounts.

Deposit addresses are generated in the natural order of the extended public key provided in the virtual account. The derivation index is the representation of that order; it starts from 0 and ends at 2^31.

When a new deposit address is generated, the last not used index is used to generate the address. You can skip some addresses to a different index, which means all the skipped addresses will no longer be used.

SecurityX-API-Key
Request
path Parameters
id
required
string

Account ID

Example: 5e68c66581f2ee32bc354087
query Parameters
index
number

Derivation path index for specific address. If not present, last used index for given xpub of account + 1 is used. We recommend not to pass this value manually, since when some of the indexes are skipped, it is not possible to use them lately to generate address from it.

Example: index=2
Responses
200

OK

400

Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.

401

Unauthorized. Not valid or inactive subscription key present in the HTTP Header.

403

Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.

500

Internal server error. There was an error on the server while processing the request.

post/v3/offchain/account/{id}/address
Request samples
Response samples
application/json
{
  • "address": "7c21ed165e294db78b95f0f181086d6f",
  • "currency": "BTC",
  • "derivationKey": 2147483647,
  • "xpub": "xpub6FB4LJzdKNkkpsjggFAGS2p34G48pqjtmSktmK2Ke3k1LKqm9ULsg8bGfDakYUrdhe2EHw5uGKX9DrMbrgYnVfDwrksT4ZVQ3vmgEruo3Ka",
  • "destinationTag": 5,
  • "memo": "5",
  • "message": "5"
}

Get all deposit addresses for a virtual account

1 credit per API call

Get all deposit addresses generated for a virtual account.

SecurityX-API-Key
Request
path Parameters
id
required
string

The ID of the virtual account to get deposit addresses for

Example: 5e68c66581f2ee32bc354087
Responses
200

OK

400

Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.

401

Unauthorized. Not valid or inactive subscription key present in the HTTP Header.

500

Internal server error. There was an error on the server while processing the request.

get/v3/offchain/account/{id}/address
Request samples
Response samples
application/json
[
  • {
    }
]

Create multiple deposit addresses for a virtual account

2 credits per API call + 1 credit for each created address
On Flow, additional 3000 credits are consumed for each created address.

Create multiple deposit addresses associated with a virtual account.

When you have multiple deposit addresses created for the same virtual account, you aggregate various blockchain transactions from different addresses under a single account.
You can deposit funds from another blockchain address to a deposit address associated with the virtual account, and the funds will be credited to that virtual account.

Scanning for incoming deposits

By default, deposit addresses are scanned for incoming deposits. Deposit addresses are automatically synchronized with the associated virtual account, and you can see incoming deposits on the virtual account.
Scanning deposit addresses for incoming deposits consumes 20 credits per address per day.

If you want to be notified about certain events occurring on the deposit addresses, subscribe for notifications.

Virtual account cryptocurrency

Depending on the cryptocurrency of the virtual account, this API generates:

  • Public address for BTC, BCH, ETH, or LTC
  • DestinationTag for XRP
  • Message for XLM

For fore information about supported blockchains and address types, see the API for creating virtual accounts.

Deposit addresses are generated in the natural order of the extended public key provided in the virtual account. The derivation index is the representation of that order; it starts from 0 and ends at 2^31.

When a new deposit address is generated, the last not used index is used to generate the address. You can skip some addresses to a different index, which means all the skipped addresses will no longer be used.

SecurityX-API-Key
Request
Request Body schema: application/json
required
Array of objects
Array
accountId
required
string = 24 characters

ID of the account, for which blockchain address will be created.

derivationKey
integer <int32> [ 0 .. 2147483647 ]

Derivation key index for given address to generate. If not present, first not used address will be created.

Responses
200

OK

400

Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.

401

Unauthorized. Not valid or inactive subscription key present in the HTTP Header.

403

Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.

500

Internal server error. There was an error on the server while processing the request.

post/v3/offchain/account/address/batch
Request samples
application/json
{
  • "addresses": [
    ]
}
Response samples
application/json
[
  • {
    }
]

Check whether a blockchain address is assigned to a virtual account

1 credit per API call

Check whether a blockchain address with the specified cryptocurrency is registered within Tatum and is assigned to a virtual account (that is, whether this blockchain address is a deposit address associated with the virtual account).

If the blockchain address is assigned to a virtual account, information about this account is returned. Otherwise, an error message is returned.

SecurityX-API-Key
Request
path Parameters
currency
required
string

The cryptocurrency of the blockchain address to check

Example: BNB
address
required
string

The blockchain address to check

Example: tbnb1sfj9981j2eo1ij2e09
query Parameters
index
number

In case of XLM or XRP, this is a memo or DestinationTag to search for.

Example: index=1
Responses
200

OK

400

Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.

401

Unauthorized. Not valid or inactive subscription key present in the HTTP Header.

403

Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.

500

Internal server error. There was an error on the server while processing the request.

get/v3/offchain/account/address/{address}/{currency}
Request samples
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "balance": {
    },
  • "currency": "BTC",
  • "frozen": false,
  • "active": true,
  • "customerId": "5e68c66581f2ee32bc354087",
  • "accountNumber": "123456",
  • "accountCode": "03_ACC_01",
  • "accountingCurrency": "EUR",
  • "xpub": "xpub6FB4LJzdKNkkpsjggFAGS2p34G48pqjtmSktmK2Ke3k1LKqm9ULsg8bGfDakYUrdhe2EHw5uGKX9DrMbrgYnVfDwrksT4ZVQ3vmgEruo3Ka"
}

Assign a blockchain address to a virtual account

2 credits per API call

Assign an existing blockchain address to a virtual account. The blockchain address becomes a deposit address associated with this account.
Use this API when the virtual account has no default extended public key (xpub) and deposit addresses are handled manually.

You can assign multiple blockchain addresses to one virtual account. When you have multiple blockchain addresses assigned to the same virtual account, you aggregate various blockchain transactions from different addresses under a single account.
You can deposit funds from another blockchain address to a deposit address associated with the virtual account, and the funds will be credited to that virtual account.

Scanning for incoming deposits

By default, deposit addresses are scanned for incoming deposits. Deposit addresses are automatically synchronized with the associated virtual account, and you can see incoming deposits on the virtual account.
Scanning deposit addresses for incoming deposits consumes 20 credits per address per day.

If you want to be notified about certain events occurring on the deposit addresses, subscribe for notifications.

SecurityX-API-Key
Request
path Parameters
id
required
string

The ID of the virtual account to assign a blockchain address to

Example: 5e68c66581f2ee32bc354087
address
required
string

The blockchain address to assign to the virtual account

Example: 2MsM67NLa71fHvTUBqNENW15P68nHB2vVXb
query Parameters
index
number >= 1

Destination tag or memo attribute for XRP or XLM addresses

Example: index=1
Responses
200

OK

400

Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.

401

Unauthorized. Not valid or inactive subscription key present in the HTTP Header.

403

Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.

500

Internal server error. There was an error on the server while processing the request.

post/v3/offchain/account/{id}/address/{address}
Request samples
Response samples
application/json
{
  • "address": "7c21ed165e294db78b95f0f181086d6f",
  • "currency": "BTC",
  • "derivationKey": 2147483647,
  • "xpub": "xpub6FB4LJzdKNkkpsjggFAGS2p34G48pqjtmSktmK2Ke3k1LKqm9ULsg8bGfDakYUrdhe2EHw5uGKX9DrMbrgYnVfDwrksT4ZVQ3vmgEruo3Ka",
  • "destinationTag": 5,
  • "memo": "5",
  • "message": "5"
}

Remove a deposit address from a virtual account

1 credit per API call

Remove a deposit address from the virtual account.

The deposit address will no longer be scanned for incoming deposits. You will no longer be able to generate this address again.

SecurityX-API-Key
Request
path Parameters
id
required
string

Account ID

Example: 5e68c66581f2ee32bc354087
address
required
string

Blockchain address

Example: 2MsM67NLa71fHvTUBqNENW15P68nHB2vVXb
query Parameters
index
number >= 1

Destination tag or memo attribute for XRP, BNB or XLM addresses

Example: index=1
Responses
204

OK

400

Bad Request. Validation failed for the given object in the HTTP Body or Request parameters.

401

Unauthorized. Not valid or inactive subscription key present in the HTTP Header.

403

Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.

500

Internal server error. There was an error on the server while processing the request.

delete/v3/offchain/account/{id}/address/{address}
Request samples
Response samples
application/json
{
  • "errorCode": "validation.failed",
  • "message": "Request validation failed. Please see data for additional information.",
  • "statusCode": 400,
  • "data": [
    ]
}