← Zurück zur Zentrale

Bitcoin-Steuer selbst berechnen: FiFo, Haltefrist & das Open-Source Tool fürs Finanzamt

von Alien Investor

Du hast Bitcoin in Selbstverwahrung. Gut. Du kaufst über mehrere Broker. Noch besser. Und jetzt kommt das Finanzamt und fragt, welche Coins du wann gekauft hast, welche davon steuerfrei sind und wie hoch dein steuerpflichtiger Gewinn exakt ist.

Für genau dieses Problem gibt es das BTC Steuertool — ein Open-Source-Tool, das ich selbst für meine eigene Steuererklärung entwickelt habe (CLI, Web-Version und App). Es liest deine CSV-Exporte von BitBox, 21bitcoin, Bison, Swissquote, Strike, Pocket und Bisq (weitere Börsen über einen CoinTracking- oder Blockpit-Export) und berechnet daraus automatisch, was ans Finanzamt muss und was steuerfrei bleibt.

„Don't Trust, Verify — auch beim Steuerberater. Wenn du weißt wie die Berechnung funktioniert, bist du nicht ausgeliefert."

🛸 Die Web-Version — CSV reinziehen, Report bekommen. Kostenlos.

Kein Python, kein Terminal, keine Installation: Das Steuertool gibt es auch als Web-App — kostenlos, ohne Zugangslink, ohne Account. Du ziehst deine CSV-Exporte in den Browser, die App erkennt jeden Broker automatisch am Dateiformat und berechnet alle Steuerjahre auf einmal — Steuerreport, formaler Nachweis fürs Finanzamt und Excel-Exporte zum Download.

Und jetzt der Punkt, der sie von CoinTracking & Co. unterscheidet: Deine Dateien verlassen deinen Rechner nicht. Die komplette Berechnung läuft per WebAssembly lokal in deinem Browser — es gibt keinen Upload, keinen Account, kein Tracking. Der Server liefert nur die App aus und sieht deine Daten nie. Der Rechenkern ist derselbe quelloffene Code wie im CLI-Tool — jeder kann prüfen, dass das stimmt.

→ Web-Version öffnen (fiktive Beispieldaten zum Ausprobieren liegen bei)
→ Die Anleitung — Schritt für Schritt mit Screenshots
→ Als App für Android und Linux-Desktop
→ Web-Version, App oder CLI — was passt zu dir?

1. Die Grundlage: Was das deutsche Steuerrecht sagt

Bitcoin gilt in Deutschland als privates Veräußerungsgeschäft (§ 23 EStG). Die Regeln:

Situation Steuerlich
BTC höchstens ein Jahr gehalten, dann verkauft Gewinn steuerbar — steuerpflichtig, sobald die Freigrenze erreicht ist
BTC mehr als ein Jahr gehalten, dann verkauft Gewinn steuerfrei
Übertrag zwischen eigenen Wallets/Konten Der übertragene Bestand: kein steuerpflichtiger Vorgang
Netzwerk-/Auszahlungsgebühr in Bitcoin bezahlt Veräußerung des Gebührenanteils zum Tageskurs (BMF-Schreiben v. 06.03.2025, Rn. 54, 60) — meist Cent-Beträge, das Tool rechnet sie mit
Bitcoin verschenkt oder gespendet Keine Veräußerung, aber die Coins verlassen den Bestand — Anschaffungsdaten gelten beim Empfänger weiter (§ 23 Abs. 1 Satz 3 EStG)
Gewinn unter 600 EUR/Jahr (bis 2023) Freigrenze — kein Cent Steuer
Gewinn unter 1.000 EUR/Jahr (ab 2024) Freigrenze — kein Cent Steuer

Die Methode heißt FiFo — First In, First Out. Das bedeutet: was man zuerst kauft, verkauft man auch zuerst. Klingt simpel, wird aber schnell komplex wenn du bei fünf Brokern kaufst und deine BTC zwischen mehreren Wallets wandern. Dazu kommt: Das BMF-Schreiben vom 06.03.2025 verlangt in Rn. 62 eine walletbezogene Betrachtung — FiFo gilt je Wallet, nicht über alles zusammen. Das Tool rechnet seit Oktober 2026 genau so und behandelt dabei auch jedes Börsenkonto als eigene Wallet.

