Skip to main content
The tokens_stellar.transfers table contains token movement data for Stellar assets indexed on Dune. It brings native XLM, issued assets, and contract token activity into one table using a unified event model. This dataset includes:
  • Standard transfers between accounts, contracts, and other Stellar entities
  • Mint, burn, clawback, and fee events in the same token-movement stream
  • Coverage across classic Stellar operations and contract token activity
  • Asset identifiers for native, issued, and contract-linked assets
This table represents unified token movement on Stellar, not just payment operations. It also includes system-level activity such as fees, mints, burns, and clawbacks, so exclude those if you want to focus only on regular user-to-user transfers.

Utility

The Stellar transfers table provides a consistent view of token movement on Stellar, enabling you to:
  • Track token flows between wallets, issuers, and contracts
  • Analyze transfer activity by asset, operation type, and day
  • Separate regular transfers from mint, burn, clawback, and fee activity
  • Compare classic Stellar operations with contract token events

Methodology

According to the official Stellar docs, token transfers are standardized through CAP-67 unified events and the Token Transfer Processor (TTP), which derives token movement from ledger data across both classic operations and contract-based activity. The tokens_stellar.transfers table is built around that event model:
  • It standardizes token movement into a shared set of event topics: transfer, mint, burn, clawback, and fee.
  • It captures activity from classic Stellar operations such as payments, path payments, DEX offer execution, claimable balances, liquidity pool actions, account merges, and clawbacks.
  • It also includes contract token events, where is_soroban = true and event_type is commonly invoke_host_function.
  • event_type shows the originating operation or execution path, while event_topic shows the normalized token-movement category.
  • contract_id is populated on every event as the standardized asset identifier used across native, issued, and contract tokens.
Because fee events are part of the same stream, not every row has both a sender and receiver. For example, fee rows usually have a from account but no to account. The from and to columns can contain multiple Stellar address types. The prefix identifies the entity type, so you may see G... accounts, C... contracts, B... claimable balances, and L... liquidity pools.

Table Schema

ColumnTypeDescription
unique_keyVARCHARSurrogate key to identify a unique transfer row
blockchainVARCHARBlockchain name; always stellar
block_monthDATEMonth of the ledger close time
block_dateDATEDate of the ledger close time
block_timeTIMESTAMPLedger close timestamp
ledger_sequenceBIGINTLedger sequence number
transaction_hashVARBINARYHex-encoded transaction hash
transaction_idBIGINTUnique transaction identifier
operation_idBIGINTOperation identifier; NULL for Soroban events
token_standardVARCHARToken standard label: native, classic, or soroban
fromVARCHARSource address for the token movement; may be an account, contract, claimable balance, or liquidity pool
toVARCHARDestination address for the token movement; may be an account, contract, claimable balance, or liquidity pool
to_muxedVARCHARMultiplexed destination account when present
to_muxed_idVARCHARMultiplexed destination account ID when present
contract_idVARCHARStandardized contract identifier for the asset on every event
assetVARCHARAsset identifier; for issued assets this is typically asset_code:asset_issuer
asset_typeVARCHARStellar asset type such as native, credit_alphanum4, credit_alphanum12, or soroban
asset_codeVARCHARAsset code for protocol-issued, non-contract assets when applicable
asset_issuerVARCHARIssuer address for protocol-issued, non-contract assets when applicable
symbolVARCHARToken symbol
decimalsINTEGERNumber of decimals used to scale amount_raw
amount_rawDOUBLERaw token amount in base units
amountDOUBLENormalized token amount
price_usdDOUBLEUSD price used to calculate amount_usd; populated for native XLM pricing
amount_usdDOUBLEUSD value of the transfer; populated for native XLM pricing
event_topicVARCHARNormalized token event category: transfer, mint, burn, clawback, or fee
event_typeVARCHARUnderlying Stellar operation or execution type that produced the event
is_sorobanBOOLEANWhether the event came from contract token activity
_updated_atTIMESTAMP WITH TIME ZONETimestamp when the curated row was last written

Sample Queries

Query token movement for a specific Stellar address This query returns incoming and outgoing token events with populated normalized amounts for a wallet during a historical window:
SELECT
    block_time,
    transaction_hash,
    asset,
    event_topic,
    event_type,
    CASE
        WHEN "from" = 'GAUA7XL5K54CC2DDGP77FJ2YBHRJLT36CPZDXWPM6MP7MANOGG77PNJU' THEN 'Outgoing'
        WHEN "to" = 'GAUA7XL5K54CC2DDGP77FJ2YBHRJLT36CPZDXWPM6MP7MANOGG77PNJU' THEN 'Incoming'
    END AS direction,
    amount
FROM tokens_stellar.transfers
WHERE (
        "from" = 'GAUA7XL5K54CC2DDGP77FJ2YBHRJLT36CPZDXWPM6MP7MANOGG77PNJU'
        OR "to" = 'GAUA7XL5K54CC2DDGP77FJ2YBHRJLT36CPZDXWPM6MP7MANOGG77PNJU'
    )
    AND event_topic <> 'fee'
    AND block_time >= TIMESTAMP '2025-11-24 00:00:00 UTC'
    AND block_time < TIMESTAMP '2025-12-01 00:00:00 UTC'
ORDER BY block_time DESC
LIMIT 100
Calculate daily transfer volume for a specific Stellar asset This query aggregates daily transfer activity for issued USDC during a historical window:
SELECT
    date_trunc('day', block_time) AS day,
    asset,
    COUNT(*) AS num_rows,
    SUM(amount) AS total_amount
FROM tokens_stellar.transfers
WHERE asset = 'USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN'
    AND event_topic = 'transfer'
    AND block_time >= TIMESTAMP '2025-11-01 00:00:00 UTC'
    AND block_time < TIMESTAMP '2025-12-01 00:00:00 UTC'
GROUP BY 1, 2
ORDER BY 1 DESC
Split Stellar token activity by event category and source This query helps distinguish transfers from mints, burns, clawbacks, and fees, while also separating classic and contract-based activity during a historical window with populated normalized amounts:
SELECT
    date_trunc('day', block_time) AS day,
    event_topic,
    COALESCE(CAST(is_soroban AS VARCHAR), 'false') AS soroban_flag,
    COUNT(*) AS num_rows,
    SUM(amount) AS total_amount
FROM tokens_stellar.transfers
WHERE block_time >= TIMESTAMP '2025-11-01 00:00:00 UTC'
    AND block_time < TIMESTAMP '2025-12-01 00:00:00 UTC'
    AND asset = 'native'
GROUP BY 1, 2, 3
ORDER BY 1 DESC, 2, 3