Farbeam

What a transfer row means

2026-11-04 UTC · Farbeam research

One row in the live transfers table looks simple: an amount moved from one address to another. It is easy to read too much into it. This guide takes one real row apart and lists what you can and cannot conclude.

#One real row

From GET /transfers?chain=ethereum&token=USDT&min_usd=1000000&limit=1, at 2026-11-04T19:24:11Z.

JSON
{
  "id": 1217,
  "uid": "ethereum:0x5fe8bf27f732de57e963cb92a0f17173c1e2cdadfdabb241e7d3dc25a346c342:335",
  "ts": "2026-11-04T19:12:59.000Z",
  "chain": "ethereum",
  "block": 26343466,
  "tx": "0x5fe8bf27f732de57e963cb92a0f17173c1e2cdadfdabb241e7d3dc25a346c342",
  "kind": "token",
  "token": "USDT",
  "token_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
  "amount": 2500000,
  "usd": 2498505,
  "from": "0x8c5d0c5339c282b3e7f22a207e47d73d0227cba9",
  "to": "0x8b820fe67e8367d322d0c1bfc809cd9fe478df52",
  "sampled": false,
  "from_label": null,
  "from_type": null,
  "to_label": null,
  "to_type": null
}

#Field by field

FieldWhat it isWhat to keep in mind
idRow number in the storeUsed as the page cursor. It has no meaning across restores
uidchain:tx:logIndex on EVM tokensStable. Use this to remove duplicates. Here 335 is the log index
tsTime in UTCEstimated on EVM log events from the head time and a set block time. It can be off by some seconds
blockBlock or slot numberExact
txTransaction hashOne transaction can produce many rows
kindtoken or nativenative means ETH on Ethereum, or SOL on Solana
amountUnits of the tokenFrom the log, with decimals applied
usdAmount times the price at indexingFixed once stored. Here it implies $0.999402 per USDT
from, toAddresses in the logNot necessarily who started the transaction
sampledTrue on SolanaTells you that the source is partial: sampled blocks and a wallet watch list
from_label, to_labelNames from the label setNull means no label, and most addresses have none

#What the row proves

The row says that a token contract emitted a Transfer event for 2,500,000 USDT between those two addresses, in that transaction. You can confirm it on any explorer.

#What the row does not prove

A change of owner. Both addresses may belong to one party. Exchanges and funds move assets between their own wallets all day.

A trade. A transfer is not a sale. Swaps do produce transfer rows, but so do deposits, loans, and contract housekeeping.

The sender's identity. from is the address whose balance fell. A router or a contract can move tokens on behalf of someone else. Use transaction lookup to see who sent the transaction.

The whole picture of that transaction. Rows exist only for curated tokens at $100,000 or more. A transaction can move other assets that the index does not store.

#Mistakes when counting

#Summing rows as volume

GET /transfers/stats adds up stored rows. It is useful for comparing the index with itself, but it is not on-chain volume.

ReasonEffect
Rows below $100,000 are not storedUndercount
Only curated tokens are storedUndercount
Solana is read only in partLarge undercount
Arbitrum blocks can be skippedUndercount
One transfer through a router makes several rowsOvercount
Wrapping creates extra rowsOvercount

#Reading a double row as two moves

On 2026-11-04, the first two Solana rows in the index were a wSOL row and a SOL row with the same USD value of $679,207. They came from one transaction: the poller reads token balances and lamport balances separately, and wrapped SOL changes both. Sum them and you count one move twice. Group by tx when you need to avoid this.

#Comparing chains by row count

In the snapshot of 2026-11-04T19:48:37Z, Base had 2,960 rows and Ethereum had 1,156, but Ethereum's USD total was about 2.8 times that of Base. A chain with cheap fees sees more transfers through contracts. Row count alone says little about value.

#Comparing with a dashboard

Numbers from another product will not match, because the scope differs. See the analytics comparison.

#How to check a row

  1. Open the tx in the transaction tool. Read status, the sender and the list of token_transfers.
  2. Look up from and to in the wallet explorer. Check is_contract, tx_sent and the label.
  3. If it matters, confirm on an explorer. The transaction tool gives a link.
  4. Note what remains unknown.

A native ETH row needs one more check, because the indexer does not read receipts for those. A reverted transaction can appear as a row. The status field on the transaction lookup settles it.

A row is a fact about a public event. It is not a signal, and it is not financial advice.