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
- Filter incoming transactions: Focus on
transactionSubtype=incoming
. - Check token provenance: Use
tokenAddress
andtokenId
to identify specific tokens. - Analyze counterparties: Look at
counterAddress
to determine fund sources. - Sort by block or timestamp: Use
sort=ASC
for chronological tracing. - Paginate if needed: Handle large wallets with
pageSize
+offset
orcursor
. - 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);
});
Updated about 2 hours ago