"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)
Just your CSV exports. Every broker and the BitBox app offer an export β downloading once a year is enough:
| Source | Where to export |
|---|---|
| BitBox | BitBoxApp β Account info β Export transaction history (one CSV per wallet) |
| 21bitcoin | App β Activity β Export report |
| Bison | App β Account β Reports β Transaction history (CSV arrives via email) |
| Swissquote | Web β Account β Transactions β CSV export |
| Strike | App/Web β Activity β Generate report |
| Web β History β Download CSV | |
| Bisq | Bisq 1 (the classic desktop app, not Bisq 2/Bisq Easy) with the interface set to English or German: Portfolio β History β Export to CSV |
| CoinTracking / Blockpit | CoinTracking β "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.
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.
The start view: simply drag your CSV files into the dashed zone.
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:
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.
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.
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:
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.
For every tax year you get several documents, switchable via tabs:
Year tabs on top, document tabs below β here the 2024 tax report.
| Document | Contents | For 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/LibreOffice | optional |
| β noKYC internal | Your private overview of noKYC holdings | β never |
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:
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.
Use the download buttons to grab each document individually or all at once. You file two things with the tax office:
steuernachweis_YEAR.txt), andThe statement shows under "Quelle" (source) exactly which broker supplied which lot β every sale is fully traceable.
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.
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.
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.
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.
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.
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.