Skip to main content
Not every stablecoin transfer is a payment. 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).
Behavioural flows (Tier B): B2C payroll-style distributions, C2B merchant aggregation, and recurring B2B commerce.

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.

2. Wallet classification

Each address is typed from its full transaction history, with a wallet_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 are NULL. 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