payments.commerce_flows is a transfer-level dataset that identifies the ones that are — every transfer that is a legitimate commerce transaction, tagged with its flow type (party_pair, purpose), a confidence level, and the protocol where one is known.
The table is intentionally conservative: transfers that don’t match a rule are excluded, not bucketed as “unclear”. It is not a universal stablecoin classifier and does not try to label everything.
Commerce Flows feeds back into the stablecoins dataset — payments are a sub-category of stablecoin activity. Matched transfers have their category updated from unidentified to payment in stablecoins_evm.activity_enriched.
Why this dataset matters
Most stablecoin volume is not payments — it is trading, bridging, and treasury movement. Commerce Flows isolates the slice that is genuine commercial settlement, attaching an explicit rule and a confidence level to every row. It makes it possible to:- Measure onchain commerce volume by flow type (B2B, C2B, B2C) and protocol.
- Separate protocol-verified settlement (Tier A) from behavioural inference (Tier B).
- Label stablecoin transfers as payment-related for downstream analytics.
Coverage
Chains: EVM chains, Tron, and Solana. Solana coverage is label-based (Tier A) only. Protocol-verified sources (Tier A):- Crypto cards — sourced from
payments.card_transactions. - Agentic payments (x402 / MPP) — sourced from
payments.agentic_payments. - Stripe, Shopify Commerce Payments Protocol, Coinbase Commerce, Request Network, and stablecoin payment processors (e.g. BVNK).
Output taxonomy
Methodology
The pipeline runs in ordered stages: a strict exclusion layer removes non-commerce and non-final activity, then Tier A captures protocol-explicit matches (confidence = high), and finally Tier B applies a small set of high-signal behavioural heuristics to the residual (confidence = medium). Each transfer maps to one output row, and Tier A always takes precedence over Tier B.
1. Exclusion layer
Fires before any classification. A transfer matching any rule is dropped from the eligible universe.- Via upstream stablecoin labels: issuer mechanics (mint / burn), bridge and wrap infrastructure, CEX legs, DEX / AMM / routing, and DeFi vaults / lending / yield.
- Via behavioural shape: same-entity / self-transfers, round-trip and reverse transfers (treasury reshuffling, wash patterns), A→B→C pass-through routing (avoids double-counting intermediary legs), high-frequency bot wallets, and large one-off treasury repositioning.
Eligibility settles 24 hours after block time. Round-trip and reverse-transfer detection looks 24 hours forward, so a transfer’s eligibility is not final until 24 hours after its block time. Rows older than 24 hours are stable; only the most recent 24 hours can still change as later reverse legs land. This keeps both legs of a round trip out of the dataset, at the cost of a short settling window on the leading edge.
2. Wallet classification
Each address is typed from its full transaction history, with awallet_balance_tier derived from its rolling 30-day average USD balance.
3. B2B commerce
4. B2C payroll
5. C2B commerce
Table schema
Each row is one classified stablecoin transfer. Non-applicable fields areNULL. Every row carries tx_hash + transfer_evt_index + transfer_unique_key to join back to the upstream stablecoin transfer.
Sample queries
Commerce flow volume by party pair and purpose
Protocol-verified flows only
Related tables
payments.card_transactions— Tier A source for crypto card matches.payments.agentic_payments— Tier A source for x402 and MPP matches.stablecoins_evm.activity_enriched— downstream consumer; exposescategory = 'payment'for matched transfers.