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 (Popular🔥)
GET /v4/data/transactions/history
Fetch the complete portfolio of assets (tokens, NFTs, coins) for a wallet.
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) to trace transaction history
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: YOUR_API_KEY'
const options = {
method: 'GET',
headers: {
accept: 'application/json',
'x-api-key': 't-66a730ccccfd17001c479705-2f597d14ad7543f289a03418'
}
};
fetch('https://api.tatum.io/v4/data/transaction/history?chain=ethereum-mainnet&addresses=0x2474a7227877f2b65185f09468af7c6577fa207c&sort=DESC', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
Sample Response - transaction history
{
"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?
- Filter incoming transactions: Focus on
transactionSubtype=incoming. - Check token provenance: Use
tokenAddressandtokenIdto identify specific tokens. - Analyze counterparties: Look at
counterAddressto determine fund sources. - Sort by block or timestamp: Use
sort=ASCfor chronological tracing. - Paginate if needed: Handle large wallets with
pageSize+offsetorcursor. - Convert timestamps: All timestamps are in milliseconds since Unix epoch.
Get Transaction History - FAQs
What does the Transaction History API do?
The Get Transaction History API retrieves a chronological list of all blockchain transactions for a given wallet address — including native coin transfers, fungible token movements, NFT mints or trades, and even internal smart-contract calls. It normalizes data across chains (Ethereum, Bitcoin, Polygon, BSC, Solana, and more) so you get consistent JSON for any supported network.
Which chains and transaction types are supported?
The API covers all major Tatum-indexed chains such as Ethereum, Bitcoin, Polygon, BSC, Solana, Tron, Litecoin, and more. Transactions are categorized into:
- native – on-chain coin transfers (e.g. ETH, BTC)
- fungible – ERC-20 / BEP-20 token transfers
- nft – ERC-721 NFT transfers and mints
- multitoken – ERC-1155 transfers
- internal – contract-generated balance changes (internal txs)
These categories let you filter or group results for portfolio apps, tax audits, or DeFi dashboards.
How can I filter transactions by direction or type?
Use the query parameters:
transactionTypes=native|fungible|nft|multitoken|internal
and transactionSubtype=incoming|outgoing.
For example:
?transactionTypes=fungible&transactionSubtype=outgoing
shows only outgoing ERC-20 transfers. You can also filter by block range, time range, or token contract address to focus on specific assets or periods.
How far back does the history go?
History is available from each chain’s genesis block as indexed by Tatum. For example: Bitcoin since 2009, Ethereum since 2015, etc. Simply provide an older block number or timestamp range to query historical periods.
How do I paginate through large wallets with thousands of transactions?
The endpoint returns results in pages — use the pageSize and
cursor (or offset) parameters to fetch the next set.
Continue until the response no longer returns a cursor.
Pagination keeps responses fast and prevents timeouts for high-activity addresses.
How can I include token or NFT metadata in the transaction feed?
How does this guide relate to portfolio analysis or tax reports?
Transaction History forms the raw audit trail that feeds into
Portfolio Aggregation
and Historical Balances.
By pairing history with historical balances and exchange rates, you can build
capital-gains calculations, P&L reports, or AML compliance reviews.
What are some performance tips for large-scale transaction queries?
- Paginate and fetch pages in parallel for speed.
- Cache token metadata so it’s not requested repeatedly.
- Filter by transaction type or date to narrow result size.
- Monitor your RPS limits to avoid throttling during bulk scans.
Updated 18 days ago