Blockchain operations

An endpoint to handle operations between a virtual account and the blockchain, e.g. to create blockchain transactions from virtual accounts, create custom fungible tokens and custom assets, and register them as a regular currency into the virtual account.

Send BTC from a virtual account to the blockchain

2 credits per API call.


Send BTC (Bitcoin) from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Bitcoin server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
There are two possibilites how the transaction on the blockchain can be created:
  • Using mnemonic - all of the addresses, that are generated from the mnemonic are scanned for the incoming deposits which are used as a source of the transaction. Assets, which are not used in a transaction are moved to the system address wih the derivation index 0. Address with index 0 cannot be assigned automatically to any account and is used for custodial wallet use cases. For non-custodial wallets, field attr should be present and it should be address with the index 1 of the connected wallet.
  • Using keyPair - addresses which are used as a source of the transaction are entered manually
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This method is a helper method, which internally wraps these steps:
  1. Store withdrawal - create a ledger transaction, which debits the assets on the sender account.
  2. Perform blockchain transaction
  3. Complete withdrawal - move the withdrawal to the completed state, when all of the previous steps were successful.
When some of the steps fails, Cancel withdrawal operation is used, which cancels withdrawal and creates refund transaction to the sender account. This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

address
required
string [ 1 .. 10000 ] characters

Blockchain address to send assets to. For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain addresses as a comma separated string.

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be withdrawn to blockchain.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

fee
string^[+]?((\d+(\.\d*)?)|(\.\d+))$

Fee to be submitted as a transaction fee to blockchain. If none is set, default value of 0.0005 BTC is used. Minimum fee is 0.00001 BTC.

multipleAmounts
Array of strings

For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain amounts. List of recipient addresses must be present in the address field and total sum of amounts must be equal to the amount field.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic seed - usually 12-24 words with access to whole wallet. Either mnemonic, keyPair or signature Id must be present - depends on the type of account and xpub. Tatum KMS does not support keyPair type of off-chain transaction, only mnemonic based.

xpub
required
string [ 1 .. 150 ] characters

