Blockchain operations

An endpoint to handle operations between Tatum Private Ledger and the blockchain, e.g. to create blockchain transactions from ledger accounts, create custom Ethereum ERC20 tokens, Stellar XLM, or Ripple XRP custom assets and register them as regular currency into the Tatum Private Ledger.

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
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.

attr
string [ 1 .. 256 ] characters

Used to parametrize withdrawal as a change address for left coins from transaction. XPub or attr must be 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/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
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.

attr
string [ 1 .. 256 ] characters

Used to parametrize withdrawal as a change address for left coins from transaction. XPub or attr must be 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
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.

attr
string [ 1 .. 256 ] characters

Used to parametrize withdrawal as a change address for left coins from transaction. XPub or attr must be 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/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
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
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.

attr
string [ 1 .. 256 ] characters

Used to parametrize withdrawal as a change address for left coins from transaction. XPub or attr must be 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/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
One of:
nonce
number >= 0

Nonce to be set to Ethereum | Polygon | KCS | XDC transaction. If not present, 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
One of:
nonce
number >= 0

Nonce to be set to Ethereum | Polygon | KCS | XDC transaction. If not present, 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
One of:
nonce
number >= 0

Nonce to be set to KCS transaction. If not present, 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
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.

currency
string [ 1 .. 30 ] characters

ERC20 symbol. Required only for calls.

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

Nonce to be set to Ethereum transaction. If not present, 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

2 credits per API call.


This method is deprecated. Use Register token instead.

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
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

ERC20/BEP20 token name. Used as a identifier within Tatum system and also in blockchain as a currency symbol.

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

Supply of ERC20/BEP20 token.

decimals
required
number >= 0

Decimals of ERC20/BEP20 token.

description
required
string [ 1 .. 100 ] characters

Used as a description within Tatum system and in blockchain as a currency name.

basePair
required
string [ 3 .. 50 ] characters

Base pair for ERC20/BEP20 token. Transaction value will be calculated according to this base pair.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CELO" "CEUR" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CUSD" "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" "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" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XLM" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

Exchange rate of the base pair. Each unit of the created curency will represent value of baseRate*1 basePair.

object (CustomerRegistration)

If customer is filled then is created or updated.

accountingCurrency
string = 3 characters

All transaction will be accounted in this currency for all accounts. Currency can be overridden per account level. If not set, EUR is used. ISO-4217

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" "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

Country customer has to be compliant with. ISO-3166-1

externalId
required
string [ 1 .. 100 ] characters

Customer external ID. Use only anonymized identification you have in your system. If customer with externalId does not exists new customer is created. If customer with specified externalId already exists it is updated.

providerCountry
string = 2 characters

Country service provider has to be compliant with. ISO-3166-1

accountingCurrency
string = 3 characters

All transaction will be billed in this currency for created account associated with this currency. If not set, EUR is used. ISO-4217

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" "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"
derivationIndex
required
integer <int32> <= 2147483647

Derivation index for xpub to generate specific deposit address.

xpub
required
string [ 1 .. 150 ] characters

Extended public key (xpub), from which address, where all initial supply will be stored, will be generated. Either xpub and derivationIndex, or address must be present, not both.

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",
  • "basePair": "EUR",
  • "derivationIndex": 0,
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid"
}
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.
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
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

Name of the ERC20 token - stored as a symbol on Blockchain

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

max supply of ERC20 token.

description
required
string [ 1 .. 100 ] characters

Description of the ERC20 token

basePair
required
string [ 2 .. 30 ] characters

Base pair for ERC20 token. 1 token will be equal to 1 unit of base pair. Transaction value will be calculated according to this base pair.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "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" "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" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XLM" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

Exchange rate of the base pair. Each unit of the created curency will represent value of baseRate*1 basePair.

object (CustomerRegistration)

If customer is filled then is created or updated.

accountingCurrency
string = 3 characters

All transaction will be accounted in this currency for all accounts. Currency can be overridden per account level. If not set, EUR is used. ISO-4217

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" "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

Country customer has to be compliant with. ISO-3166-1

externalId
required
string [ 1 .. 100 ] characters

Customer external ID. Use only anonymized identification you have in your system. If customer with externalId does not exists new customer is created. If customer with specified externalId already exists it is updated.

providerCountry
string = 2 characters

Country service provider has to be compliant with. ISO-3166-1

address
required
string = 42 characters

Address on Ethereum blockchain, where all initial supply will be stored. Either xpub and derivationIndex, or address must be present, not both.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic to generate private key for the deploy account of ERC20, from which the gas will be paid (index will be used). If address is not present, mnemonic is used to generate xpub and index is set to 1. Either mnemonic and index or privateKey and address must be present, not both.

index
required
integer <= 2147483647

derivation index of address to pay for deployment of ERC20

nonce
number >= 0

Nonce to be set to Ethereum transaction. If not present, last known nonce 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/erc20/deploy
Request samples
application/json
{
  • "symbol": "MT",
  • "supply": "10000000",
  • "description": "My ERC20 Token",
  • "basePair": "EUR",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0
}
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
One of:
nonce
number >= 0

