From acquisition to the filed figure.
Gross proceeds are easy. Basis means tracking every lot and showing your work.
Tracks tax lots and inventory as it happens.
Every acquisition opens a lot, whether it's a purchase, staking reward, airdrop, or fork. Lots and inventory are tracked per account, with realized and unrealized gain and loss calculated from them, even when a fee is paid in a different asset. When an asset moves, its acquisition history moves with it.
Every figure traces back to its lots.
Disposals use each account's chosen method: FIFO, LIFO, HIFO, LOFO, average cost, UK Section 104 pooling, or specific lot identification. Incomplete history is flagged before forms are generated.
Where the basis goes.
Gain and loss feed your 1099-DA and international filings from the same engine-derived record. Lot-level data also powers live portfolio and trading views in your own product through the Customer Experience APIs.Cost basis, answered.
FIFO, LIFO, HIFO, LOFO, average cost, UK Section 104 pooling, and specific lot identification. The method is applied per account from a complete acquisition history, and the method used is saved with every figure, so you can always see how a number was worked out.
The acquisition history does not move with the asset, which is why basis goes missing at transfer. Taxbit derives basis from raw transaction data at the source and tracks transfers across venues so the chain stays intact, rather than reconstructing it after the fact from whatever history is still visible.
The engine works from raw transaction data, so an acquisition is an acquisition whether it arrived as a trade, a staking reward, an airdrop, or a fork. The cases that break generic engines are handled the same way: a fee paid in a different asset than the one traded, an asset transferred in with no history attached, transactions milliseconds apart from a high-frequency book. For specific DeFi protocols and NFT venues, coverage depends on the data you can send us, so it is worth walking through yours.
Incomplete history is flagged on the account as a data-validation issue instead of being quietly defaulted to zero or a guess. You see which accounts are affected, and why, before any forms are generated, while it is still cheap to fix.
It is built for it. The calculation runs on the full population rather than a sample, so the same basis holds in every jurisdiction you report in, and every figure stays traceable to the transaction it came from.
