What is Exchange Flows Classification?
The payments pipeline deliberately excludes exchange-touching transfers from the payment mix — intra-exchange activity is not observable on-chain, so its purpose cannot be inferred.stablecoins.intelligence.central_exchange_flows_classification makes those flows visible instead of invisible, by describing the counterparty: a business sending to an exchange typically signals liquidity management; a consumer, an on/off-ramp.
Every stablecoin transfer leg with a labeled exchange on either side is classified — coverage reconciles exactly with the exchange-touching population upstream. These flows are never counted as payments, B2B, or real-world payment volume.
The classification matrix
Sender type always comes first. Wallet counterparties are typed behaviorally (Consumer / Business / Institutional / Unclassified); labeled counterparties get their own segments.
Two refinements add color to every exchange leg:
exchange_flow_subtypesplitsX2X:intra_exchange(same entity — hot→cold consolidation, treasury sweeps),inter_exchange(genuine inter-venue settlement),unknown(entity attribution missing).exchange_rank_tiersizes the venue by global stablecoin holdings:top_1_5,top_6_15,top_16_30,rest(ranked below 30),unranked(attributed but absent from the exchange ranking — may not be a real/active exchange),unknown(no entity attribution).
Grain matters. Rows are per transfer leg — exchange batch payouts pay many users in one transaction, and every leg is kept. Filter
is_max_transfer = true for Visa-style per-transaction dedup; leave it unfiltered to analyze batch withdrawals.Schema
Table:stablecoins.intelligence.central_exchange_flows_classification
Example queries
Deposit vs withdrawal mix by counterparty segment (30d)
Hot→cold consolidation vs inter-venue settlement, by venue tier
Exchange-rail payouts (batch withdrawals to many recipients)
Relationship to the behavioral flows pipeline. Payout runs executed from exchange accounts appear here as high-fan-out withdrawals — they are deliberately out of scope for
merchant_payout_runs, which covers platform-wallet payouts. The two are adjacent and non-overlapping; union them knowingly for total on-chain disbursement.