Die Freigrenze ist eine Falle

Viele denken: „Ich bin unter 1.000 EUR, also irrelevant." Falsch. Die Freigrenze ist kein Freibetrag. Erreicht oder überschreitet der Gewinn die Grenze, wird der gesamte steuerpflichtige Gewinn versteuert, nicht nur der Teil darüber. Ein Gewinn von 1.001 EUR ist damit vollständig steuerpflichtig — nicht nur der eine Euro.

2. Das Problem bei Selbstverwahrung

Steuer-Apps wie CoinTracking oder Blockpit funktionieren gut für Börsen die alles aufzeichnen. Für echte Selbstverwahrer mit Hardware-Wallets entstehen dabei Probleme:

Das BTC Steuertool läuft lokal auf deinem Rechner. Keine Cloud, keine Registrierung, keine fremden Server. Deine Daten bleiben bei dir.

Ab hier: der Weg für Techniker (freies CLI-Tool)

Die folgenden Abschnitte 3–5 beschreiben das kostenlose CLI-Tool von GitHub — für alle, die gern im Terminal arbeiten.

Nutzt du die Web-Version oder die App? Dann brauchst du das alles nicht. Kein Python, kein Terminal — CSVs hineinziehen oder auswählen, fertig. Spring direkt zu Abschnitt 6: Was du dem Finanzamt gibst.

3. CLI-Tool installieren (einmalig — nur GitHub-Version)

Du brauchst Python 3.10 oder neuer. Viele Linux-Systeme bringen es mit. Prüfe die Version mit python3 --version (Windows: python --version). Auf macOS und Windows musst du es ggf. erst installieren (python.org).

Mac / Linux:

git clone https://github.com/Alien-Investor/btc-steuertool.git
cd btc-steuertool
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Windows:

git clone https://github.com/Alien-Investor/btc-steuertool.git
cd btc-steuertool
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt

Das war es. Keine Datenbank, kein Server, kein Abo.

4. Deine CSV-Dateien ablegen (CLI)

Exportiere deine CSV-Dateien aus den jeweiligen Apps und lege sie in die entsprechenden Ordner. Die Ordner bitbox/ und Broker/ existieren nach dem Klonen noch nicht — sie sind in .gitignore eingetragen damit deine Finanzdaten nie versehentlich auf GitHub landen. Du musst sie einmalig selbst anlegen:

Mac / Linux:

mkdir -p bitbox Broker

Windows:

mkdir bitbox
mkdir Broker
Quelle Ordner Dateiname
BitBox (Hardware-Wallet) bitbox/ beliebig, alle *.csv werden geladen
21bitcoin Broker/ muss mit 21bitcoin beginnen
Bison Broker/ Bison-CSV-Gesamt.csv
Swissquote Broker/ Swissquote_CSV-Gesamt.csv
Strike Broker/ strike_2024.csv, strike_2025.csv usw.
Pocket Broker/ muss mit Pocket beginnen
Bisq (noKYC) Broker/ muss mit bisq beginnen: Bisq speichert als tradeHistory.csv, umbenennen z. B. in bisq.csv. Export bei deutscher oder englischer Bisq-Oberfläche (seit v1.3)
CoinTracking / Blockpit (Sammelimport) Broker/ muss mit cointracking, blockpit oder sammelimport beginnen; mit nokyc im Dateinamen gilt alles darin als noKYC. Jedes Konto in der Datei wird eine eigene Wallet, der Kontoname erscheint als Quelle im Steuernachweis – also neutral benennen. Format aus der Dokumentation abgeleitet, noch nicht an echten Exporten bestätigt – der Report warnt, bitte Beträge, Gebühren und Zeitzone prüfen
noKYC-Käufe ohne CSV (Robosats, P2P, Bargeld) Projektordner manual_buys.csv — optional, selbst anlegen
Private Verkäufe (P2P ohne Broker) Projektordner manual_sales.csv — optional, selbst anlegen

Deine Daten bleiben lokal

Die Ordner bitbox/ und Broker/ sowie die Dateien manual_buys.csv und manual_sales.csv sind in der .gitignore eingetragen — sie werden niemals versehentlich in Git eingecheckt oder online gestellt. Deine Finanzdaten bleiben auf deinem Rechner.

noKYC-Käufe und private Verkäufe

Wer BTC ohne KYC-Broker kauft — über Robosats, HodlHodl, direkt von Person zu Person oder gegen Bargeld — hat keine Broker-CSV (Bisq-Exporte liest das Tool direkt, siehe Tabelle oben). Dafür gibt es manual_buys.csv: eine einfache Textdatei im Projektordner, in die du jeden Kauf mit Datum, BTC-Menge und EUR-Betrag einträgst.

date,btc_amount,eur_amount,note,kyc
2024-07-22,0.00500000,280.00,Robosats Trade,
2024-11-05,0.00250000,148.50,P2P Bargeld,
2024-12-01,0.00200000,190.00,Coinbase Kauf (Broker ohne Parser),ja

Die Spalte kyc ist optional. Leer bedeutet noKYC (Standard). Mit ja markierst du einen Kauf bei einem Broker, für den es noch keinen eigenen Import gibt: Er zählt dann zum KYC-Bestand und erscheint im Report fürs Finanzamt.

Gleiches Prinzip für private Verkäufe ohne Broker: manual_sales.csv mit denselben ersten vier Spalten. Die optionale fünfte Spalte heißt dort no_kyc und wirkt umgekehrt: ja = Verkauf aus dem noKYC-Bestand, nur im internen Report. Leer = normaler Verkauf, erscheint im Report fürs Finanzamt. Das Tool liest beide Dateien automatisch ein und verarbeitet sie wie jeden anderen Kauf oder Verkauf.

Zur Rechtslage: Ein Steuerreport mit korrekten Anschaffungskosten reicht in der Regel. Unaufgefordert musst du keine Wallet-Adressen liefern. Im Einzelfall kann das Finanzamt aber Adressen, Transaktions-Hashes und Bestände anfordern (BMF-Schreiben vom 06.03.2025, Rn. 101, 104). Bewahre deine Belege deshalb auf, auch für P2P-Käufe.

⚡ Update Oktober 2026 (v1.3): Härtung der Parser, Bisq auf Englisch, Sammelimport

Ein Audit der CSV-Parser hat einen stillen Fehler gefunden: Eine umbenannte Spalte oder eine Byte-Order-Markierung am Dateianfang (wie Excel sie beim Speichern als „CSV UTF-8“ setzt) machte eine Spalte unbemerkt „leer“ – ganze Pocket-, Bison- oder Swissquote-Dateien fielen ohne Meldung aus der Rechnung, Strike-Käufe standen mit 0 BTC im Report. Seit Version 1.3 wird eine solche Markierung überlesen, und das Tool prüft jede Datei vor dem Lesen auf ihre Pflichtspalten: Fehlt eine, bricht es mit Datei, Zeile und Spalte ab, statt still weiterzurechnen.

Dein Broker fehlt? Die Kopfzeile des Exports mit einer Zeile Fantasiewerten an kontakt@alien-investor.org – ein echter Export ist das Freigabe-Kriterium für jeden neuen Parser.

⚡ Update Oktober 2026: FiFo walletbezogen — so, wie das BMF-Schreiben es vorgibt

Das BMF-Schreiben vom 06.03.2025 sagt in Rn. 62: „Es gilt eine walletbezogene Betrachtung.“ FiFo läuft also nicht über alle Bestände zusammen, sondern je Wallet. Bisher rechnete das Tool einen gemeinsamen Bestand über alle Quellen. Seit Version 1.2 ist jede BitBox-Wallet ein eigener FiFo-Bestand, und jedes Broker-Konto behandelt das Tool ebenfalls als eigene Wallet (Rn. 20, 90 nennen die Handelsplattform als eigene Einheit) — als einzige Methode der offiziellen Dokumente, ohne Umschalter.