Nonce to be set to Binance Smart Chain transaction. If not present, 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.

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/bsc/transfer
Request samples
application/json
{
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "amount": "100000",
  • "fromPrivateKey": "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

2 credits per API call.


This method is deprecated. Use Register token instead.

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
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

ERC20/BEP20 token name. Used as a identifier within Tatum system and also in blockchain as a currency symbol.

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

Supply of ERC20/BEP20 token.

decimals
required
number >= 0

Decimals of ERC20/BEP20 token.

description
required
string [ 1 .. 100 ] characters

Used as a description within Tatum system and in blockchain as a currency name.

basePair
required
string [ 3 .. 50 ] characters

Base pair for ERC20/BEP20 token. Transaction value will be calculated according to this base pair.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CELO" "CEUR" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CUSD" "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" "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" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XLM" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

Exchange rate of the base pair. Each unit of the created curency will represent value of baseRate*1 basePair.

object (CustomerRegistration)

If customer is filled then is created or updated.

accountingCurrency
string = 3 characters

All transaction will be accounted in this currency for all accounts. Currency can be overridden per account level. If not set, EUR is used. ISO-4217

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" "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

Country customer has to be compliant with. ISO-3166-1

externalId
required
string [ 1 .. 100 ] characters

Customer external ID. Use only anonymized identification you have in your system. If customer with externalId does not exists new customer is created. If customer with specified externalId already exists it is updated.

providerCountry
string = 2 characters

Country service provider has to be compliant with. ISO-3166-1

accountingCurrency
string = 3 characters

All transaction will be billed in this currency for created account associated with this currency. If not set, EUR is used. ISO-4217

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" "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"
derivationIndex
required
integer <int32> <= 2147483647

Derivation index for xpub to generate specific deposit address.

xpub
required
string [ 1 .. 150 ] characters

Extended public key (xpub), from which address, where all initial supply will be stored, will be generated. Either xpub and derivationIndex, or address must be present, not both.

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",
  • "basePair": "EUR",
  • "derivationIndex": 0,
  • "xpub": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid"
}
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 BEP20.


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.
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
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

Name of the ERC20 token - stored as a symbol on Blockchain

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

max supply of ERC20 token.

description
required
string [ 1 .. 100 ] characters

Description of the ERC20 token

basePair
required
string [ 2 .. 30 ] characters

Base pair for ERC20 token. 1 token will be equal to 1 unit of base pair. Transaction value will be calculated according to this base pair.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "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" "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" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XLM" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

Exchange rate of the base pair. Each unit of the created curency will represent value of baseRate*1 basePair.

object (CustomerRegistration)

If customer is filled then is created or updated.

accountingCurrency
string = 3 characters

All transaction will be accounted in this currency for all accounts. Currency can be overridden per account level. If not set, EUR is used. ISO-4217

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" "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

Country customer has to be compliant with. ISO-3166-1

externalId
required
string [ 1 .. 100 ] characters

Customer external ID. Use only anonymized identification you have in your system. If customer with externalId does not exists new customer is created. If customer with specified externalId already exists it is updated.

providerCountry
string = 2 characters

Country service provider has to be compliant with. ISO-3166-1

address
required
string = 42 characters

Address on Ethereum blockchain, where all initial supply will be stored. Either xpub and derivationIndex, or address must be present, not both.

mnemonic
required
string [ 1 .. 500 ] characters

Mnemonic to generate private key for the deploy account of ERC20, from which the gas will be paid (index will be used). If address is not present, mnemonic is used to generate xpub and index is set to 1. Either mnemonic and index or privateKey and address must be present, not both.

index
required
integer <= 2147483647

derivation index of address to pay for deployment of ERC20

nonce
number >= 0

Nonce to be set to Ethereum transaction. If not present, last known nonce 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/bep20/deploy
Request samples
application/json
{
  • "symbol": "MT",
  • "supply": "10000000",
  • "description": "My ERC20 Token",
  • "basePair": "EUR",
  • "address": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  • "mnemonic": "urge pulp usage sister evidence arrest palm math please chief egg abuse",
  • "index": 0
}
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
One of:
nonce
number >= 0

Nonce to be set to Ethereum | Polygon | KCS | XDC transaction. If not present, 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.
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
One of:
symbol
required
string [ 1 .. 30 ] characters ^[a-zA-Z0-9_]+$

Name of the ERC20 token - stored as a symbol on Blockchain

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

max supply of ERC20 token.

description
required
string [ 1 .. 100 ] characters

Description of the ERC20 token

basePair
required
string [ 2 .. 30 ] characters

Base pair for ERC20 token. 1 token will be equal to 1 unit of base pair. Transaction value will be calculated according to this base pair.

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BMD" "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" "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" "USDT" "USDT_TRON" "USDT_MATIC" "UYU" "UZS" "VEF" "VND" "VUV" "WBTC" "WST" "XAF" "XAG" "XAU" "XCD" "XCON" "XDR" "XLM" "XOF" "XPF" "XRP" "YER" "ZAR" "ZMK" "ZMW" "ZWL"
baseRate
number >= 0
Default: 1

Exchange rate of the base pair. Each unit of the created curency will represent value of baseRate*1 basePair.

object (CustomerRegistration)

If customer is filled then is created or updated.

accountingCurrency
string = 3 characters

All transaction will be accounted in this currency for all accounts. Currency can be overridden per account level. If not set, EUR is used. ISO-4217

Enum: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS"