> ## 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.

# Balances

> Stablecoin holder balances at any past date, computed at query time.

Stablecoin holder balances at any past date: who holds it, how much, and how concentrated. [Two functions](/docs/catalog/tokens/balances) compute them at query time; pass a deployment's `chain_id` and `token_address` from [Registry](/docs/catalog/stablecoins/registry).

Every signature is documented at [Tokens ▸ Balances](/docs/catalog/tokens/balances).

## Sample queries

<Tabs>
  <Tab title="Current holders">
    **List the current holders of one stablecoin.** Addresses are lowercased on input, so a checksummed address copied from an explorer resolves. Balances arrive in whole token units. For a daily supply series, read the [metrics page](/docs/catalog/stablecoins/metrics) instead.

    ```sql theme={null}
    select
        account_address,
        balance
    from `functions.calculate_latest_token_balances`(
        'ethereum',
        '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
        'erc20'
    )
    order by balance desc
    limit 100
    ```
  </Tab>

  <Tab title="Concentration on a date">
    **Measure holder concentration on a past date.** An account's balance on a given date is its most recent row at or before that date.

    ```sql theme={null}
    with balances_on_date as (
        select
            account_address,
            balance,
            row_number() over (partition by account_address order by balance_date desc) as recency
        from `functions.calculate_historical_eod_token_balances`(
            'ethereum',
            '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
            'erc20'
        )
        where balance_date <= date '2026-06-30'
    ),

    holders as (
        select
            balance,
            rank() over (order by balance desc) as balance_rank
        from balances_on_date
        where recency = 1
          and balance > 0
    )

    select
        count(*) as holders,
        sum(balance) as supply,
        sum(case when balance_rank <= 10 then balance end) / sum(balance) as top_10_share
    from holders
    ```
  </Tab>
</Tabs>