Wie Anschaffungsdaten beim Übertrag genau wandern, regelt das BMF-Schreiben nicht ausdrücklich. Das Tool wählt die naheliegende Auslegung — die abgebende Wallet gibt nach FiFo ab, Anschaffungsdatum und -kosten bleiben erhalten — und legt sie im Nachweis offen. Keine Steuerberatung.

⚡ Update August 2026: Gebühren in Bitcoin und Schenkungen werden mitgerechnet

Bisher galt im Tool: Überträge zwischen eigenen Wallets sind steuerneutral — Punkt. Das stimmt für den übertragenen Bestand, aber nicht für die Netzwerkgebühr, die du dabei in Bitcoin bezahlst. Die gibst du im Tausch für eine Dienstleistung her, und das ist nach der Systematik des BMF-Schreibens vom 06.03.2025 (Rn. 33, 54, 60) eine kleine Veräußerung des Gebührenanteils. Das Tool bucht sie jetzt — und damit stimmt der ausgewiesene Bestand endlich mit deiner Wallet überein.

Warum kein Steuerberater-Gutachten dazu? Weil es keine ausdrückliche Verwaltungsaussage und kein Urteil gibt — nur die Systematik des BMF-Schreibens und die Praxis der großen Krypto-Steuertools, die dasselbe tun. Das Tool wählt die nachvollziehbare, dokumentierte Methode und legt sie offen. Das ersetzt keine Beratung.

⚡ Update Juni 2026: Bisq-Direktimport + strikte noKYC-Trennung

Das Tool unterstützt jetzt den direkten Import der Bisq-Trade-History-CSV. Einfach den Export aus Bisq Classic ("Portfolio → Verlauf → Als CSV exportieren"; seit v1.3 mit deutscher oder englischer Bisq-Oberfläche) als bisq.csv in den Broker/-Ordner legen — das Tool erkennt alle abgeschlossenen Käufe automatisch.

Außerdem: Die Haltefrist wird jetzt kalendergenau berechnet (Jahrestag statt starrer 365-Tage-Zählung) — korrekt auch über Schaltjahre.

Für Robosats, HodlHodl und andere P2P-Käufe ohne CSV-Export bleibt manual_buys.csv der richtige Weg — ebenfalls mit noKYC-Trennung.

Bisq ist aktuell die einzige noKYC-Plattform mit dediziertem Parser. Das Tool steht unter MIT-Lizenz — wer einen Importer für Robosats, HodlHodl oder andere Plattformen beisteuern möchte, ist herzlich willkommen.

5. Der erste Report (CLI)

Einen Report für ein bestimmtes Jahr ausgeben:

.venv/bin/python src/main.py --year 2024

Alle Jahre auf einmal:

.venv/bin/python src/main.py --all

Mit formalem Nachweis für den Steuerberater oder das Finanzamt:

.venv/bin/python src/main.py --year 2024 --csv --nachweis

Das Ergebnis landet in reports/: ein lesbarer Steuerreport, ein druckfertiger formaler Nachweis und optional CSV-Tabellen für Excel.

6. Was du dem Finanzamt gibst (Web, App & CLI)

Der Nachweis allein reicht nicht. Das Finanzamt will wissen, dass die Kaufdaten echt sind. Deshalb immer zwei Teile einreichen:

Das Tool zeigt im Nachweis unter "Quelle" genau welcher Broker welches Lot geliefert hat — damit kannst du jeden einzelnen Verkauf lückenlos zurückverfolgen.

7. Was das Tool nicht ist

Kein Steuerberater-Ersatz. Wenn du steuerpflichtige Gewinne hast, lass die Ergebnisse prüfen — besonders im ersten Jahr. Das Tool rechnet korrekt nach FiFo, aber du bist verantwortlich für die Richtigkeit deiner Eingaben.

