πŸͺ™ Stablecoin Transactions

Once your users have deposited funds, your platform needs to let them send, withdraw, or transfer stablecoins.
With Tatum’s blockchain transaction APIs, you can execute on-chain stablecoin transfers without handling private keys directly β€” or by using your own secure signing service.

πŸ“˜

Blockchain Transfer API (Popular πŸ’Έ)

Explore Docs β†’

Key Use Cases

  • User Withdrawals: Let users send stablecoins to external wallets.
  • Internal Transfers: Move assets between user-owned wallets managed by your platform.
  • Merchant Payouts: Automate USDC/USDT payments to suppliers or vendors.
  • Batch Payments: Queue multiple transfers and send them programmatically.
  • Cross-App Integrations: Connect stablecoin transfers to your payment or reward systems.

Example – Send USDC from One Wallet to Another (cURL)

curl --request POST \
     --url 'https://api.tatum.io/v3/ethereum/transaction?testnetType=ethereum-sepolia' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: YOUR_API_KEY' \
     --header 'x-testnet-type: ethereum-sepolia' \
     --data '
{
  "currency": "USDC",
  "to": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  "amount": "100",
  "fromPrivateKey": "YOUR_PRIVATE_KEY"
}
'
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'x-testnet-type': 'ethereum-sepolia',
    'content-type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    currency: 'USDC',
    to: '0x687422eEA2cB73B5d3e242bA5456b782919AFc85',
    amount: '100',
    fromPrivateKey: 'YOUR_PRIVATE_KEY'
  })
};

fetch('https://api.tatum.io/v3/ethereum/transaction?testnetType=ethereum-sepolia', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

Sample Response

{  
  "txId": "0x0a72d22977cbab734bb9b53b78e4a4e58d4f1f8d8131c6e1e086e5936cf10df2"  
}  

Recommended Flow

[User Action] β†’ [App Backend] β†’ [Tatum API Transaction Request] β†’ [Blockchain Broadcast] β†’ [Webhook Confirmation]  

1. User Initiates Transfer

User requests a withdrawal or transfer of a specific stablecoin.

2. App Calls Tatum API

Your backend uses the Blockchain Transfer endpoint to send the transaction.

3. Transaction Broadcast

Tatum signs (if private key provided) and broadcasts the transaction to the blockchain.

4. Confirmation

Once mined, your app receives a webhook from the Deposit Tracking system confirming the transfer if you have the Notifications setup on the address.

Optional: Offline Signing

If you prefer not to expose private keys to your backend, Tatum supports offline signing:


1. Generate the transaction payload using `ethblockchaintransfer` with `"signatureId"` instead of `"fromPrivateKey"`.
2. Sign it offline using your own key management or HSM.
3. Broadcast it later with `POST /v4/blockchain/transaction/broadcast`.  

This setup ensures secure, auditable handling of all withdrawals.

Example – Prepare a Transaction for Offline Signing

curl --request POST \
     --url 'https://api.tatum.io/v3/ethereum/transaction?testnetType=ethereum-sepolia' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'x-api-key: t-66a730ccccfd17001c479705-2f597d14ad7543f289a03418' \
     --header 'x-testnet-type: ethereum-sepolia' \
     --data '
{
  "currency": "USDC",
  "to": "0x687422eEA2cB73B5d3e242bA5456b782919AFc85",
  "amount": "100000",
  "signatureId": "YOUR_KMS_SIGNATURE_ID"
}
'

Gas & Fee Estimation

Before executing transfers, you can estimate the gas or miner fee using Tatum’s Fee Estimation API.

curl --request GET \
     --url https://api.tatum.io/v3/blockchain/fee/ETH \
     --header 'accept: application/json' \
     --header 'x-api-key: YOUR_API_KEY'
{
  "slow": 778433798,
  "medium": 778597061,
  "fast": 778876940,
  "baseFee": 778410475,
  "time": "2025-10-21T14:43:33.922Z",
  "block": 23626608
}

Use this to display estimated fees before user confirmation.

FAQs

Which stablecoins are supported?

Tatum supports all ERC-20 and BEP-20 tokens β€” including USDC, USDT, DAI, BUSD, and more. You can use the same API structure across Ethereum, Polygon, and BSC.

Can I send multiple transfers in one request?

Yes. You can batch or queue transactions using your own logic. For very high volumes, consider grouping multiple transfers into a single smart contract batch call.

What if the transaction fails due to low gas?

Tatum returns an error if the transaction cannot be mined. Always estimate gas beforehand and add a small buffer to avoid underpayment.

Is multi-chain transfer logic supported?

Yes. You can use the same API for Ethereum, BSC, Polygon, and other EVM-compatible chains by changing the chain parameter.

Can I set custom nonce or gas price?

Yes, the transfer API supports optional fields for nonce, gasLimit, and gasPrice β€” giving you full control over transaction behavior.

Best Practices

  • βœ… Always verify user balances before sending transfers (see Wallet Portfolio).
  • 🧩 Use fee estimation before broadcasting to prevent out-of-gas failures.
  • 🧱 Implement idempotent transaction logic β€” don’t resend the same withdrawal twice.
  • πŸ” Use offline signing or custody integration for production-grade security.
  • πŸ” Combine with Transaction Alerts to confirm delivery and update balances.

By integrating Tatum’s transaction APIs, your app gains secure, reliable stablecoin transfer capabilities across major blockchains β€” with minimal infrastructure and full flexibility.