Extended public key (xpub) of the wallet associated with the accounts and used mnemonic. Should be present, when mnemonic is used.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

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/bitcoin/transfer
Request samples
application/json
{
  • "senderAccountId": "5e68c66581f2ee32bc354087",
  • "address": "mpTwPdF8up9kidgcAStriUPwRdnE9MRAg7",
  • "amount": "0.001",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send BCH from a virtual account to the blockchain

10 credits per API call.


Send BCH (Bitcoin Cash) from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Bitcoin Cash server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
There are two possibilites how the transaction on the blockchain can be created:
  • Using mnemonic - all of the addresses, that are generated from the mnemonic are scanned for the incoming deposits which are used as a source of the transaction. Assets, which are not used in a transaction are moved to the system address wih the derivation index 0. Address with index 0 cannot be assigned automatically to any account and is used for custodial wallet use cases. For non-custodial wallets, field attr should be present and it should be address with the index 1 of the connected wallet.
  • Using keyPair - addresses which are used as a source of the transaction are entered manually
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This method is a helper method, which internally wraps these steps:
  1. Store withdrawal - create a ledger transaction, which debits the assets on the sender account.
  2. Perform blockchain transaction
  3. Complete withdrawal - move the withdrawal to the completed state, when all of the previous steps were successful.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

address
required
string [ 1 .. 10000 ] characters

Blockchain address to send assets to. For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain addresses as a comma separated string.

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be withdrawn to blockchain.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

multipleAmounts
Array of strings

For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain amounts. List of recipient addresses must be present in the address field and total sum of amounts must be equal to the amount field.

fee
string^[+]?((\d+(\.\d*)?)|(\.\d+))$

Fee to be submitted as a transaction fee to blockchain. If none is set, default value of 0.00005 BCH is used.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic seed - usually 12-24 words with access to whole wallet. Either mnemonic, keyPair or signature Id must be present - depends on the type of account and xpub. Tatum KMS does not support keyPair type of off-chain transaction, only mnemonic based.

xpub
required
string [ 1 .. 150 ] characters

Extended public key (xpub) of the wallet associated with the accounts. Should be present, when mnemonic is used.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

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/bcash/transfer
Request samples
application/json
{
  • "senderAccountId": "5e68c66581f2ee32bc354087",
  • "address": "bitcoincash:qrd9khmeg4nqag3h5gzu8vjt537pm7le85lcauzez",
  • "amount": "0.001",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send LTC from a virtual account to the blockchain

10 credits per API call.


Send LTC (Litecoin) from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Litecoin server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
There are two possibilites how the transaction on the blockchain can be created:
  • Using mnemonic - all of the addresses, that are generated from the mnemonic are scanned for the incoming deposits which are used as a source of the transaction. Assets, which are not used in a transaction are moved to the system address wih the derivation index 0. Address with index 0 cannot be assigned automatically to any account and is used for custodial wallet use cases. For non-custodial wallets, field attr should be present and it should be address with the index 1 of the connected wallet.
  • Using keyPair - addresses which are used as a source of the transaction are entered manually
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This method is a helper method, which internally wraps these steps:
  1. Store withdrawal - create a ledger transaction, which debits the assets on the sender account.
  2. Perform blockchain transaction
  3. Complete withdrawal - move the withdrawal to the completed state, when all of the previous steps were successful.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

address
required
string [ 1 .. 10000 ] characters

Blockchain address to send assets to. For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain addresses as a comma separated string.

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be withdrawn to blockchain.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

fee
string^[+]?((\d+(\.\d*)?)|(\.\d+))$

Fee to be submitted as a transaction fee to blockchain. If none is set, default value of 0.0005 LTC is used. Minimum fee is 0.00001 LTC.

multipleAmounts
Array of strings

For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain amounts. List of recipient addresses must be present in the address field and total sum of amounts must be equal to the amount field.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic seed - usually 12-24 words with access to whole wallet. Either mnemonic, keyPair or signature Id must be present - depends on the type of account and xpub. Tatum KMS does not support keyPair type of off-chain transaction, only mnemonic based.

xpub
required
string [ 1 .. 150 ] characters

Extended public key (xpub) of the wallet associated with the accounts. Should be present, when mnemonic is used.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

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/litecoin/transfer
Request samples
application/json
{
  • "senderAccountId": "5e68c66581f2ee32bc354087",
  • "address": "mpTwPdF8up9kidgcAStriUPwRdnE9MRAg7",
  • "amount": "0.001",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send FLOW from a virtual account to the blockchain

100 credits per API call. Tatum covers the fee connected to the transaction costs in subscription credits. This operation can be done on mainnet only for paid plans.


Send FLOW (Flow) or FUSD from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Flow server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
There are two possibilites how the transaction on the blockchain can be created:
  • Using mnemonic and index - private key is generated based on the index in the mnemonic.
  • Using secret - private keys is entered manually.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This method is a helper method, which internally wraps these steps:
  1. Store withdrawal - create a ledger transaction, which debits the assets on the sender account.
  2. Perform blockchain transaction
  3. Complete withdrawal - move the withdrawal to the completed state, when all of the previous steps were successful.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

account
required
string = 18 characters

Blockchain account to send from

address
required
string = 18 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent, in Flow.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic to generate private key.

index
required
number >= 0

Index to the specific address from mnemonic.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account.

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/flow/transfer
Request samples
application/json
{
  • "senderAccountId": "61b3bffddfb389cde19c73be",
  • "account": "0x955cd3f17b2fd8ad",
  • "address": "0x955cd3f17b2fd8ae",
  • "amount": "10000",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send DOGE from a virtual account to the blockchain

4 credits per API call.


Send DOGE (Dogecoin) from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Dogecoin server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
There are two possibilites how the transaction on the blockchain can be created:
  • Using mnemonic - all of the addresses, that are generated from the mnemonic are scanned for the incoming deposits which are used as a source of the transaction. Assets, which are not used in a transaction are moved to the system address wih the derivation index 0. Address with index 0 cannot be assigned automatically to any account and is used for custodial wallet use cases. For non-custodial wallets, field attr should be present and it should be address with the index 1 of the connected wallet.
  • Using keyPair - addresses which are used as a source of the transaction are entered manually
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This method is a helper method, which internally wraps these steps:
  1. Store withdrawal - create a ledger transaction, which debits the assets on the sender account.
  2. Perform blockchain transaction
  3. Complete withdrawal - move the withdrawal to the completed state, when all of the previous steps were successful.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

address
required
string [ 1 .. 10000 ] characters

Blockchain address to send assets to. For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain addresses as a comma separated string.

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be withdrawn to blockchain.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

fee
string^[+]?((\d+(\.\d*)?)|(\.\d+))$

Fee to be submitted as a transaction fee to blockchain. If none is set, default value of 1 DOGE is used.

multipleAmounts
Array of strings

For BTC, LTC, DOGE and BCH, it is possible to enter list of multiple recipient blockchain amounts. List of recipient addresses must be present in the address field and total sum of amounts must be equal to the amount field.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic seed - usually 12-24 words with access to whole wallet. Either mnemonic, keyPair or signature Id must be present - depends on the type of account and xpub. Tatum KMS does not support keyPair type of off-chain transaction, only mnemonic based.

xpub
required
string [ 1 .. 150 ] characters

Extended public key (xpub) of the wallet associated with the accounts. Should be present, when mnemonic is used.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

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/dogecoin/transfer
Request samples
application/json
{
  • "senderAccountId": "5e68c66581f2ee32bc354087",
  • "address": "mpTwPdF8up9kidgcAStriUPwRdnE9MRAg7",
  • "amount": "0.001",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send ETH from a virtual account to the blockchain

4 credits per API call.


Send ETH (Ethereum) from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Ethereum server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in Ether | MATIC | XDC | KCS.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/ethereum/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send MATIC from a virtual account to the blockchain

4 credits per API call.


Send MATIC (Polygon) or ERC-20-equivalent Polygon tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Polygon server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in Ether | MATIC | XDC | KCS.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/polygon/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send KCS from a virtual account to the blockchain

4 credits per API call.


Send KCS (KuCoin Community Chain (KCC)) or ERC-20-equivalent KCC tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If KCS server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in KCS.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

fromPrivateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/kcs/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "fromPrivateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send Ethereum ERC-20 tokens from a virtual account to the blockchain

4 credits per API call.


Send Ethereum ERC-20 tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Ethereum server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

address
required
string = 42 characters

Blockchain address to send ERC20 token to

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

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/ethereum/erc20/transfer
Request samples
application/json
{
  • "senderAccountId": "5e68c66581f2ee32bc354087",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Register a new Ethereum ERC-20 token in the virtual accountDeprecated

This method is deprecated.
Use this method instead.


2 credits per API call.

First step to create new ERC20 token with given supply on Ethereum blockchain with support of Tatum's private ledger.
This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.
The whole supply of ERC20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with ERC20 token name as account's currency.
Newly created account is frozen until the specific ERC20 smart contract address is linked with the Tatum virtual currency, representing the token.
Order of the steps to create ERC20 smart contract with Tatum private ledger support:

  1. Create ERC20 token - creates a virtual currency within Tatum
  2. Deploy ERC20 smart contract - create new ERC20 smart contract on the blockchain
  3. Store ERC20 smart contract address - link newly created ERC20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for ERC20 Tatum accounts
There is a helper method Deploy Ethereum ERC20 Smart Contract to Blockchain and Ledger, which wraps first 2 steps into 1 method.
Address on the blockchain, where all initial supply will be transferred, can be defined via the address or xpub and derivationIndex. When xpub is present, the account connected to this virtualCurrency will be set as the account's xpub.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain
The token name that you specify here must be the same as the token name in the symbol parameter of the smart contract that you are going to deploy or have already deployed for this token.

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

xpub
required
string [ 1 .. 150 ] characters

The extended public key of the wallet from which a deposit address for the virtual account will be generated
NOTE: On Solana, you only can assign an existing address to the virtual account; use the Erc20Address schema of this API.

derivationIndex
required
integer <int32> <= 2147483647

The derivation index to use together with the extended public key to generate the deposit address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

accountingCurrency
string (FiatCurrency)
Default: "USD"

The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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/ethereum/erc20
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "1000000.0",
  • "decimals": 8,
  • "description": "My Public Token",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid",
  • "derivationIndex": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "address": "0xa7673161CbfE0116A4De9E341f8465940c2211d4"
}

Deploy an Ethereum ERC-20 smart contract to the blockchain and a virtual account

4 credits per API call

Deploy an Ethereum ERC-20 smart contract. This is a helper method, which is combination of Register new ERC20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying an Ethereum ERC-20 smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 42 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/ethereum/erc20/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Send BSC from a virtual account to the blockchain

4 credits per API call.


Send BSC (BNB Smart Chain) or BEP-20 tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If BSC server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/bsc/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Register a new BNB Smart Chain BEP-20 token in the virtual accountDeprecated

This method is deprecated.
Use this method instead.


2 credits per API call.

First step to create new BEP20 token with given supply on BSC blockchain with support of Tatum's private ledger.


This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.
The whole supply of BEP20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with BEP20 token name as account's currency.
Newly created account is frozen until the specific BEP20 smart contract address is linked with the Tatum virtual currency, representing the token.
Order of the steps to create BEP20 smart contract with Tatum private ledger support:

  1. Register BEP20 token - creates a virtual currency within Tatum
  2. Deploy BEP20 smart contract - create new BEP20 smart contract on the blockchain
  3. Store BEP20 smart contract address - link newly created BEP20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for BEP20 Tatum accounts
There is a helper method Deploy BSC BEP20 Smart Contract to Blockchain and Ledger, which wraps first 2 steps into 1 method.
Address on the blockchain, where all initial supply will be transferred, can be defined via the address or xpub and derivationIndex. When xpub is present, the account connected to this virtualCurrency will be set as the account's xpub.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain
The token name that you specify here must be the same as the token name in the symbol parameter of the smart contract that you are going to deploy or have already deployed for this token.

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

xpub
required
string [ 1 .. 150 ] characters

The extended public key of the wallet from which a deposit address for the virtual account will be generated
NOTE: On Solana, you only can assign an existing address to the virtual account; use the Erc20Address schema of this API.

derivationIndex
required
integer <int32> <= 2147483647

The derivation index to use together with the extended public key to generate the deposit address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

accountingCurrency
string (FiatCurrency)
Default: "USD"

The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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/bsc/bep20
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "1000000.0",
  • "decimals": 8,
  • "description": "My Public Token",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid",
  • "derivationIndex": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "address": "0xa7673161CbfE0116A4De9E341f8465940c2211d4"
}

Deploy a BNB Smart Chain BEP-20 smart contract to the blockchain and a virtual account

4 credits per API call

Deploy a BNB Smart Chain BEP-20 smart contract. This is a helper method, which is combination of Register new BEP20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying a BNB Smart Chain BEP-20 smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 42 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/bsc/bep20/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Send KLAY from a virtual account to the blockchain

4 credits per API call.


Send KLAY or ERC-20-equivalent tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If KLAY server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in Ether | MATIC | XDC | KCS.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/klaytn/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Deploy a Klaytn ERC-20-equivalent smart contract to the blockchain and a virtual account

4 credits per API call

Deploy a Klaytn ERC-20-equivalent smart contract. This is a helper method, which is combination of Register new ERC20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying a Klaytn ERC-20-equivalent smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 42 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/klaytn/erc20/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Send XDC from a virtual account to the blockchain

4 credits per API call.


Send XDC (XinFin) or ERC-20-equivalent XinFin tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If XDC server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in Ether | MATIC | XDC | KCS.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/xdc/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Register a new XinFin ERC-20-equivalent token in the virtual accountDeprecated

This method is deprecated.
Use this method instead.


2 credits per API call.

First step to create new ERC20 token with given supply on XDC blockchain with support of Tatum's private ledger.
This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.
The whole supply of ERC20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with ERC20 token name as account's currency.
Newly created account is frozen until the specific ERC20 smart contract address is linked with the Tatum virtual currency, representing the token.
Order of the steps to create ERC20 smart contract with Tatum private ledger support:

  1. Register ERC20 token - creates a virtual currency within Tatum
  2. Deploy ERC20 smart contract - create new ERC20 smart contract on the blockchain
  3. Store ERC20 smart contract address - link newly created ERC20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for ERC20 Tatum accounts
There is a helper method Deploy XDC ERC20 Smart Contract to Blockchain and Ledger, which wraps first 2 steps into 1 method.
Address on the blockchain, where all initial supply will be transferred, can be defined via the address or xpub and derivationIndex. When xpub is present, the account connected to this virtualCurrency will be set as the account's xpub.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain
The token name that you specify here must be the same as the token name in the symbol parameter of the smart contract that you are going to deploy or have already deployed for this token.

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

xpub
required
string [ 1 .. 150 ] characters

The extended public key of the wallet from which a deposit address for the virtual account will be generated
NOTE: On Solana, you only can assign an existing address to the virtual account; use the Erc20Address schema of this API.

derivationIndex
required
integer <int32> <= 2147483647

The derivation index to use together with the extended public key to generate the deposit address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

accountingCurrency
string (FiatCurrency)
Default: "USD"

The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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/xdc/erc20
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "1000000.0",
  • "decimals": 8,
  • "description": "My Public Token",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid",
  • "derivationIndex": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "address": "0xa7673161CbfE0116A4De9E341f8465940c2211d4"
}

Deploy a XinFin ERC-20-equivalent smart contract to the blockchain and a virtual account

4 credits per API call

Deploy a XinFin ERC-20-equivalent smart contract. This is a helper method, which is combination of Register new ERC20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying a XinFin ERC-20-equivalent smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 42 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/xdc/erc20/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Send ONE from a virtual account to the blockchain

4 credits per API call.


Send ONE (Harmony) or HRM-20 tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If ONE server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
query Parameters
shardID
number
Default: 0

Shard to operate on

Example: shardID=0
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in Ether | MATIC | XDC | KCS.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/one/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Register a new Harmony HRM-20 token in the virtual accountDeprecated

This method is deprecated.
Use this method instead.


2 credits per API call.

First step to create new HRM20 token with given supply on ONE blockchain with support of Tatum's private ledger.


This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.
The whole supply of HRM20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with HRM20 token name as account's currency.
Newly created account is frozen until the specific HRM20 smart contract address is linked with the Tatum virtual currency, representing the token.
Order of the steps to create HRM20 smart contract with Tatum private ledger support:

  1. Register HRM20 token - creates a virtual currency within Tatum
  2. Deploy HRM20 smart contract - create new HRM20 smart contract on the blockchain
  3. Store HRM20 smart contract address - link newly created HRM20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for HRM20 Tatum accounts
There is a helper method Deploy ONE HRM20 Smart Contract to Blockchain and Ledger, which wraps first 2 steps into 1 method.
Address on the blockchain, where all initial supply will be transferred, can be defined via the address or xpub and derivationIndex. When xpub is present, the account connected to this virtualCurrency will be set as the account's xpub.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain
The token name that you specify here must be the same as the token name in the symbol parameter of the smart contract that you are going to deploy or have already deployed for this token.

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

xpub
required
string [ 1 .. 150 ] characters

The extended public key of the wallet from which a deposit address for the virtual account will be generated
NOTE: On Solana, you only can assign an existing address to the virtual account; use the Erc20Address schema of this API.

derivationIndex
required
integer <int32> <= 2147483647

The derivation index to use together with the extended public key to generate the deposit address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

accountingCurrency
string (FiatCurrency)
Default: "USD"

The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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/one/hrm20
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "1000000.0",
  • "decimals": 8,
  • "description": "My Public Token",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid",
  • "derivationIndex": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "address": "0xa7673161CbfE0116A4De9E341f8465940c2211d4"
}

Deploy a Harmony HRM-20 smart contract to the blockchain and a virtual account

4 credits per API call

Deploy a Harmony HRM-20 smart contract. This is a helper method, which is combination of Register new HRM20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying a Harmony HRM-20 smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
query Parameters
shardID
number
Default: 0

The ID of the shard to operate

Example: shardID=0
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 42 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/one/hrm20/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Register a new ERC-20 or ERC-20-equivalent token in the virtual account

2 credits per API call.


This is the first step to create a new ERC-20 or ERC-20 equivalent token with some supply in a virtual account.


This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.
The whole supply of token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with token name as account's currency.
Newly created account is frozen until the specific smart contract address is linked with the Tatum virtual currency, representing the token.
Order of the steps to create smart contract with Tatum private ledger support:

  1. Register token (this API) - creates a virtual currency within Tatum
  2. Deploy smart contract - create new smart contract on the blockchain
  3. Store smart contract address - link newly created smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for Tatum accounts
Blockchain address will be assigned to the virtual account as a deposit address. It can be defined via the address explicitly or by using xpub and derivationIndex.

SecurityX-API-Key
Request
path Parameters
chain
required
string

Blockchain to work with

Enum: "ETH" "CELO" "MATIC" "KCS" "BSC" "ONE" "XDC" "KLAY" "SOL"
Example: ETH
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain
The token name that you specify here must be the same as the token name in the symbol parameter of the smart contract that you are going to deploy or have already deployed for this token.

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

xpub
required
string [ 1 .. 150 ] characters

The extended public key of the wallet from which a deposit address for the virtual account will be generated
NOTE: On Solana, you only can assign an existing address to the virtual account; use the Erc20Address schema of this API.

derivationIndex
required
integer <int32> <= 2147483647

The derivation index to use together with the extended public key to generate the deposit address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

accountingCurrency
string (FiatCurrency)
Default: "USD"

The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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/token/{chain}
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "1000000.0",
  • "decimals": 8,
  • "description": "My Public Token",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid",
  • "derivationIndex": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "address": "0xa7673161CbfE0116A4De9E341f8465940c2211d4"
}

Set the contract address of an ERC-20, ERC-20-equivalent, or TRC-10 token

2 credits per API call

Set the contract address of an ERC-20, ERC-20-equivalent (for example, BEP-20, HRM-20, and so on), or TRC-10 token to be able to communicate with the smart contract.

After creating and deploying the token to the blockchain, the smart contract address is generated and must be set within Tatum. If the address is not set, the Tatum platform will not be able to detect incoming deposits of the tokens and transfer the tokens from virtual accounts to blockchain addresses.

NOTE:

  • For Algorand, the contract address is the asset ID (assetId), for example, 55351976.
  • For TRON, the contract address is the token ID (tokenId), for example, 1234567.
SecurityX-API-Key
Request
path Parameters
address
required
string [ 1 .. 100 ] characters

On Algorand, this is the asset ID; on TRON, this is the token ID; on the other blockchains, this is the address of the smart contract.

Example: 0x687422eEA2cB73B5d3e242bA5456b782919AFc85
name
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token (the token symbol)

Example: MY_TOKEN
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.

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

Send CELO from a virtual account to the blockchain

4 credits per API call.


Send CELO (Celo), ERC-20-equivalent Celo tokens, cUSD, or cEUR from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Celo server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

feeCurrency
required
string

The currency in which the transaction fee will be paid

Enum: "CELO" "CUSD" "CEUR"
senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/celo/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087",
  • "feeCurrency": "CELO"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Register a new Celo ERC-20-equivalent token in the virtual accountDeprecated

This method is deprecated.
Use this method instead.


2 credits per API call.

First step to create new ERC-20 token with given supply on Celo blockchain with support of Tatum's private ledger.


This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.
The whole supply of ERC-20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with ERC-20 token name as account's currency.
Newly created account is frozen until the specific ERC-20 smart contract address is linked with the Tatum virtual currency, representing the token.
Order of the steps to create ERC-20 smart contract with Tatum private ledger support:

  1. Register Celo ERC-20 token - creates a virtual currency within Tatum
  2. Deploy Celo ERC-20 smart contract - create new ERC-20 smart contract on the blockchain
  3. Store Celo ERC-20 smart contract address - link newly created ERC-20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for ERC-20 Tatum accounts
There is a helper method Deploy Celo ERC-20 Smart Contract to Blockchain and Ledger, which wraps first 2 steps into 1 method.
Address on the blockchain, where all initial supply will be transferred, can be defined via the address or xpub and derivationIndex. When xpub is present, the account connected to this virtualCurrency will be set as the account's xpub.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain
The token name that you specify here must be the same as the token name in the symbol parameter of the smart contract that you are going to deploy or have already deployed for this token.

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

xpub
required
string [ 1 .. 150 ] characters

The extended public key of the wallet from which a deposit address for the virtual account will be generated
NOTE: On Solana, you only can assign an existing address to the virtual account; use the Erc20Address schema of this API.

derivationIndex
required
integer <int32> <= 2147483647

The derivation index to use together with the extended public key to generate the deposit address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

accountingCurrency
string (FiatCurrency)
Default: "USD"

The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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/celo/erc20
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "1000000.0",
  • "decimals": 8,
  • "description": "My Public Token",
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid",
  • "derivationIndex": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "address": "0xa7673161CbfE0116A4De9E341f8465940c2211d4"
}