Was es ist: ein Werkzeug das dich informiert und vorbereitet — statt dich blind auf eine Cloud-App vertrauen zu lassen die du nicht kontrollierst.

Als App: Android und Linux-Desktop

Seit Version 1.0 (2. Oktober 2026) gibt es das Steuertool auch als App für Android (GrapheneOS) und als Flatpak für den Linux-Desktop — kostenlos und quelloffen wie alles andere. Oberfläche und Rechenkern sind dieselben wie in der Web-Version, mit einem Unterschied: Die App lädt nach der Installation nichts mehr nach. Pyodide, der Rechenkern, die EZB-Wechselkurse und die BTC-Tagesschlusskurse sind eingebaut. Die Reports sind byte-gleich zu denen des CLI-Tools.

Android: so bekommst du sie

Bewusst nicht im Google Play Store, sondern über signierte Releases von der eigenen Download-Adresse api.alien-investor.org/downloads/steuertool/. Am einfachsten über Obtainium, das jedes Update automatisch meldet (Einrichtung im Blatt unten), oder aus dem Zap Store, dem App-Store auf Nostr. Ohne beides: die APK von der Download-Seite laden und installieren. Jedes Release liegt zusätzlich als Spiegel auf GitHub.

Obtainium einrichten (Werte zum Kopieren)

Auf dem Handy mit installiertem Obtainium geht es mit einem Tipp, alle Einstellungen sind dann vorbelegt und Obtainium fragt vor dem Hinzufügen nach:
In Obtainium öffnen

Oder von Hand, in Obtainium „App hinzufügen“:

  1. „Quell-URL der App“ https://api.alien-investor.org/downloads/steuertool/
  2. Unter „Zusatzoptionen für HTML“: „Versionsextraktion per RegEx“ btc-steuertool-([0-9]+(\.[0-9]+)+)\.apk$
  3. „Zu verwendende Gruppe abgleichen“ $1
  4. „Expected signing certificate hashes“ (so heißt es auch in der deutschen Obtainium-Fassung) 26:C5:E0:94:A8:B7:65:0C:A6:65:01:4D:0C:3A:8B:A6:82:B1:7C:05:F5:3C:6C:DE:F0:55:D0:7C:E9:84:BF:0B
  5. Mit dem „+“ hinzufügen, dann installieren. Updates meldet Obtainium automatisch.

Warum die RegEx? Auf einer Download-Seite liest Obtainium die Versionsnummer nur mit ihr aus dem Dateinamen. Ohne sie kennt es nur eine Ersatz-Kennung und kann die installierte Version nicht vergleichen. Der Zertifikats-Hash ist eine harte Sperre: Eine APK mit anderem Signaturschlüssel installiert Obtainium gar nicht.

Signatur-Fingerprint (SHA-256) zum Prüfen der Echtheit mit AppVerifier, über alle Versionen gleich:

26:C5:E0:94:A8:B7:65:0C:A6:65:01:4D:0C:3A:8B:A6:82:B1:7C:05:F5:3C:6C:DE:F0:55:D0:7C:E9:84:BF:0B apksigner: 26c5e094a8b7650ca665014d0c3a8ba682b17c05f53c6cdef055d07ce984bf0b

Für den Linux-Desktop

Dieselbe Oberfläche, verpackt mit Electron als Flatpak (x86_64). Die Datei liegt im GitHub-Release, zusammen mit SHA256SUMS und der Signatur SHA256SUMS.asc. Dieselben drei Dateien liegen auch auf der eigenen Download-Adresse. Nicht auf Flathub, kein automatisches Update. Schritt für Schritt: Anleitung Flatpak (für alle Desktop-Apps).

Voraussetzung: Flatpak mit dem Flathub-Remote (für die Laufzeit org.freedesktop.Platform 25.08, die Flatpak beim Installieren nachlädt):

flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

1. Drei Dateien laden: btc-steuertool-1.3-linux-x86_64.flatpak, SHA256SUMS, SHA256SUMS.asc.

