> ## Documentation Index
> Fetch the complete documentation index at: https://tokenterminal.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Token transfers

> Every fungible token transfer, joined to the entity that issued it.

A transfer is one movement of a fungible token between two accounts, read from the Transfer logs token contracts emit onchain. The rows are [`facts.token_transfers`](/docs/catalog/tokens/transfers), one per transfer, keyed on `token_id`. Join [`dimensions.tokens`](/docs/catalog/tokens/registry) for decimals and the symbol, and [`dimensions.asset_tokens`](/docs/catalog/assets/registry) to name the curated asset a token belongs to.

Every column is documented at [Tokens ▸ Transfers](/docs/catalog/tokens/transfers).

## Sample queries

<Warning>
  The transfer table is partitioned on `block_timestamp` and holds billions of rows. Bound that column in every query; without a bound the query reads the whole table.
</Warning>

<Tabs>
  <Tab title="One asset, every deployment">
    **Read an asset's transfers across every chain it is deployed on.** `dimensions.asset_tokens` turns one asset into its deployments.

    ```sql theme={null}
    select
        transfers.block_timestamp,
        deployments.chain_id,
        transfers.from_address,
        transfers.to_address,
        cast(transfers.value_raw as bignumeric) / pow(10, tokens.decimals) as amount
    from `facts.token_transfers` as transfers
    join `dimensions.asset_tokens` as deployments
        using (token_id)
    join `dimensions.tokens` as tokens
        on tokens.token_id = transfers.token_id
    where deployments.asset_id = 'usdc'
      and transfers.block_timestamp >= timestamp('2026-08-20')
      and transfers.block_timestamp < timestamp('2026-08-21')
    limit 100
    ```
  </Tab>

  <Tab title="Daily volume in USD">
    **Sum an asset's daily transfer volume in USD.** The fact carries token amounts; USD comes from a join to the daily price.

    ```sql theme={null}
    select
        timestamp_trunc(transfers.block_timestamp, day) as day,
        round(sum(cast(transfers.value_raw as bignumeric) / pow(10, tokens.decimals) * prices.price)) as volume_usd
    from `facts.token_transfers` as transfers
    join `dimensions.tokens` as tokens
        using (token_id)
    join `dimensions.asset_tokens` as deployments
        on deployments.token_id = transfers.token_id
    join `metrics.tokens_prices_daily` as prices
        on prices.token_id = transfers.token_id
        and prices.timestamp = timestamp_trunc(transfers.block_timestamp, day)
    where deployments.asset_id = 'usdc'
      and transfers.block_timestamp >= timestamp('2026-08-01')
      and transfers.block_timestamp < timestamp('2026-08-08')
    group by day
    order by day
    ```
  </Tab>

  <Tab title="Counterparties of an account">
    **List the addresses one account sent tokens to.** The pair of `from_address` and `chain_id` identifies the sender, because the same address on two chains is two accounts.

    ```sql theme={null}
    select
        transfers.to_address,
        tokens.symbol,
        count(*) as transfer_count
    from `facts.token_transfers` as transfers
    join `dimensions.tokens` as tokens
        using (token_id)
    where transfers.from_address = '0x28c6c06298d514db089934071355e5743bf21d60'
      and transfers.chain_id = 'ethereum'
      and transfers.block_timestamp >= timestamp('2026-08-01')
      and transfers.block_timestamp < timestamp('2026-08-08')
    group by transfers.to_address, tokens.symbol
    order by transfer_count desc
    limit 25
    ```
  </Tab>
</Tabs>