Deploy a Celo ERC-20-equivalent smart contract to the blockchain and a virtual account

4 credits per API call

Deploy a Celo ERC-20-equivalent smart contract. This is a helper method, which is combination of Register new Celo ERC-20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying a Celo ERC-20-equivalent smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
feeCurrency
required
string

The currency in which the transaction fee will be paid

Enum: "CELO" "CUSD" "CEUR"
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 42 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/celo/erc20/deploy
Request samples
application/json
{
  • "feeCurrency": "CELO",
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Deploy a KuCoin Community Chain (KCC) ERC-20-equivalent smart contract to the blockchain and a virtual account

4 credits per API call

Deploy a KuCoin Community Chain (KCC) ERC-20-equivalent smart contract. This is a helper method, which is combination of Register new Kcs ERC20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying a KCC ERC-20-equivalent smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 42 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/kcs/erc20/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Set the contract address of a Celo ERC-20-equivalent tokenDeprecated

This method is deprecated.
Use this method instead.


2 credits per API call.

SecurityX-API-Key
Request
path Parameters
address
required
string [ 1 .. 100 ] characters

ERC-20 contract address

Example: 0x687422eEA2cB73B5d3e242bA5456b782919AFc85
name
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

ERC-20 symbol name.

Example: MY_TOKEN
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.

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

Send SOL from a virtual account to the blockchain

10 credits per API call

Send SOL (Solana), USDC_SOL, or custom SPL tokens from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. When every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If SOL server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.

It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.

This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

from
required
string [ 32 .. 44 ] characters

Blockchain account to send from

address
required
string [ 32 .. 44 ] characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent, in SOL / USDC_SOL or custom SPL token based on the senderAccountId currency type.

privateKey
required
string [ 87 .. 128 ] characters

Private key for account. Private key, or signature Id must be present.

fee
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Fee to be charged for the operation. For SOL, fee is decided by the blockchain, but default SOL fee is 0.000005. This fee will be only charged on top of the withdrawal amount to the virtual account.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account.

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/solana/transfer
Request samples
application/json
{
  • "senderAccountId": "61b3bffddfb389cde19c73be",
  • "from": "FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ",
  • "address": "9B5XszUGdMaxCZ7uSQhPzdks5ZQSmWxrmzCSvtJ6Ns6g",
  • "amount": "10000",
  • "privateKey": "zgsAKfjuXrAxEyuYRxbbxPM3rdsPbJPnGreaGMbcdUApJ6wHnCqQnf9b1RNPdeZxsRMkezh4VgXQ7YrbpndGtEv"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send XLM from a virtual account to the blockchain

10 credits per API call

Send XLM (Stellar) or XLM-based assets from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. When every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If XLM server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.

It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.

This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

fromAccount
required
string = 56 characters

Blockchain account to send from

address
required
string = 56 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent, in XLM or XLM-based Asset.

secret
required
string = 56 characters

Secret for account. Secret, or signature Id must be present.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

attr
string <= 64 characters ^[ -~]{0,64}$

Short message to recipient. Usually used as an account discriminator. It can be either 28 characters long ASCII text, 64 characters long HEX string or uint64 number. When using as an account disciminator in Tatum Offchain ledger, can be in format of destination_acc|source_acc.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account.

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/xlm/transfer
Request samples
application/json
{
  • "senderAccountId": "61b3bffddfb389cde19c73be",
  • "fromAccount": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H",
  • "address": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H",
  • "amount": "10000",
  • "secret": "SCVVKNLBHOWBNJYHD3CNROOA2P3K35I5GNTYUHLLMUHMHWQYNEI7LVED"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Create an XLM-based asset

2 credits per API call.


Create an XLM-based asset in a virtual account. The asset must be created and configured on the Stellar blockchain before creating a trust line.

This API call will create an internal virtual currency. You can create virtual accounts with off-chain support.

SecurityX-API-Key
Request
Request Body schema: application/json
required
issuerAccount
required
string = 56 characters

Blockchain address of the issuer of the assets.

token
required
string [ 1 .. 12 ] characters ^[a-zA-Z0-9]{1,12}$

Asset name.

basePair
required
string (FiatOrCryptoCurrency)

Base pair for Asset. Transaction value will be calculated according to this base pair. e.g. 1 TOKEN123 is equal to 1 EUR, if basePair is set to EUR.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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.

post/v3/offchain/xlm/asset
Request samples
application/json
{
  • "issuerAccount": "GC5LAVZ5UPLIFDH6SI33PNVL5TKWA4ODXTI3WEF5JM6LRM5MNGVJ56TT",
  • "token": "TOKEN123",
  • "basePair": "AED"
}
Response samples
application/json
{
  • "errorCode": "validation.failed",
  • "message": "Request validation failed. Please see data for additional information.",
  • "statusCode": 400,
  • "data": [
    ]
}

Send XRP from a virtual account to the blockchain

10 credits per API call.


Send XRP from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. When every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If XRP server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

account
required
string [ 1 .. 100 ] characters

XRP account address. Must be the one used for generating deposit tags.

address
required
string [ 1 .. 100 ] characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent, in XRP.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

attr
string

Destination tag of the recipient account, if any. Must be stringified uint32.

sourceTag
integer

Source tag of sender account, if any.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

secret
required
string = 29 characters

Secret for account. Secret, or signature Id must be present.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account.

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/xrp/transfer
Request samples
application/json
{
  • "senderAccountId": "61b3bffddfb389cde19c73be",
  • "account": "rPRxSZzTFd6Yez3UMxFUPJvnhUhjewpjfV",
  • "address": "rPRxSZzTFd6Yez3UMxFUPJvnhUhjewpjfV",
  • "amount": "10000",
  • "secret": "snSFTHdvSYQKKkYntvEt8cnmZuPJB"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Create XRP based Asset

2 credits per API call.


Create an XRP-based asset in a virtual account. The asset must be created and configured on the XRPL blockchain before creating a trust line.

This API call will create an internal virtual currency. You can create virtual accounts with off-chain support.

SecurityX-API-Key
Request
Request Body schema: application/json
required
issuerAccount
required
string [ 33 .. 34 ] characters

Blockchain address of the issuer of the assets.

token
required
string = 40 characters ^[A-F0-9]{40}$

Asset name.

basePair
required
string (FiatOrCryptoCurrency)

Base pair for Asset. Transaction value will be calculated according to this base pair. e.g. 1 TOKEN123 is equal to 1 EUR, if basePair is set to EUR.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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.

post/v3/offchain/xrp/asset
Request samples
application/json
{
  • "issuerAccount": "rsCZjvenhxsFycrb33gPSfXdrTNAS5uiR1",
  • "token": "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709",
  • "basePair": "AED"
}
Response samples
application/json
{
  • "errorCode": "validation.failed",
  • "message": "Request validation failed. Please see data for additional information.",
  • "statusCode": 400,
  • "data": [
    ]
}

Send BNB from a virtual account to the blockchain

10 credits per API call.


Send BNB (BNB Beacon Chain) or BNB assets from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. When every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If BNB server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

Sender account ID

address
required
string [ 1 .. 100 ] characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent, in BNB.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

attr
string

Memo of the recipient account, if any.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

fromPrivateKey
required
string = 64 characters

Private key of sender address.

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account.

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/bnb/transfer
Request samples
application/json
{
  • "senderAccountId": "61b3bffddfb389cde19c73be",
  • "address": "tbnb1q82g2h9q0kfe7sysnj5w7nlak92csfjztymp39",
  • "amount": "10000",
  • "fromPrivateKey": "8ac4b14b38d8a5af58019088ce5a24b764536bccd1981cf79d3e09e9d1f2ad31"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Create a BNB-based asset

2 credits per API call.


Create a BNB-based asset in a virtual account. The asset must first be created and configured on BNB Beacon Chain blockhain.

This API call will create an internal virtual currency. You can create virtual accounts with off-chain support.

SecurityX-API-Key
Request
Request Body schema: application/json
required
token
required
string [ 1 .. 12 ] characters ^[a-zA-Z0-9\-]{1,12}$

Asset name.

basePair
required
string (FiatOrCryptoCurrency)

Base pair for Asset. Transaction value will be calculated according to this base pair. e.g. 1 TOKEN123 is equal to 1 EUR, if basePair is set to EUR.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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.

post/v3/offchain/bnb/asset
Request samples
application/json
{
  • "token": "NNB-B90",
  • "basePair": "AED"
}
Response samples
application/json
{
  • "errorCode": "validation.failed",
  • "message": "Request validation failed. Please see data for additional information.",
  • "statusCode": 400,
  • "data": [
    ]
}

Send ADA from a virtual account to the blockchain

10 credits per API call.

Send ADA (Cardano) from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If ADA server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
address
required
string [ 110 .. 90 ] characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in ADA.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

fee
string^[+]?((\d+(\.\d*)?)|(\.\d+))$

Fee to be submitted as a transaction fee to blockchain. If none is set, default value of 1 ADA is used.

index
required
integer <= 2147483647

Derivation index of sender address.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic to generate private key for sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

xpub
required
string [ 1 .. 192 ] characters

Extended public key (xpub) of the wallet associated with the accounts. Should be present, when mnemonic is used.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

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/ada/transfer
Request samples
application/json
{
  • "address": "addr1qyyxyhaa2e7kxeqcc72w7f747zqlgwwwstlzsg9umuxc40wnhawldxl4nan95rhtlcnju9q2r8j9qz8vslwsmrkj5r4spxhep9",
  • "amount": "100000",
  • "index": 0,
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "xpub": "41253768cd7c5831988e580cfc7eeecaa78bf52a1ede2bd2f245406605adfbadd5911ab567bc3dc7713e29c2c14bb898b24bb1f01a4992605343ad14703037b9",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Send TRON from a virtual account to the blockchain

10 credits per API call.


Send TRON or TRX assets from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If Tron server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
address
required
string = 34 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in Tron.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

fromPrivateKey
required
string = 64 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

fee
string^[+]?((\d+(\.\d*)?)|(\.\d+))$

Fee to be submitted as a transaction fee to blockchain. If none is set, default value of 2.5 TRX is used.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

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/tron/transfer
Request samples
application/json
{
  • "address": "TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW",
  • "amount": "100000",
  • "fromPrivateKey": "e75d702ce00987633f8009fbb1eabb5b187cb5b50fe9179a8d6cee6bab076b66",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Register a new TRON TRC-10 or TRC-20 token in the virtual account

10 credits per API call.


First step to create new TRC 10/20 token with given supply on the Tron blockchain with support of Tatum's private ledger.
This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.
The whole supply of TRC 10/20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with TRC 10/20 token name as account's currency.
Newly created account is frozen until the specific TRC 10/20 smart contract address is linked with the Tatum virtual currency, representing the token.
Order of the steps to create TRC 10/20 smart contract with Tatum private ledger support:

  1. Create TRC 10/20 token (this API) - creates a virtual currency within Tatum
  2. Deploy TRC 10 or TRC 20 smart contract - create new TRC 10/20 smart contract on the blockchain
  3. Store TRC 10/20 smart contract address - link newly created TRC 10/20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for TRC 10/20 Tatum accounts
Blockchain address will be assigned to the virtual account as a deposit address. It can be defined via the address explicitly or by using xpub and derivationIndex. There is a helper method Deploy TRC 10/20 Smart Contract to Blockchain and Ledger, which wraps first 2 steps into 1 method.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

type
required
string

The type of the token

Enum: "TRC10" "TRC20"
description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 34 characters

The blockchain address to be assigned to the virtual account as a deposit address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

url
string [ 1 .. 100 ] characters

(TRC-10 tokens only) The URL of the project that the token is created for
Use this parameter only with TRC-10 tokens. Do not use this parameter with TRC-20 tokens.

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
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/tron/trc
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "1000000.0",
  • "decimals": 6,
  • "type": "TRC10",
  • "description": "My Public Token",
  • "address": "TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW",
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "address": "TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW"
}

Deploy a TRON TRC-10 or TRC-20 smart contract to the blockchain and a virtual account

10 credits per API call

Deploy a TRON TRC-10 or TRC-20 smart contract. This is a helper method, which is combination of Register new TRC-10/20 token in the ledger and Deploy blockchain TRC20 or Deploy blockchain TRC10.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying a TRON TRC-10 or TRC-20 smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

decimals
required
number >= 0

The number of decimal places that the token has

type
required
string

The type of the token

Enum: "TRC10" "TRC20"
description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 34 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic of the TRON wallet to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

url
string [ 1 .. 100 ] characters

(TRC-10 tokens only) The URL of the project that the token is created for
Use this parameter only with TRC-10 tokens. Do not use this parameter with TRC-20 tokens.

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/tron/trc/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "decimals": 6,
  • "type": "TRC10",
  • "description": "My Public Token",
  • "address": "TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9"
}

Set the contract address of a TRC-10 or TRC-20 tokenDeprecated

This method is deprecated.
Use this method instead.


2 credits per API call.

SecurityX-API-Key
Request
path Parameters
address
required
string [ 7 .. 34 ] characters

TRC-10 Token ID or TRC-20 contract address

Example: TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW
name
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

TRC 10/20 symbol name.

Example: MY_TOKEN
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.

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

Send EGLD from a virtual account to the blockchain

4 credits per API call.


Send EGLD from a virtual account to the blockchain. This will create Tatum internal withdrawal request with ID. If every system works as expected, withdrawal request is marked as complete and transaction id is assigned to it.

  • If server connection is unavailable, withdrawal request is cancelled.
  • If blockchain transfer is successful, but is it not possible to reach Tatum, transaction id of blockchain transaction is returned and withdrawal request must be completed manually, otherwise all other withdrawals will be pending.
It is possible to perform ledger to blockchain transaction for ledger accounts without blockchain address assigned to them.
This operation needs the private key of the blockchain address. Every time the funds are transferred, the transaction must be signed with the corresponding private key. No one should ever send it's own private keys to the internet because there is a strong possibility of stealing keys and losing funds. In this method, it is possible to enter privateKey or signatureId. PrivateKey should be used only for quick development on testnet versions of blockchain when there is no risk of losing funds. In production, Tatum KMS should be used for the highest security standards, and signatureId should be present in the request. Alternatively, using the Tatum client library for supported languages.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
nonce
number >= 0

The nonce to be set to the transaction; if not present, the last known nonce will be used

address
required
string = 42 characters

Blockchain address to send assets

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

Amount to be sent in Ether | MATIC | XDC | KCS.

compliant
boolean

Compliance check, if withdrawal is not compliant, it will not be processed.

privateKey
required
string = 66 characters

Private key of sender address. Either mnemonic and index, privateKey or signature Id must be present - depends on the type of account and xpub.

paymentId
string [ 1 .. 100 ] characters

Identifier of the payment, shown for created Transaction within Tatum sender account.

senderAccountId
required
string = 24 characters

Sender account ID

senderNote
string [ 1 .. 500 ] characters

Note visible to owner of withdrawing account

gasLimit
string^[+]?\d+$

Gas limit for transaction in gas price. If not set, automatic calculation will be used.

gasPrice
string^[+]?\d+$

Gas price in Gwei. If not set, automatic calculation will be used.

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/egld/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "privateKey": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "senderAccountId": "5e68c66581f2ee32bc354087"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}

Deploy an Algorand ERC-20-equivalent smart contract to the blockchain and a virtual account

4 credits per API call

Deploy an Algorand ERC-20-equivalent smart contract. This is a helper method, which is combination of Register new Algorand ERC20 token in the ledger and Deploy blockchain ERC20.

After deploying a contract to blockchain, the contract address will become available and must be stored within Tatum. Otherwise, it will not be possible to interact with it and starts automatic blockchain synchronization.

Signing a transaction
When deploying an Algorand ERC-20-equivalent smart contract to the blockchain and a virtual account, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
symbol
required
string [ 1 .. 8 ] characters ^[a-zA-Z0-9_]+$

The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain

supply
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The supply of the token

description
required
string [ 1 .. 100 ] characters

The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain

address
required
string = 58 characters

The blockchain address to be assigned to the virtual account as a deposit address

mnemonic
required
string [ 1 .. 500 ] characters

The mnemonic to generate the private key for the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the derivation index of this address

index
required
integer <= 2147483647

The derivation index of the blockchain address from which the fee for deploying the smart contract will be deducted; is used together with the mnemonic to generate the private key for this address

basePair
required
string (FiatOrCryptoCurrency)

The base pair for the virtual currency that represents the token; used to calculate the value of a transaction

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "ALGO" "ADA" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BNB" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "FREE" "GMC" "GMC_BSC" "RMD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LEO" "LINK" "LKR" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MATIC" "MDL" "MGA" "MKD" "MKR" "MMK" "MMY" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PAX" "PAXG" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TRON" "TUSD" "BUSD" "TWD" "TZS" "UAH" "UGX" "UNI" "USD" "USDC" "USDC_MATIC" "USDC_MATIC_NATIVE" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of basePair*baseRate

object (CustomerRegistration)

If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

externalId
required
string [ 1 .. 100 ] characters

The external ID of the customer; use only anonymized identification that you have in your system
If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.

accountingCurrency
string (FiatCurrency)
Default: "EUR"

The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the accountingCurrency parameter at the account level.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DOGE" "DZD" "EGP" "ERN" "ETB" "ETH" "EUR" "FJD" "FKP" "FLOW" "FUSD" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
customerCountry
string = 2 characters

The ISO 3166-1 code of the country that the customer has to be compliant with

providerCountry
string = 2 characters

The ISO 3166-1 code of the country that the service provider has to be compliant with

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/algo/erc20/deploy
Request samples
application/json
{
  • "symbol": "MY_TOKEN",
  • "supply": "10000000",
  • "description": "My Public Token",
  • "address": "NTAESFCB3WOD7SAOL42KSPVARLB3JFA3MNX3AESWHYVT2RMYDVZI6YLG4Y",
  • "mnemonic": "artist alarm clerk obscure timber firm reopen provide ankle vicious exhibit waste math toilet believe puppy lucky coast post kind black suspect mule able market",
  • "index": 0,
  • "basePair": "AED"
}
Response samples
application/json
{
  • "accountId": "5e68c66581f2ee32bc354087",
  • "txId": "JGDMW6F6BUWQLFXDEPZIUO5WCTQOL3QV7KZ2SBV44K5WE6SSNN7Q"
}

Send ALGO from a virtual account to the blockchain

4 credits per API call

Send Algos or ERC-20-equivalent Algorand tokens from a virtual account (even from a virtual account without deposit addresses adssigned) to the Algorand blockchain.

The recipient has to agree in advance to receive assets because Algorand charges users for storing assets on their addresses, and an Algorand blockchain address by default does not receive assets unless explicitly agreed. Before sending any asset from a virtual account to the blockchain, make sure that the recipient has agreed to receive the assets to their address.

Sending Algorand assets creates an internal Tatum withdrawal request with an ID. If everything works as expected, the withdrawal request is marked as complete and a transaction ID is assigned to it.

  • If a server connection is unavailable, the withdrawal request is cancelled.
  • If the transfer to the blockchain is successful, but the Tatum infrastructure cannot be accesses, the ID of the blockchain transaction is returned and you have to complete the withdrawal request manually. Otherwise, all other withdrawals will be pending.

Signing a transaction
When sending Algos or ERC-20-equivalent Algorand tokens, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the testnet of a blockchain.

For signing transactions on the mainnet, we strongly recommend that you use the Tatum Key Management System (KMS) and provide the signature ID instead of the private key in the API. Alternatively, you can use the Tatum JavaScript client.

SecurityX-API-Key
Request
Request Body schema: application/json
required
One of:
senderAccountId
required
string = 24 characters

The ID of the virtual account to send Algos from

address
required
string = 58 characters

The blockchain address to send Algos to

amount
required
string <= 38 characters ^[+]?((\d+(\.\d*)?)|(\.\d+))$

The amount to send in Algos

fee
string
Default: "0.001"

The transaction fee in Algos

privateKey
required
string = 103 characters

The secret of the Algorand wallet (account). Secret, or signature Id must be present.

compliant
boolean

Compliance check; if the withdrawal is not compliant, it will not be processed

paymentId
string [ 1 .. 100 ] characters

The identifier of the Algo transfer that is shown on the virtual account for the created transaction

senderNote
string [ 1 .. 500 ] characters

The note for the recipient; must not contain spaces

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/algorand/transfer
Request samples
application/json
{
  • "senderAccountId": "61b3bffddfb389cde19c73be",
  • "address": "5YVZBUH3STSQ5ABCTLEIEIJ7QOZFILM2DLAEEA4ZL6CU55ODZIQXO5EMYM",
  • "amount": "10000",
  • "privateKey": "NBYMCVEEDFYV3TPWVRE6APE7PKHUJD4XAKXCKNCLKGUXOC3LFNJGZQCJCRA53HB7ZAHF6NFJH2QIVQ5USQNWG35QCJLD4KZ5IWMB24Q"
}
Response samples
application/json
{
  • "id": "5e68c66581f2ee32bc354087",
  • "txId": "c83f8818db43d9ba4accfe454aa44fc33123d47a4f89d47b314d6748eb0e9bc9",
  • "completed": true
}