2. Signatur prüfen. Die Prüfsumme ist mit dem GPG-Release-Schlüssel von Alien Investor signiert — derselbe Schlüssel wie bei Alien Pass, Sachwert-Tresor und Alien Notes: alien-investor-release-key.asc. Den Fingerabdruck über einen zweiten Weg vergleichen:

100F 9E25 BFAE A807 DBC3 57D7 50C0 D785 83BF CB81

gpg --import alien-investor-release-key.asc
gpg --verify SHA256SUMS.asc SHA256SUMS      # „Korrekte Signatur von "Alien Investor (Release-Signatur) …"“
sha256sum -c SHA256SUMS                     # „…flatpak: OK“

3. Installieren und starten:

flatpak install --user btc-steuertool-1.3-linux-x86_64.flatpak
flatpak run org.alieninvestor.steuertool

Update: Eine neue Bündel-Datei lässt sich (Flatpak 1.14) nicht über die installierte legen. Neue Version laden und prüfen, dann flatpak uninstall --user org.alieninvestor.steuertool und neu installieren. Die App speichert keine Steuerdaten, nur Sprache und Darstellung.

Selbst prüfen, dass die App kein Netz hat:

flatpak info --user --show-permissions org.alieninvestor.steuertool

Erwartet genau:

[Context]
shared=ipc;
sockets=wayland;fallback-x11;
devices=dri;

Kein network, kein filesystem.

Grenzen, ehrlich benannt

Web-Version, App oder CLI — was passt zu dir?

Die Web-Version ist kostenlos: kein Zugangslink, kein Account, keine Bezahlschranke. Öffne api.alien-investor.org/steuertool/, zieh deine CSV-Exporte hinein, fertig. Zum Ausprobieren liegen fiktive Beispieldaten bei. Seit dem 2. Oktober 2026 gibt es keinen Bezahlzugang mehr — das Tool ist in jeder Form frei.

Offen gesagt: Die Web-Version lädt ihren Code bei jedem Aufruf von meinem Server. Du musst mir also vertrauen, dass dort genau der veröffentlichte Code liegt — prüfen kannst du das, bequem ist es nicht. Wer maximale Kontrolle will, nimmt das CLI aus dem Repo: einmal geklont läuft es vollständig offline, mit gebündelten Kurstabellen und ohne eine einzige Netzverbindung. Dazwischen liegen die Apps für Android und den Linux-Desktop: einmal installiert und geprüft (Signatur-Fingerprint bzw. GPG-signierte Prüfsumme), danach ohne Netz. Alle drei rechnen mit demselben Code.

⚡ Web-Version öffnen 📖 Anleitung

Was der Server beim Aufruf sieht — und was nicht: Datenschutzhinweise zur App.

Klartext: Das Tool ist eine reine Berechnungshilfe — keine Steuerberatung. Mein Support hilft dir bei Technik und Dateiformaten (fehlt dein Broker? Schick mir die CSV-Kopfzeile!), beantwortet aber keine individuellen Steuerfragen — das darf nur ein Steuerberater. Für die Richtigkeit deiner Steuererklärung bist du selbst verantwortlich.

Open Source auf GitHub

Der vollständige Code ist öffentlich, kostenlos und quelloffen. Du kannst nachvollziehen, wie jede Zeile der Berechnung funktioniert. Fiktive Beispieldaten für alle unterstützten Broker sind ebenfalls dabei — so kannst du das Tool testen bevor du deine echten Daten einliest.

github.com/Alien-Investor/btc-steuertool

Tools für echte Eigentümer

Tools, die ich selbst nutze – für Bitcoin-Selbstverwahrung und digitale Souveränität:

Hinweis: Bei einigen Links handelt es sich um Affiliate-Links. Wenn du sie nutzt, unterstützt du meine Arbeit, ohne dass es dich mehr kostet. Danke!


Energie aufladen (Spenden)

Treibstoff für das Mutterschiff senden

Danke für deine Unterstützung – für freie Inhalte, Finanzsouveränität und den außerirdischen Widerstand!