Trace Source of Funds

Quickly track the origin of funds for any wallet across supported blockchains. Identify incoming transactions, token and NFT sources, and counterparties. Filter, sort, and paginate results to analyze wallet activity and generate audit-ready transaction history.

Trace the origin of funds for any wallet across supported blockchains. Identify incoming transactions, token sources, NFT/multitoken transfers, and native coin deposits. This guide helps you analyse wallet activity, investigate fund provenance, and generate audit-ready transaction reports.

📚

Get Transaction History

GET /v4/data/transactions/history
Fetch the transaction history for a given blockchain address.
Explore Docs →


Key Use Cases

  • Identify fund sources: Track incoming transactions and see where tokens or coins came from.
  • NFT provenance: Trace the original owners of NFTs or multitokens.
  • Filter suspicious activity: Detect unusual fund flows or zero-value transactions.
  • Audit history: Generate detailed wallet transaction history for compliance or forensic purposes.
  • Paginated analysis: Handle large wallets with cursor or offset-based pagination.

Sample Request (cURL)

curl --request GET \
     --url 'https://api.tatum.io/v4/data/transaction/history?chain=ethereum-mainnet&addresses=0x2474a7227877f2b65185f09468af7c6577fa207c&sort=DESC' \
     --header 'accept: application/json' \
     --header 'x-api-key: t-66a730ccccfd17001c479705-2f597d14ad7543f289a03418'

Sample Response

{
  "result": [
    {
      "chain": "ethereum-mainnet",
      "hash": "0x9d80c4d85901132a6bf5ba7c8bf0c23784b92bd5f60bd354413dbb2dc66e165c",
      "address": "0x2474a7227877f2b65185f09468af7c6577fa207c",
      "blockNumber": 22915639,
      "transactionType": "nft",
      "transactionSubtype": "incoming",
      "amount": "1",
      "timestamp": 1752474659000,
      "tokenId": "41",
      "tokenAddress": "0x0b8afc24682e49a3704ea5776606ae16d8f2a20d",
      "counterAddress": "0xa7d1567520a55d22b19a3290fcd996177a9b3fa9"
    },
    {
      "chain": "ethereum-mainnet",
      "hash": "0x6e57b2f8bbd6da6ff99b600e227a4355b730e36d52d42384e54c0bbf9ccb335f",
      "address": "0x2474a7227877f2b65185f09468af7c6577fa207c",
      "blockNumber": 22628478,
      "transactionType": "multitoken",
      "transactionSubtype": "incoming",
      "amount": "1",
      "timestamp": 1749006263000,
      "tokenId": "12",
      "tokenAddress": "0x77e121a3c784902ec8f111c614f03fe50286bb7b",
      "counterAddress": "0x68bcb919f43af18e22d505557dd59920ed737e4e"
    }
  ]
}

How to Trace Funds

  1. Filter incoming transactions: Focus on transactionSubtype=incoming.
  2. Check token provenance: Use tokenAddress and tokenId to identify specific tokens.
  3. Analyze counterparties: Look at counterAddress to determine fund sources.
  4. Sort by block or timestamp: Use sort=ASC for chronological tracing.
  5. Paginate if needed: Handle large wallets with pageSize + offset or cursor.
  6. Convert timestamps: All timestamps are in milliseconds since Unix epoch.

JavaScript Example

fetch("https://api.example.com/v1/transactions?chain=ethereum-mainnet&addresses=0x2474a7227877f2b65185f09468af7c6577fa207c&transactionSubtype=incoming", {
  headers: {
    "x-api-key": "YOUR_API_KEY"
  }
})
  .then(res => res.json())
  .then(data => {
    console.log("Incoming transactions (fund sources):", data.result);
  });