Wallet Asset Tracking

This guide talks about what are different token types and how to track the balances for those for a wallet.

Wallet Asset Tracking is the process of monitoring all digital assets a wallet holds, including native tokens, fungible tokens (ERC-20, BEP-20), and NFTs (ERC-721, ERC-1155). This feature is central to portfolio apps, DeFi wallets, and investment trackers, as it provides a complete snapshot of a user's holdings across multiple blockchains.

Why Wallet Asset Tracking Matters?

Supporting asset tracking in your app provides:

  • Consolidated Portfolio View – Display all wallet assets in one place.
  • Multi-Chain Support – Track balances across Ethereum, Solana, BNB Smart Chain, Polygon, and more.
  • Historical Analysis – Combine with historical data endpoints to chart asset performance.
  • Improved User Experience – Users can see all their holdings, including tokens and NFTs, without navigating multiple wallets.

Tatum API for Wallet Asset Tracking

Tatum provides the Get Wallet Portfolio API to retrieve balances for native tokens, fungible tokens, and NFTs for a given wallet address.

Understanding Token Types

When calling the API, you can specify which types of tokens to fetch:

  • native – The blockchain’s main currency (e.g., ETH on Ethereum, BNB on BSC, SOL on Solana).
  • fungible – Standard tokens like ERC-20, BEP-20, or SPL tokens. They are divisible and interchangeable.
  • nft,multitoken – Non-fungible tokens (ERC-721, ERC-1155, SPL NFTs). Includes collectibles, game assets, and multi-token standards.

Tip: You can combine token types to get a full snapshot: native,fungible,nft,multitoken.

API Endpoint: Get Wallet Portfolio

📘

Get Wallet Portfolio (Popular🔥)

GET /v4/wallet/portfolio/{address}
Fetch the complete portfolio of assets (tokens, NFTs, coins) for a wallet.
Explore Docs →

Example Request for Native Tokens:

curl -X GET "https://api.tatum.io/v4/data/wallet/portfolio?chain=ethereum-mainnet&addresses=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&tokenTypes=native" \
  -H "x-api-key: YOUR_API_KEY"
const options = {
  method: 'GET',
  headers: {
    accept: 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  }
};

fetch('https://api.tatum.io/v4/data/wallet/portfolio?chain=ethereum-mainnet&addresses=0x80d8bac9a6901698b3749fe336bbd1385c1f98f2&tokenTypes=native', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

Response - Native tokens:

{
  "balances": [
    {
      "type": "native",
      "id": null,
      "balance": "3.524",
      "symbol": "ETH",
      "decimals": 18,
      "metadata": {
        "name": "Ethereum",
        "logo": "https://assets.tatum.io/eth.png"
      }
    }
  ]
}

Example Request for Fungible Tokens:

curl -X GET "https://api.tatum.io/v4/data/wallet/portfolio?chain=ethereum-mainnet&addresses=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&tokenTypes=fungible" \
  -H "x-api-key: YOUR_API_KEY"
const options = {
  method: 'GET',
  headers: {
    accept: 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  }
};

fetch('https://api.tatum.io/v4/data/wallet/portfolio?chain=ethereum-mainnet&addresses=0x80d8bac9a6901698b3749fe336bbd1385c1f98f2&tokenTypes=fungible', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

 Response - Fungible tokens:

  "balances": [
    {
      "type": "fungible",
      "id": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "balance": "1500.0",
      "symbol": "USDC",
      "decimals": 6,
      "metadata": {
        "name": "USD Coin",
        "logo": "https://assets.tatum.io/usdc.png"
      }
    },
    {
      "type": "fungible",
      "id": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "balance": "200.0",
      "symbol": "USDT",
      "decimals": 6,
      "metadata": {
        "name": "Tether",
        "logo": "https://assets.tatum.io/usdt.png"
      }
    }
  ]
}

Example Request for NFTs / Multi-tokens:

curl -X GET "https://api.tatum.io/v4/data/wallet/portfolio?chain=ethereum-mainnet&addresses=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&tokenTypes=nft,multitoken" \
  -H "x-api-key: YOUR_API_KEY"
const options = {
  method: 'GET',
  headers: {
    accept: 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  }
};

fetch('https://api.tatum.io/v4/data/wallet/portfolio?chain=ethereum-mainnet&addresses=0x80d8bac9a6901698b3749fe336bbd1385c1f98f2&tokenTypes=nft,multitoken', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

Response - NFT / Multi-token Response:

{
  "balances": [
    {
      "type": "nft",
      "id": "1",
      "balance": "1",
      "symbol": "CRYPTOPUNK",
      "decimals": 0,
      "metadata": {
        "name": "CryptoPunk #1",
        "image": "https://assets.tatum.io/nft/cryptopunk1.png"
      }
    },
    {
      "type": "multitoken",
      "id": "23",
      "balance": "5",
      "symbol": "GAME_ITEM",
      "decimals": 0,
      "metadata": {
        "name": "Legendary Sword",
        "image": "https://assets.tatum.io/nft/legendary_sword.png"
      }
    }
  ]
}

Usage Workflow

  1. Select Wallet Address – Identify the wallet to track.
  2. Call API – Request balances for desired token types (native, fungible, nft,multitoken).
  3. Display in UI – Show consolidated portfolio with all assets.
  4. Optional – Exclude metadata for faster responses and lower payload size.

Best Practices

  • Fetch all token types for a complete portfolio snapshot.
  • Paginate results when tracking wallets with hundreds of assets.
  • Cache frequently accessed addresses to reduce repeated API calls.
  • Combine with historical endpoints to chart portfolio growth over time.

By integrating wallet asset tracking, your app will provide a full view of a user's holdings, including native coins, tokens, and NFTs — all in a cross-chain, real-time portfolio view powered by Tatum Data API.