• About
  • Services
  • Tech-Stack
  • Projects
  • Contact & Prices
  • Blog

Crypto Tax Tool

The Crypto Tax Tool analyses your CoinTracking trade history. It shows when purchased crypto can be sold tax-free, with any holding period you set, such as the 24 months that apply in Croatia. It also offers an overview of your holdings at current prices, the portfolio distribution, a gain and loss analysis and a filterable list of all transactions.

The problem

CoinTracking and similar tools calculate the tax-free status of crypto only with the German holding period of one year. In Croatia, for example, the holding period is two years. Anyone who pays taxes there cannot see in these tools which holdings are already tax-free.

So the Crypto Tax Tool was built as an add-on to CoinTracking: it reads the export and uses the holding period you set yourself. It also comes with a more modern interface.

The solution

The tool is split into three areas: tax-free status, holdings and transactions.

  • Import: Upload your trade history as a CSV export from CoinTracking. Alternatively, download a template and fill it with your own transactions. Sample data lets you try the tool without your own data.
  • Tax-free status per coin: All lots still held, with purchase date, tax-free date, remaining amount and status. The holding period is set in months, the default is 12 months.
  • Outlook: Which amounts become tax-free in the coming months, for 6 to 24 months ahead.
  • Holdings at current prices: Amount, price and value of each coin in euros and US dollars, plus the total portfolio value. Prices come live from the CoinGecko API.
  • Portfolio distribution: A chart shows each coin's share of the total value.
  • Gain and loss analysis: Gains and losses per month or year, filterable by coin and period.
  • Transaction list: All imported transactions, filterable by coin, exchange, group, type, year and month.

Technical challenges

Matching sales to the right purchases

For the holding period, what matters is exactly when the sold amount was bought. The tool matches sales using FIFO: what was bought first counts as sold first. After a partial sale, the rest of the affected lot keeps its original purchase date. Swaps that CoinTracking marks as non-taxable keep the original purchase date.

Recognising transfers between exchanges

Sending coins from one exchange to another is not a sale. The tool therefore looks for a matching deposit within seven days of each withdrawal and only treats the network fee as a disposal. Deposits without a match, for example from mining, count as new purchases.

The CoinTracking format

The exports mix columns for euros and crypto, use German date formats and placeholders for empty values. The import detects for each row whether it is a purchase, sale, swap, deposit, withdrawal or interest income.

Privacy: everything stays in the browser

Transaction data is sensitive. That is why the tool runs entirely in the browser, without a server or a database. Settings are kept in the browser's local storage. Only the current prices are fetched from the public CoinGecko API, and no transaction data is sent.

The result

The tool is free to use at cryptotaxtool.foxwebcraft.com. As a static website without a back end, it is cheap to run and fast: Lighthouse measures a desktop performance score of 100. A notice in the tool makes clear that it is not a substitute for tax advice.

More projects

  • Hostcraft

    Hostcraft gives holiday hosts their own booking website with calendar sync to Airbnb and Booking.com. Built with Next.js, Payload CMS and Stripe.

  • Mart App

    MART is an iOS and Android app that researchers use to run surveys and collect smartphone usage data. Used in a study at FU Berlin with 1,780 participants.

  • autentik

    autentik is a knowledge network built around the connections between content. Millions of entries from MusicBrainz, Wikipedia and Wikidata in Neo4j, built with Nuxt and D3.js.

Contact Contact

Please call me or send me an e-mail for discussing your Project.
Depending on the service, an hourly rate between 60 and 80 € net is charged.