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 CLI-Tool das ich selbst für meine eigene Steuererklärung entwickelt habe. Es liest deine CSV-Exporte von BitBox, 21bitcoin, Bison, Swissquote, Strike und Pocket 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."
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 weniger als 365 Tage gehalten, dann verkauft | Gewinn steuerpflichtig |
| BTC mehr als 365 Tage gehalten, dann verkauft | Gewinn steuerfrei |
| Übertrag zwischen eigenen Wallets/Konten | Kein steuerpflichtiger Vorgang |
| 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.
⚠️ Die Freigrenze ist eine Falle
Viele denken: „Ich bin unter 1.000 EUR, also irrelevant." Falsch. Die Freigrenze ist kein Freibetrag. Bei Überschreitung 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:
- Du überträgst BTC von deiner BitBox zur Börse für einen Verkauf — das sieht wie ein Kauf aus.
- Du hast mehrere Wallets — die Kostenbasis wandert mit.
- Swissquote kauft in USD — der historische Wechselkurs muss korrekt eingerechnet werden.
- Du gibst deine kompletten Finanzdaten in eine Cloud-App ein — das widerspricht dem ganzen Sinn von Selbstverwahrung.
Das BTC Steuertool läuft lokal auf deinem Rechner. Keine Cloud, keine Registrierung, keine fremden Server. Deine Daten bleiben bei dir.
3. Installation (einmalig)
Du brauchst Python 3 — auf Linux und macOS ist das bereits installiert. Auf 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
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. |
Broker/ |
muss mit Pocket beginnen |
|
| noKYC-Käufe (Bisq, 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 Bisq, Robosats, HodlHodl oder direkt von Person zu Person —
hat keine Broker-CSV. 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 2024-03-10,0.01000000,550.00,Bisq P2P Kauf 2024-07-22,0.00500000,280.00,Robosats Trade
Gleiches Prinzip für private Verkäufe ohne Broker: manual_sales.csv im gleichen Format.
Das Tool liest beide Dateien automatisch ein und verarbeitet sie wie jeden anderen Kauf oder Verkauf.
Zur Rechtslage: Du bist nicht verpflichtet, deinen vollständigen Wallet-Fingerprint offenzulegen. Solange die Anschaffungskosten korrekt angegeben sind und steuerpflichtige Gewinne vollständig gemeldet werden, ist das steuerrechtlich unbedenklich. Das Finanzamt hat keinen Anspruch auf deine komplette UTXO-Historie.
5. Der erste Report
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
Der Nachweis allein reicht nicht. Das Finanzamt will wissen, dass die Kaufdaten echt sind. Deshalb immer zwei Teile einreichen:
- Den Steuernachweis — was das Tool erzeugt (
steuernachweis_JAHR.txt). - Die Original-CSVs der Broker — als Beleg dass die Käufe wirklich stattgefunden haben.
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.
📦 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.