Farbeam

Exchange flow monitoring

A team that needs to know when large transfers reach known exchange wallets can run rules on the from_type and to_type fields. Coverage is narrow: 23 exchange addresses in the label set, and only transfers of $100,000 or more in curated tokens.

#Workflow

  1. List the labeled wallets: GET /labels?type=exchange. Filter it with chain to see the entries for one chain.
  2. Write rules in the rule tester for each direction.
  3. Save the rules in the console with a webhook URL. Set the cooldown, because matches during a cooldown are dropped. The default is 300 seconds, so a busy rule needs a low value such as 60 seconds.
  4. Dedupe by data.uid in your handler, because a retry can send the same event twice.
  5. Once an hour or so, poll GET /transfers?address=... for each wallet you care about, to catch anything your endpoint missed.

#Rules

Each was tested with POST /rules/validate at 2026-11-04T19:21:20Z against the newest 1,948 stored rows, about 18 minutes of data.

RulePurposeMatches
to_type == "exchange" and usd >= 1mInto any labeled exchange1
from_type == "exchange" and usd >= 1mOut of any labeled exchange1
to_type == "exchange" and token in ["USDC","USDT","DAI"] and usd >= 500k and sampled == falseStablecoins into exchanges, Solana excluded2
from_type == "exchange" and to_type == "exchange"Between labeled exchanges0

The match counts come from a very short window, so they do not show a typical rate.

#Real sample

GET /transfers?address=0xA9D1e08C7793af67e9d92fe308d5697FB81d3E43&limit=10 at 2026-11-04T19:24:48Z, for the wallet labeled Coinbase 10. Addresses are shortened here. The table shows the newest five rows.

Time (UTC)TokenUSDFromTo
19:23:11USDT400,682Coinbase 100x119a...3220
19:22:11USDT188,1700xdf2a...afc1Coinbase 10
19:18:11USDT748,1780x2624...9834Coinbase 10
19:18:11USDT400,673Coinbase 100xf930...4a7a
19:16:11USDT151,0910x97bc...f51aCoinbase 10

The times end in the same seconds because ts on EVM log events is estimated from the head block time. Use transaction lookup for the exact block time.

#Reading the result

What you seeWhat it can meanWhat it does not prove
Transfer to an exchange walletFunds moved to an address with that labelA sale. Exchanges also move funds internally and hold customer deposits
Transfer from an exchange walletA withdrawal or a treasury moveA purchase or a long-term hold
Many rows from one addressSeveral separate transfersOne actor. Farbeam does not cluster addresses
Zero rowsNo matching stored rowNo flow. The address may be unlabeled, the token not curated, or the amount below $100,000

A well-known exchange uses far more addresses than the label set holds. Deposit addresses are not labeled, so a deposit normally appears first as a transfer between two unlabeled addresses.

#What this will not do