USD valuation
Every transfer row has a usd value. It equals amount times the price the service held at the moment it indexed the row. It is computed once and never updated.
#Price source
Prices come from the CoinGecko simple/price endpoint, in USD, for one list of ids. The poller refreshes them every 60 seconds. Read the same values with Asset prices.
| CoinGecko id | Used for |
|---|---|
ethereum | ETH, WETH on all chains, ETH on BNB Chain |
binancecoin | BNB, WBNB |
polygon-ecosystem-token | POL (fees and wallets only, no index on Polygon) |
solana | SOL, wSOL |
usd-coin | USDC on all chains, USDbC on Base |
tether | USDT on all chains |
wrapped-bitcoin | WBTC, cbBTC on Base, BTCB on BNB Chain |
dai | DAI |
This sample of GET /prices was captured on 2026-11-04 UTC. It is an example, and values change every minute.
{
"ethereum": { "usd": 2423.51, "change_24h_pct": 5.86 },
"binancecoin": { "usd": 716.72, "change_24h_pct": 2.86 },
"polygon-ecosystem-token": { "usd": 0.096378, "change_24h_pct": 4.66 },
"solana": { "usd": 95.35, "change_24h_pct": 2.23 },
"usd-coin": { "usd": 0.999692, "change_24h_pct": 0.01 },
"tether": { "usd": 0.999402, "change_24h_pct": 0.03 },
"wrapped-bitcoin": { "usd": 80237, "change_24h_pct": 3.67 },
"dai": { "usd": 1, "change_24h_pct": 0.01 }
}#Stablecoins are not fixed at $1
Stablecoins use their market price from the same source. There is no hard-coded peg. This has one visible effect at the $100,000 threshold.
| Transfer | Price at index time | usd | Stored |
|---|---|---|---|
| 100,000 USDT | 0.999402 | 99,940.20 | No |
| 100,100 USDT | 0.999402 | 100,040.14 | Yes |
| 100,000 DAI | 1 | 100,000.00 | Yes |
The threshold test is usd >= 100000. Rows at round numbers can fall on either side, depending on the price that minute. The figures above are worked examples using the sample prices.
#Mapped assets
A wrapped or bridged token uses the price of its reference asset. The service does not read a separate market for each one.
| Token | Priced as | Consequence |
|---|---|---|
| USDbC on Base | usd-coin | A USDbC depeg would not show in usd |
| cbBTC on Base | wrapped-bitcoin | Same approach |
| BTCB on BNB Chain | wrapped-bitcoin | Same approach |
ETH on BNB Chain | ethereum | Same approach |
| wSOL on Solana | solana | Same approach |
#Price at index time
The usd value is a record of one moment, and it does not follow the market after that.
- The price can be up to about a minute old when the row is stored.
- A row from yesterday keeps yesterday's price.
- Summing
usdover time gives a sum of values at different prices, which is not a current value.
For a current value, multiply amount by a current price from /prices.
#Where other USD values come from
Not every USD figure in the API has the same origin. Compare them with care.
| Field | Source | Time |
|---|---|---|
transfers[].usd | CoinGecko | Index time, fixed |
native.usd, tokens[].usd on EVM wallets | CoinGecko | Current, 30 s cache |
tokens[].usd on Solana wallets | Helius price data when Helius is in use, else CoinGecko for curated tokens only | Current, 30 s cache |
value.usd on GET /tx | CoinGecko | Current, not the price when the transaction ran |
market.price_usd in a token report | Median implied price across DexScreener pools | 60 s cache |
native_price_usd on GET /gas | CoinGecko | Current |
A token report's price_usd and a /prices value for the same asset will usually differ by a small amount. The first comes from DEX pools, and the second from an aggregator.
#Limits
- Price failures. If a refresh fails, the service keeps the last good prices and goes on valuing rows with them. There is no marker on the row.
coingeckoon Status shows the failure. - No price at start. Until the first refresh succeeds after a restart, rows are skipped, because a row needs a price. This window is normally seconds.
- No fee or slippage logic.
usdvalues the transferred amount only. - Precision.
amountandusdare doubles. The raw integer value from the chain is not stored. For exact amounts, read the transaction from the chain. - Not a trade price.
usdvalues a transfer at a reference price. It is not what any party paid or received. See transfers vs trades.
Market prices are for information only and are not financial advice.