Two methods, two questions
| FIFO | Average cost | |
|---|---|---|
| Where it appears | The profit and loss page, realised gains | Asset and symbol pages |
| Question it answers | What did this specific disposal earn? | What did my position cost me on average? |
| Computed | Server side, lot by lot | Client side, across your holding |
An average price can look surprisingly low when part of the position was bought cheaply. That is the arithmetic of a weighted average working correctly, not a pricing error.
We never invent a cost we did not pay
If coin arrives from somewhere we cannot see, its cost is genuinely unknown. That is rarer than it sounds, because most arrivals are not mysteries at all: rebuilding your history recovers the purchase in the first place, and transfer matching recognises a move between your own accounts as the move it is rather than a sale followed by a gift. What is left over after both is the genuinely unknown part.
The tempting shortcut is to record that unknown cost as zero, and the shortcut is wrong in an expensive direction: a zero-cost lot books nearly the entire sale price as profit and drags your average cost down.
So a cost-unknown lot realises nothing when it is sold, and it is excluded from average cost. It stays visible as something to resolve, and you can set the real cost yourself, at which point it behaves like any other purchase.
This is the rule we are least willing to bend. A number that is missing is obviously missing. A number that is fabricated looks exactly like a real one.
Income is valued on the day it arrives
Staking rewards, airdrops and Earn payouts are acquired at whatever they were worth the day they landed. That value is both the income and the cost basis of the resulting position, so taxing the full sale price later would count the same value twice.
We read the receipt-day price and open the lot at that value, using the same rules as everything else we price. If the asset has no honest price, which is the normal case for a scam airdrop, it stays cost-unknown rather than receiving a made-up basis.
Fees are part of what it cost you
A trading fee raises the cost of a buy and reduces the proceeds of a sell. Fees paid in a third asset count too: if you pay a BNB fee on an ETH trade, that fee is converted through its value on the day and included. Where the fee asset cannot be priced, it contributes nothing rather than a guessed amount.
Dollar stablecoins are treated as cash
USD stablecoins are the unit you measure in, not a position you speculate on. Running cost-basis accounting on them produced phantom open lots that never closed, because a stablecoin spent as the quote side of a purchase was never recorded as a disposal of that stablecoin.
So they are counted as cash at one dollar and read from your live balance. The crypto side of the same trade is unaffected.
What this does not give you
We ship FIFO and average cost. We do not offer HIFO, specific-identification, UK pooling, or per-wallet depot accounting, and different jurisdictions accept different methods. These numbers are built to show you the truth of your own portfolio; they are not a filed tax report, and we do not claim jurisdictional completeness.
If a filing is what you actually need, say so to yourself early and use a tool built for it: Koinly and CoinTracker both produce downloadable tax reports and we do not. The rest of what we will not do is collected in known limits.