BTC Steuertool
org.alieninvestor.steuertool
Alien Investor alien-investor@alien-investor.org Bitcoin tax reports for Germany (FiFo, § 23 EStG) — fully offline, no internet permission, no account.
BTC Steuertool turns CSV exports from your BitBox wallets and brokers into annual tax reports for the German tax office (private sales under § 23 EStG). Everything is calculated on the device: no upload, no account, no tracking. The app has no INTERNET permission; the only permission in its manifest is the AndroidX-generated signature permission of the app itself, which grants nothing. Features: - FiFo method per wallet (German Federal Ministry of Finance letter of 06.03.2025, para. 62); the app treats every exchange account as a wallet of its own. On transfers between your own wallets, purchase date and cost travel along (the letter does not spell this out; the evidence document discloses the reading). One-year holding period counted by calendar date (§§ 187, 188 BGB), tax-free and taxable per lot - Transfers are matched automatically (transaction ID, otherwise amount and time); unmatched outgoing transfers are reported, never silently booked as sales. Internal wallet check report with real wallet names, never part of the documents for the tax office - Exemption limit applied automatically (600 EUR up to 2023, 1,000 EUR from 2024) - Supported sources: BitBox wallets, 21bitcoin, Bison, Swissquote, Strike, Pocket, Bisq 1 (German or English interface), plus manual buys/sells as CSV. Other exchanges via a CoinTracking or Blockpit export (every account in it becomes a wallet of its own; these formats are derived from the documentation and not yet confirmed against real exports, the report says so) - Brokers are detected from the file contents; ZIP files are unpacked; files the app cannot recognise block the calculation instead of silently missing from the report. Every file is checked for its required columns before reading: a renamed column stops the run with file, line and column instead of silently dropping data; a byte-order mark (e.g. after saving in Excel) is read correctly - Network fees paid in bitcoin are treated as a disposal of the fee amount at the daily closing price; gifts and donations (marked in the BitBox note) leave your holdings without counting as a sale - noKYC purchases (Bisq, manual buys not marked as KYC, noKYC wallets) are kept strictly apart: separate FiFo pool and a separate internal report, never part of the documents for the tax office - Output: tax report, formal tax evidence document, buys/sells as CSV — saved through the Android save dialog - ECB exchange rates (USD/CHF) and BTC daily closing prices are bundled; nothing is downloaded - Same calculation core as the open-source command-line tool and the web version (Python via Pyodide), reports byte-identical - Screenshots blocked (FLAG_SECURE), no backup of app data, offline in-app guide in German and English - Reports are in German (they are meant for the German tax office); the interface is German / English No tax advice: the app is a calculation aid, responsibility for the tax return stays with you. Open source (MIT). Signing certificate SHA-256 (verify with AppVerifier), identical for every version: 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 (no separators): 26c5e094a8b7650ca665014d0c3a8ba682b17c05f53c6cdef055d07ce984bf0b
First release: Oct 2, 2026, 4 total releases.
Most recent release: Oct 3, 2026.
Appears in 1 app stack.
0 sats / 0 zaps received in the past year.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Oct 3, 2026 1.3- Bisq: auch der **englische Export** wird gelesen (Spaltenköpfe „Trade ID, Date/Time, …“, Werte „Buy BTC“/„Completed“); die Zeitstempel der belegten englischen Länder-Einstellungen (GB, US, CA, AU, IN, NZ, DK/FI u. a.) werden erkannt, eine unbekannte Form bricht mit Meldung ab, statt falsch gelesen zu werden. Abgeleitet aus dem Bisq-Quellcode und gegen eine veröffentlichte Beispieldatei eines echten Exports geprüft, noch nicht gegen einen eigenen — bitte Ergebnis prüfen und Abweichungen melden. - Bisq: Trades auf Altcoin-Märkten (XMR/BTC, BSQ/BTC …) werden als Veräußerung bzw. Anschaffung von BTC gemeldet statt nur stumm gezählt; eine Datei, die nur Verkäufe enthält, bekommt keine zweite Sammelwarnung mehr; eine BOM in der Kopfzeile (Excel) stört nicht mehr. - **Sammelimport CoinTracking/Blockpit (neu, unbestätigt):** CSV-Exporte aus CoinTracking (Importformat, Handelsliste, Vollansicht) und Blockpit (aktuelles und älteres Format) werden gelesen; jedes Konto darin ist eine eigene Wallet, Ein-/Auszahlungen werden über die Transaktions-ID mit den BitBox-Exporten verbunden. Die Formate stammen aus der Dokumentation und veröffentlichten Beispieldateien, nicht aus einem echten Export: Der Steuerreport zeigt je Datei eine Warnung „Format noch nicht bestätigt“.
More…
Tausch BTC gegen andere Kryptowährungen, Zuflüsse (Staking, Mining …) und Bezahlungen ohne EUR-Wert im Export werden nicht bewertet, sondern laut gemeldet. Konten mit noKYC-Plattformen im Namen (Bisq, RoboSats …) bleiben intern. - Oberfläche/App: die CSV-Dateien (Käufe, Verkäufe) sind jetzt byte-gleich zur Kommandozeile (Zeilenenden CRLF); bisher LF. Der GUI-Test vergleicht die CSV-Dateien seitdem ohne Angleichung der Zeilenenden. - **Parser-Audit (alle Formate):** Jede Datei wird jetzt vor dem Lesen auf ihre Pflichtspalten geprüft. Bisher machte eine umbenannte Spalte oder eine UTF-8-Signatur (BOM, z. B. nach Speichern in Excel als „CSV UTF-8“) aus einer Spalte still „leer“: Pocket-, Bison- und Swissquote-Dateien gingen komplett verloren, Strike-Käufe standen mit 0 BTC im Report, Gebühren wurden 0 — ohne jede Meldung. Jetzt wird eine BOM überlesen, und eine fehlende oder umbenannte Pflichtspalte bricht den Lauf mit Datei, Zeile und Spalte ab. Ebenso bei Zeilen mit falscher Feldanzahl, einem nicht geschlossenen Anführungszeichen (verschluckte bisher den Dateirest), Zeitstempeln ohne Zeitzone, mehrdeutigen Zahlen („2,500“), Nicht-Zahlen, negativen Übertragsmengen und leerer Währungsspalte (Swissquote/Pocket buchten einen Fremdwährungsbetrag sonst als EUR). Swissquote-Dateien, die als UTF-8 gespeichert wurden, werden gelesen. Eine Datei mit Zeilen, aber ohne eine einzige Transaktion wird gemeldet. `manual_sales.csv` und Co. werden unabhängig von Groß-/Kleinschreibung gefunden, fremde CSVs im Hauptordner gemeldet. Warnungen sind auf 1.000 je Lauf gedeckelt (vorher war ihre Zahl unbegrenzt), das Log der App auf 5.000 Zeilen, ZIP-Inhalte auf 64 MB je Datei / 256 MB gesamt. - Oct 2, 2026 1.2- **FiFo jetzt walletbezogen** (BMF-Schreiben vom 06.03.2025, Rn. 61 f.): Jede Wallet ist ein eigener Bestand, jedes Börsenkonto behandelt das Tool als eigene Wallet. Bei Überträgen zwischen eigenen Wallets gibt die abgebende Wallet ihre ältesten Einheiten ab; Anschaffungsdatum und -kosten wandern mit in die empfangende Wallet. Bisher rechnete das Tool einen gemeinsamen Bestand über alle Quellen. Ergebnisse können sich dadurch ändern (andere Zuordnung von Verkauf zu Kauf, andere Haltefrist); die Reports erklären die Methode selbst. - Überträge werden automatisch zugeordnet (Transaktions-ID, sonst Betrag und Zeit innerhalb von 48 Stunden). Sonderfälle wie Sammelauszahlungen über die optionale Datei `transfer_zuordnung.csv`. Abgänge ohne erkennbaren Eingang gelten als Übertrag in eine nicht eingelesene eigene Wallet und werden gemeldet, nie still als Verkauf gebucht. - Neue optionale Spalte `wallet` in `manual_buys.csv` und `manual_sales.csv`. - Steuerreport und Steuernachweis: Abschnitt „Umbuchungen zwischen eigenen Wallets“; der Steuerreport zeigt zusätzlich den Bestand je Wallet
More…
zum Jahresende. BitBox-Wallets erscheinen dort nur als „BitBox-Wallet“ (bei mehreren „BitBox-Wallet 1“, „BitBox-Wallet 2“ …), nie mit Dateinamen. - Neue interne Datei `wallet_abgleich_intern_JAHR.txt` (im ZIP unter INTERN-NICHT-WEITERGEBEN): echte Wallet-Namen, alle Zuordnungen, offene Punkte und der Vergleich zur bisherigen gemeinsamen Rechnung. - Strike: die in Bitcoin gezahlte Netzwerkgebühr (`Fee BTC`) wird jetzt als Veräußerung des Gebührenanteils erfasst; bisher ging sie in der Auszahlungsmenge unter. - Oberfläche: Abzeichen „BETA“ entfernt. Hilfetext zum Bisq-Export präzisiert (deutsche Bisq-Oberfläche). - Internes Audit der neuen Rechenlogik (Rechenlogik und Datenschutz) vor dem Release, alle Funde behoben; neuer Mengenbilanz-Test. - Oct 2, 2026 1.1- Spenden-Blitz unten in der App („Energie aufladen · Spenden“) wie in den anderen Alien-Apps. Er öffnet die Spendenseite auf alien-investor.org im Browser des Systems; die App selbst bleibt ohne Netz.
- Oct 2, 2026 1.0- Erste Veröffentlichung als App: **Linux-Desktop (Flatpak)** und **Android (APK)**, frei und quelloffen. - Derselbe Rechenkern wie CLI und Web-Version (FiFo nach § 23 EStG, Jahresfrist, Freigrenze, Gebühren in Bitcoin als Veräußerung des Gebührenanteils, Schenkungen/Spenden als Bestandsabgang), Reports byte-gleich zum CLI. - Ohne Netz: Rechenkern (Pyodide), EZB-Wechselkurse und BTC-Tagesschlusskurse sind eingebaut. Das Flatpak hat kein Netz- und kein Dateisystem-Recht, die Android-App hat keine Internet-Berechtigung (im Manifest steht nur die von AndroidX erzeugte app-eigene Signatur-Berechtigung, die nichts freigibt), Screenshots gesperrt. - CSVs und ZIPs über den Datei-Dialog, Reports über den Speichern-Dialog; Handbuch in der App („?“, Deutsch/Englisch). - Vor dem Release internes Security-Audit (Funde behoben, siehe Repo-Historie).