Overview: The Four Things Tax Authorities Want to Know
Regardless of where you live, your tax authority wants to know four things about your crypto activity:
- How much did you receive from disposing of (selling, swapping, spending) cryptocurrency?
- What did that cryptocurrency cost you originally?
- How much income did you receive in crypto (mining, staking, payment for services)?
- Do you have any losses that can offset gains?
The steps below walk through how to arrive at those answers.
Step 1 — Gather All Transaction Records
Start by compiling a complete history of every crypto transaction you made during the tax year. You need records from:
- Centralised exchanges (Binance, Coinbase, Kraken, etc.) — download your complete transaction history as CSV or PDF. Most exchanges retain 3–5 years of history.
- Decentralised exchanges and DeFi protocols — these do not issue tax statements. Use a blockchain explorer (Etherscan, Solscan, etc.) or a crypto tax tool to pull on-chain activity.
- Wallet-to-wallet transfers — document these separately so they are not confused with taxable disposals.
- Payment processors — if you accepted crypto as a merchant, download your payment history including the exchange rate at the time of each payment.
- Mining and staking income — pool statements, staking dashboards, or on-chain records showing tokens received and their value at receipt.
Your goal is a single, complete transaction log showing: date, asset, quantity, transaction type, price in local currency at that date, and fees.
Step 2 — Convert All Values to Your Local Currency
Every transaction must be expressed in your local fiat currency (e.g. euros, Polish zloty, US dollars). Use the exchange rate on the exact date and time of each transaction. Sources for historical rates include:
- CoinGecko and CoinMarketCap historical price data
- Major exchange historical price APIs (Binance, Kraken)
- Your exchange''s own confirmation emails, which often include the rate applied
Many tax software tools do this automatically — see Step 7 for options.
Step 3 — Calculate Your Cost Basis
For each disposal, you need to know the cost basis of the specific tokens you are selling. This depends on the method your tax authority requires:
- FIFO (First In, First Out): Assume you sell the oldest tokens first. Required in many EU countries including Poland and Germany.
- Weighted Average: Average the cost of all tokens of a given asset you hold. Required in some jurisdictions.
- HIFO (Highest In, First Out): Allows minimising gains but only permitted in certain countries (notably not in the EU for crypto).
Your cost basis includes the purchase price plus any fees paid when you acquired the asset. For example, if you bought 1 ETH for €2,000 and paid €20 in exchange fees, your cost basis is €2,020.
Step 4 — Calculate Gains and Losses
For each disposal event:
Gain / Loss = Proceeds − Cost Basis − Transaction Fees at Sale
Proceeds are the fair market value of what you received at the time of the disposal — whether that is fiat, another crypto asset, or goods and services.
Sum all gains and losses for the tax year. In most countries, losses can offset gains of the same type. If total losses exceed total gains, you may be able to carry the net loss forward to future years (rules vary).
Step 5 — Separate Capital Gains from Ordinary Income
Different types of crypto income are often taxed differently and reported on different forms:
- Capital gains — from selling, swapping, or spending crypto you held as an investment.
- Ordinary income — from mining rewards, staking rewards, payment for services, and airdrops. Taxed at your regular income rate in most jurisdictions.
Keep these two categories separate in your records, as they often go on different tax schedules or forms.
Step 6 — Fill Out the Correct Tax Forms
Forms vary by country:
| Country | Capital Gains Form | Income Form |
|---|---|---|
| Poland | PIT-38 | PIT-36 or PIT-36L |
| Germany | Anlage SO (Sonstige Einkünfte) | Anlage SO |
| United Kingdom | SA108 (Self Assessment) | SA102 / SA103 |
| United States | Schedule D + Form 8949 | Schedule 1 (Part I) |
| France | Formulaire 2086 | Déclaration des revenus 2042 |
Always verify current form requirements on your national tax authority''s official website — forms and rules change annually.
Step 7 — File and Pay by the Deadline
File your return and pay any tax owed by the deadline in your country. Common deadlines:
- Poland: April 30
- Germany: July 31 (or October 31 with a tax advisor)
- United Kingdom: January 31 (online self-assessment)
- United States: April 15
Late filing penalties and interest can be significant. If you cannot complete your return in time, check whether your country allows filing extensions.
Crypto Tax Software That Can Help
Manually tracking hundreds of transactions is error-prone. The following tools automate much of the process:
- Koinly — supports 350+ exchanges, integrates with most EU tax forms, good Polish support
- CoinTracking — German-founded, strong EU coverage, supports PIT-38 export
- TokenTax — US-focused but supports international users
- Divly — Scandinavian and Polish tax focus
These tools connect to your exchanges via API or CSV import, match transactions to calculate gains, and often generate a ready-to-file tax report for your jurisdiction.
A Note for Merchants
If you accepted cryptocurrency as payment for goods or services, your process has an additional step: recording the fair market value of each payment at the time of receipt as revenue. This amount becomes both your taxable income and the cost basis of the cryptocurrency you received. Keep your payment processor reports as the source of truth for these values.
This guide provides general information and does not constitute tax advice. Requirements differ between countries and change regularly. Consult a tax professional in your jurisdiction.