← Back to Mission Control

BTC Tax Tool Web – The Guide

From CSV export to tax office report β€” in 5 minutes, entirely in your browser

"Your transaction data never leaves your machine. No upload, no account, no tracking β€” the entire calculation runs locally in your browser."

Note: The interface is available in English: switch with the EN button at the top right (or open the tool with ?lang=en). The reports themselves stay in German, because they are documents for the German tax office (Β§ 23 EStG, FiFo method, one-year holding period).

The video shows the state of June 2026 with the German interface. Today the tool is completely free, with no access link, and it is also available as an app for Android and Linux. The images on this page show the current version.

Want to dive right in?

β†’ Open the web version (free, sample data included to try it out)

β†’ As an app for Android and Linux (same calculation core, offline)

Step 0: What you need

Just your CSV exports. Every broker and the BitBox app offer an export β€” downloading once a year is enough:

SourceWhere to export
BitBoxBitBoxApp β†’ Account info β†’ Export transaction history (one CSV per wallet)
21bitcoinApp β†’ Activity β†’ Export report
BisonApp β†’ Account β†’ Reports β†’ Transaction history (CSV arrives via email)
SwissquoteWeb β†’ Account β†’ Transactions β†’ CSV export
StrikeApp/Web β†’ Activity β†’ Generate report
PocketWeb β†’ History β†’ Download CSV
BisqBisq 1 (the classic desktop app, not Bisq 2/Bisq Easy) with the interface set to English or German: Portfolio β†’ History β†’ Export to CSV
CoinTracking / BlockpitCoinTracking β†’ "Trade List" page (or "Transactions", formerly "Enter Coins") β†’ "CSV" button above the table; Blockpit β†’ Transactions β†’ Export CSV. Every account in the file becomes a wallet of its own; format not yet confirmed against real exports, the report warns

Purchases without a CSV (Robosats, cash, P2P) or from brokers without a dedicated parser go into a simple manual_buys.csv β€” details below.

Step 1: Load your files

Open api.alien-investor.org/steuertool/. Drag all CSV files into the dashed zone at once β€” or click it and select the files. Order does not matter, file names do not matter: the app detects every broker automatically from the file contents.

BTC Tax Tool start view with drop zone

The start view: simply drag your CSV files into the dashed zone.

Step 2: Check detection β€” and mark noKYC wallets

After loading, the table shows each file with its detected type. Entries marked orange are noKYC sources β€” they stay strictly separated from the tax office report:

File table with automatically detected broker types and noKYC hint

All files detected β€” Bisq and manual purchases automatically flagged as noKYC (orange). The noKYC wallet of the sample data is already marked via its folder; with your own files you switch it yourself.

⚠ The one manual step

A BitBox CSV cannot reveal whether the wallet holds KYC or noKYC coins β€” only you know that. If you run a dedicated noKYC wallet (e.g. for Bisq deposits), switch it to "BitBox wallet (noKYC)" in the dropdown. Otherwise it will appear in the official report. The orange hint box reminds you as long as BitBox wallets are classified as KYC.

If a file is not recognized, the calculation stays locked until you pick a type manually or set the file to "Ignore" β€” so an incomplete report can never happen silently. Your broker missing entirely? Send the CSV header line (no real data) to kontakt@alien-investor.org β€” parsers are added continuously. In the web version new brokers are available instantly, nothing to install, in the apps with the next update.

Step 3: Compute the report

One click on "Calculate report". On the very first run the app loads its Python environment into the browser β€” that takes a few seconds once, afterwards it is fast. The system log shows every step:

System log during calculation

The system log: every file, every transaction, full transparency.

Why it takes a moment: The app loads a complete Python runtime into your browser instead of sending your data to a server. That is the price of real privacy β€” and you only pay it on the first run.

Step 4: Understanding the results

For every tax year you get several documents, switchable via tabs:

Results view with year tabs and tax report

