Crypto tax confuses people because the rules aren't crypto-specific — they're the same capital-gains rules that govern stocks, applied to assets that move far more often and across far more venues. This guide explains the mechanics that matter: what triggers a taxable event, how FIFO cost-basis matching turns a pile of trades into a gain or loss, the short-term versus long-term split, and what a Form 8949-style report contains. It's educational, not tax advice — your jurisdiction and situation can change the answer, so confirm with a qualified professional before filing.
What triggers a taxable event
In most jurisdictions, a disposal is the taxable moment. You dispose of crypto when you:
- sell it for fiat,
- swap one coin for another (yes, crypto-to-crypto is usually a disposal),
- spend it on goods or services.
Simply buying and holding is not a taxable event, and neither is moving coins between your own wallets or accounts — that's a transfer, not a disposal, even though exchange exports often muddle the two. (More on that below; it's the single biggest source of phantom “gains.”)
Each disposal produces a capital gain or loss: proceeds minus cost basis.
Cost basis and FIFO
Cost basis is what you originally paid to acquire the units you're now disposing of, including the buy-side fee. Proceeds are what you received on disposal, net of the sell-side fee. The gain is the difference.
The complication is that you usually bought the same coin many times at different prices. When you sell some of it, which units did you sell? That's a matching question, and the most common method is FIFO — first in, first out: the oldest units you still hold are treated as the ones you sold.
A quick example. You buy:
- 1 BTC at $40,000 (January),
- 1 BTC at $50,000 (March).
In June you sell 1 BTC at $70,000. Under FIFO you're deemed to have sold the January coin:
- Proceeds: $70,000
- Cost basis: $40,000
- Gain: $30,000
Your remaining holding is the March coin with a $50,000 basis, still open. Had you used a different accounting method (where permitted), the matched lot — and therefore the gain — could differ. FIFO is the default in many places and the simplest to defend.
Short-term vs long-term
How long you held the matched lot usually changes the rate. In the US, for instance, a position held one year or less before disposal is a short-term gain, taxed at ordinary income rates; held more than a year, it's long-term, typically taxed at lower rates. The holding period is per matched lot, which is why FIFO matters twice: it picks which cost basis applies and which holding period.
In the example above, if the January coin was held from January to June, that's a short-term gain. This is also why tax-aware traders watch their lot ages — nudging a sale past the one-year mark on a specific lot can materially change the bill. (Rules vary widely by country; some have no long/short distinction, some tax differently again. Check yours.)
What a Form 8949 report contains
In the US, capital disposals are reported on Form 8949, which then feeds Schedule D. Each row is one disposal and contains:
- description of the asset (e.g. “0.5 BTC”),
- date acquired and date sold,
- proceeds,
- cost basis,
- gain or loss,
- and a short/long-term classification.
Even if you're not filing US taxes, this is the right shape for the data your accountant or tax software needs anywhere: per-lot, dated, with basis and proceeds separated. The crypto tax calculator demonstrates the FIFO matching on a small set of trades so you can see how buys and sells in any order resolve into total gain, the short/long split, and the lots still open.
The mistake that inflates everybody's tax bill
Here's the trap: transfers between your own accounts are not disposals, but raw exchange exports frequently record them as if they were. Move BTC from Binance to Bitget, or between sub-accounts, and a naive importer can read the withdrawal as a sale and the deposit as a fresh purchase — manufacturing a gain that never happened and resetting your cost basis incorrectly. Over a busy year this can balloon a tax estimate by a large margin.
Getting it right requires reconciling transfers across venues — detecting that a withdrawal from one account and a deposit into another are two halves of the same internal move, and excluding them from the gain calculation. That reconciliation is hard to do by hand and is exactly what a proper tracker automates.
From trade history to a filing-ready report
Meetcrypt pulls your full trade and transfer history from Binance and Bitget with a read-only API key, separates internal transfers from real disposals, and generates a FIFO tax report (Form 8949 style) — per-lot cost basis, proceeds, gain/loss, and holding period — exportable as CSV for your tax software or PDF for your accountant. Because it works from raw fills rather than the exchange's summary screens, the numbers reconcile to what actually moved. See how the reporting and exports work, or connect an account to generate one for your own history.
Educational information only — not tax or financial advice. Tax treatment varies by jurisdiction and individual circumstances; consult a qualified tax professional before filing.