Crypto tax report generator
Drop in a CSV from your exchange and get a capital gains report for your country โ with the right cost-basis method, holding-period relief and allowance already applied. It runs entirely in your browser, so your transaction history never leaves your device.
1 ยท Load your transactions
๐ Never leaves your browserDrop a CSV here, or
Or paste CSV text
Do it without the spreadsheet
Save on your first Koinly tax report
Try Koinly โAlso: CoinLedger
Partner links โ we may earn a commission at no extra cost to you. See our affiliate disclosure.
Why the method matters more than the rate
Two people with identical trades can owe very different amounts, because countries disagree about which coins you sold. Sell one of two Bitcoin you bought at different prices and the answer depends entirely on the matching rule: FIFO says you sold the older one, Canada averages both into a single cost, and the UK applies same-day and 30-day rules before falling back to a pooled average.
Holding periods matter just as much. Germany exempts a gain entirely once the coin has been held more than a year, Portugal at 365 days or more, and Australia halves the taxable gain after twelve months. Australia also has an ordering rule worth knowing: losses come off your gains before the 50% discount is applied, which is worth twice as much as doing it the other way round. This report applies each of those in the right order.
Then there is the swap question. In most countries trading BTC for ETH is a disposal you owe tax on, even though no money reached your bank. In France and Poland it is not taxed at all. In Portugal it is not taxed and your original purchase date carries through, so rebalancing does not restart your clock toward the exemption. Get this wrong and an active year can be off by thousands.
The full reasoning for each country โ with figures verified against the tax authority itself, not copied from other blogs โ is in the crypto tax by country comparison.
Still holding losers? There may be tax to save before the year closes
This report covers what you have already sold. The other half of the year's bill is what you have not sold: positions sitting at a loss can be realised to offset the gains above, but only before your tax year ends, only up to the gains available, and only if your country lets you buy back. Run the same file through the harvesting tool โ
Filing in the US? The cost-basis method you elect โ FIFO, LIFO or HIFO โ changes the gain above, sometimes by thousands. Compare all three on the same file โ
What your CSV needs
A header row and one line per transaction. The column names do not matter โ they are detected and you can correct the mapping. At minimum you need a date, and the amounts and currencies moving in and out.
- โขDate โ any common format. If your file uses 03/05/2024 style dates the tool asks which way round they are, because it changes your holding periods.
- โขSent / received amount and currency โ one side may be empty for income or a purchase.
- โขFees, if you have them โ acquisition fees are added to your cost basis, disposal fees deducted from the gain.
- โขA value column, if you trade crypto for crypto. Where one leg is your own currency the value is taken from it; a BTC-for-ETH swap cannot be valued without it.
- โขYour whole history, not just the reported year. Cost basis carries in from earlier purchases โ that is what makes the numbers right.
Frequently asked questions
๏ผIs my transaction data uploaded anywhere?
No. This site is a set of static files with no server and no database โ there is nothing to upload to. Your CSV is read by JavaScript in your own browser, the report is computed there, and closing the tab discards it. You can disconnect from the internet after the page loads and it will still work.
๏ผWhich exchanges does it support?
Any of them. Rather than hardcoding one format per exchange, it reads your column headers and maps them automatically, then lets you correct the mapping. Anything exporting a CSV with a date, amounts and currencies will work โ including a spreadsheet you keep yourself.
๏ผWhich cost-basis method does it use?
Whichever your country uses. FIFO for the US, Ireland, Germany, Australia and others; the adjusted cost base for Canada; HMRC's same-day, 30-day and Section 104 pooling rules for the UK; and Poland's annual pooling of costs against revenue.
๏ผDoes it handle crypto-to-crypto swaps?
Yes, and correctly for each country. Most treat a swap as a taxable disposal. France and Poland do not tax it at all, and Portugal not only exempts it but carries your original acquisition date through the swap, so rebalancing does not reset the 365-day clock.
๏ผWhat if a row cannot be valued?
It is flagged and left out of the totals rather than being counted as zero. A crypto-to-crypto swap needs a value in your own currency to be taxed, and if your export lacks one the report says so instead of quietly understating your gain.
๏ผCan I file my tax return with this?
No โ treat it as a way to check figures you or your accountant have produced, and to understand which rules apply to you. It deliberately lists what it does not model for each country, such as the UK's rate bands, Canada's superficial loss rule and India's 1% TDS.
๏ผDoes it cover previous tax years?
Yes. Load your full history and pick the year. Cost basis is carried in from earlier years, which is what makes the gains right โ a report built from one year of data alone will almost always be wrong.
This is general information and an estimate, not tax advice. Tax rules change and personal circumstances differ โ check your figures with a qualified professional before filing.