Year tabs on top, document tabs below β€” here the 2024 tax report.

DocumentContentsFor the tax office?
Tax report (steuerreport_YEAR.txt)Readable annual report: purchases, disposals with FiFo matching, holding periods, summary with exemption-limit checkβœ… yes
Tax evidence (steuernachweis_YEAR.txt)Formal, print-ready statement for your tax return or tax advisorβœ… yes
Buys / Sells (CSV)Tables for Excel/LibreOfficeoptional
⚠ noKYC internalYour private overview of noKYC holdings❌ never

Step 5: noKYC internal β€” for your eyes only

Bisq purchases, manual P2P purchases and noKYC wallets end up in a separate internal document with its own FiFo pool. It starts with an unmissable warning:

noKYC internal report with red warning banner

The red banner says it all: this file is for your own bookkeeping only.

Important: the separation serves your privacy and clean internal bookkeeping β€” gains from noKYC sales are still taxable and belong in your tax return. The document gives you FiFo matching, holding periods and gains for exactly that purpose.

Step 6: Download and file

Use the download buttons to grab each document individually or all at once. You file two things with the tax office:

The statement shows under "Quelle" (source) exactly which broker supplied which lot β€” every sale is fully traceable.

Frequently asked questions

What about purchases in CHF or USD (Swissquote, Pocket)?

The app converts them automatically using the ECB reference rate of the purchase day. The rate table (since 2010) is bundled with the app β€” no exchange-rate service is queried, not even for date or currency. If a purchase lies after the table's last date, the app stops with an explanation instead of using a stale rate.

What happens to transfers between my wallets β€” and their fees?

The transferred holdings stay tax-neutral and keep their purchase date. Since version 1.2 (October 2026) the app applies FiFo per wallet (BMF circular of 6 March 2025, para. 62): the sending wallet gives up its oldest units, and purchase date and cost travel into the receiving wallet. The app matches transfers by transaction ID, otherwise by amount and time; an outgoing transfer without a matching incoming one is reported, never silently booked as a sale β€” so load the exports of all your wallets. The network or withdrawal fee paid in bitcoin, however, is booked by the app since August 2026 as a small disposal of the fee portion (BMF circular of 6 March 2025, paras. 54, 60): FiFo matching, valuation at the daily closing price, its own section "GEBÜHREN IN BITCOIN" in the report. Usually these are cents β€” but this way the reported holdings match your wallet. The price table ships inside the tool; your browser makes no network request for it.

I gave bitcoin away or donated it β€” how do I record that?

Before exporting, put a word like "Spende", "Geschenk", "donation" or "gift" into the transaction note in the BitBox app. The app then classifies the row as a gratuitous transfer: no sale, no gain β€” but the coins leave your holdings, and the report lists purchase date and cost basis per lot, because both carry over to the recipient (Sec. 23 (1) sentence 3 EStG). Every row classified this way appears under "UNENTGELTLICHE ÜBERTRAGUNGEN" and the system log states the count β€” worth a quick check.

My broker is missing β€” what now?

Interim solution: enter the purchases in manual_buys.csv (date,btc_amount,eur_amount,note,kyc β€” for KYC brokers like Coinbase set the kyc column to ja). And in parallel send the CSV header line to kontakt@alien-investor.org β€” new parsers usually land within days.

Can I try the tool with sample data first?

Yes. In the drop zone you can download the sample data as a ZIP and drag the files in yourself β€” exactly like with your real files. Or use the one-click "Try with sample data" button. The sample data is fictional and covers every supported broker.

What does the web version cost?

Nothing. Since 2 October 2026 there is no paid access any more β€” the web version is free, just like the CLI. The one difference: the web version fetches its code from the server on every visit. If you want maximum control, use the CLI from the repo, which runs fully offline once cloned.

Ready?

β†’ Open the web version (free)
β†’ Background article: FiFo, holding period & German tax law