Alle Projekte

lazy-koins

Krypto-Steuerunterlagen für die Schweiz: Exporte und Wallets rein, Steuerwert, Ertrag und Auszug raus. Läuft auf lazy-koins.hello-eme.ch, noch in Entwicklung.

KI-generiert
  • Tools
  • Steuern
  • Crypto

lazy-koins läuft auf lazy-koins.hello-eme.ch und ist noch in Entwicklung. Man kann sich anmelden und es mit den eigenen Exporten ausprobieren. Bis zur ersten stabilen Version ändert sich aber noch einiges, und Fehler sind möglich. Die Zahlen also immer selbst prüfen.

Warum ich das gebaut habe

  • Spass an der Sache: Ich plane, baue und teste gern. Ein Projekt, das von der Idee bis zur laufenden App reicht, ist für mich die beste Art, Neues auszuprobieren.
  • Ideen mit AI umsetzen: Mit AI lassen sich Ideen schnell umsetzen und gleich mit echten Daten validieren. Aus «wäre es nicht praktisch, wenn …» wird innert kurzer Zeit eine Funktion, die man testen kann, und das macht einfach Spass.
  • Eine einfache Aufstellung reicht: In der Schweiz sind Kapitalgewinne auf dem Privatvermögen steuerfrei. Für die Steuererklärung braucht es nur eine Aufstellung der Coins per 31.12. mit ihrem Steuerwert und den Ertrag des Jahres. Die gängigen Tools rechnen viel mehr aus und kosten dafür jedes Jahr ein Abo.

Was ist lazy-koins?

lazy-koins macht aus den Exporten von Krypto-Börsen und aus Wallet-Adressen die Unterlagen für ein Steuerjahr: das Vermögen per 31.12. mit dem Steuerwert jeder Position und den Ertrag des Jahres aus Zinsen, Staking, Airdrops und Launchpools, bewertet am Tag, an dem er eingegangen ist. Daraus entstehen Auszüge und Steuerdokumente als PDF, Excel und CSV, bis hin zum E-Steuerauszug für die kantonale Steuersoftware. Der erste Fokus ist die Schweiz, Privatvermögen. Die App gibt es auf Deutsch und Englisch.

Ablauf in fünf Schritten: Daten holen (Exporte und Wallets), Mapping, Berechnung, Prüfen, Auszug als PDF, Excel oder per Mail

Dashboard

Die Startseite zeigt das Krypto-Vermögen über alle Projekte: den Verlauf über einen frei wählbaren Zeitraum, Ein- und Auszahlungen, Ertrag, Kosten und Handelsgebühren, die Verteilung nach Asset und die Bestände. Jede Kennzahl lässt sich anklicken und zeigt die Buchungen dahinter. Ein Filter zeigt die Bestände, die man sich noch ansehen sollte.

Dashboard mit Seitenleiste: Gesamtwert per 31.12.2025 mit Jahresverlauf, Kennzahlen und Verteilung nach Asset
Das Dashboard über alle Projekte, gerechnet aus denselben Daten und Kursen wie die Steuer.
Dashboard: Verteilung nach Asset und Tabelle der Bestände mit Menge, Kurs, Marktwert und kleinem Kursverlauf
Bestände per Stichtag, aufklappbar nach Plattform und Konto.

Dateien und Mappings

Exporte werden als CSV, Excel oder PDF hochgeladen und bleiben unverändert. Eine Datei gehört dem Benutzer, nicht einem Projekt. Jedes Steuerjahr wählt nur aus, welche Dateien es verwendet, und einzelne lassen sich für ein Projekt deaktivieren. Statt eines eigenen Parsers pro Börse beschreibt ein kleines JSON, wie ein Export zu lesen ist. Für zehn Plattformen gibt es fertige Standard-Mappings, eigene lassen sich schreiben oder von einer KI entwerfen. In der Mapping-Bibliothek teilen Benutzer ihre Mappings und bewerten sie. Die Desktop-App kann die Bibliothek eines Web-Servers mitlesen.

Seite Dateien: alle Dateien unabhängig von Projekten, nach Plattform gruppiert, mit Status, Zeitraum und Verwendung
Dateien gehören dir, nicht einem Projekt. Ein Projekt wählt nur aus, welche es verwendet.
Mapping-Bibliothek: Suche, Filter nach Plattform und ein veröffentlichtes Kraken-Mapping mit Bewertung und Anzahl Übernahmen
In der Bibliothek teilen Benutzer ihre Mappings und bewerten sie.

Pro Projekt merkt lazy-koins, wenn ein Export zu früh aufhört, zu spät beginnt oder ein Kontoauszug per 31.12. fehlt, und listet das unter «Hinweise» auf.

Projekt-Tab Hinweise: Lücken am Anfang oder Ende von Exporten und fehlende Kontoauszüge, gruppiert nach Plattform
Hinweise zeigen, welche Dateien oder Zeiträume vermutlich fehlen.

Transaktionen: eine Wahrheit pro Buchung

Alle Buchungen aus allen Dateien und Wallets stehen auf einer Seite, mit der Information, wie sie in die Steuerrechnung eingehen: als Ertrag, als Vermögen, als Übertrag zwischen eigenen Konten, als Spam oder noch nicht klassiert. Eine Buchung umklassieren, ausblenden oder zwei Seiten eines Transfers verknüpfen gilt in jedem Projekt, das sie verwendet, immer mit Begründung und rückgängig machbar. Die Originaldatei bleibt unverändert. Unbekannte Buchungen kann eine KI analysieren und Vorschläge machen.

Seite Transaktionen: alle Buchungen aus Dateien und Wallets mit Art, Wert, Quelle und Status, Filtern und AI-Analyse
Transaktionen: eine Wahrheit pro Buchung. Änderungen gelten in jedem Projekt, mit Begründung und rückgängig machbar.

Wallets und Kurse

Wallets werden mit ihrer öffentlichen Adresse erfasst und direkt abgefragt: Bitcoin (auch xpub), Ethereum und weitere EVM-Netzwerke, Solana, dazu die Rewards von Cardano und Polkadot. Seed-Phrasen und private Schlüssel lehnt lazy-koins ab, bevor irgendetwas gespeichert wird.

Projekt-Tab Wallets: eine Bitcoin- und eine Ethereum-Adresse mit Status je Netzwerk, letztem Abruf und Anzahl Bewegungen
Wallets: öffentliche Adressen werden je Netzwerk abgerufen.

Die Kurse per 31.12. kommen aus der Kursliste der ESTV, die lazy-koins automatisch lädt. Für alles andere wählt man die Kursquellen und ihre Reihenfolge selbst, etwa CoinGecko, CoinMarketCap, DefiLlama oder die Tageskurse von Börsen, dazu die Devisenkurse der EZB. Jeder Kurs wird mit seiner Quelle gespeichert und lässt sich überschreiben. Gerechnet wird mit exakten Dezimalzahlen statt Gleitkomma, und jede Zahl lässt sich bis zur Datei und Zeile zurückverfolgen.

Projekt-Tab Kurse: ESTV-Kursliste, Kurs überschreiben und gespeicherte Kursreihen mit Quelle und Kurs per 31.12.
Kurse: ESTV-Kursliste, Tageskurse und eigene Überschreibungen, jeweils mit Quelle.

Prüfen und KI-Assistent

Die Prüfungen vergleichen den Saldo aus den Buchungen mit dem Kontoauszug, suchen Auszahlungen ohne Eingang auf einem eigenen Konto und zeigen Positionen ohne Kurs, jeweils mit Ampel und geschätzter Auswirkung. Mit einer eigenen KI-Anbindung (OpenAI-kompatibel, auch lokal, oder Anthropic) erklärt ein Chat die Zahlen und schlägt Korrekturen vor. Geändert wird erst nach einem Klick auf «Ausführen». Dieselben Werkzeuge gibt es über einen MCP-Server auch für externe KI-Clients.

Projekt-Tab Prüfungen: Ampeln für Saldo-Abgleich, Transfers, fehlende Kurse und Wallets sowie offene Punkte mit geschätzter Auswirkung
Prüfungen mit Ampel und geschätzter Auswirkung in CHF.
Ergebnis-Tab mit geöffnetem KI-Assistenten: Antwort mit Link zur Rückverfolgung und ein Vorschlag zum Überschreiben eines Kurses mit Ausführen und Abbrechen
Der KI-Assistent erklärt Zahlen und schlägt Änderungen vor. Ausgeführt wird erst nach einem Klick.

Steuerdokumente und E-Steuerauszug

Neben dem einfachen und dem ausführlichen Auszug erstellt lazy-koins ein Wertschriftenverzeichnis (auch als CSV für die Steuersoftware), eine Ertrags- und Belegliste und einen Transaktions- und Bestandesnachweis für Rückfragen des Steueramts. Neu ist der E-Steuerauszug nach eCH-0196: als XML für den direkten Import und als PDF mit Barcode-Blättern, die die kantonale Steuersoftware einlesen kann. Alle Dokumente enthalten nur deklarierte Werte. Offene Punkte stehen in einem separaten internen Prüfbericht, und alles lässt sich direkt aus der App an den Treuhänder mailen.

Exporte-Tab: Auszug erstellen und weitere Steuerdokumente – Wertschriftenverzeichnis, Ertrags- und Belegliste, Transaktions- und Bestandesnachweis, E-Steuerauszug
Weitere Steuerdokumente, jeweils als PDF, Excel oder CSV.
E-Steuerauszug nach eCH-0196 als PDF: Wertschriftenliste mit Depots je Plattform, Totale und ein Barcode-Blatt mit PDF417-Codes
Der E-Steuerauszug nach eCH-0196 (Beispieldaten): lesbare Seiten und Barcode-Blatt zum Einlesen in die Steuersoftware.

Einrichtung, Hilfe und Desktop-App

Beim ersten Start führt ein Assistent durch Profil, Treuhänder, KI, Kurse, Wallets, Mail und PIN. Eine Hilfe-Seite erklärt danach Schritt für Schritt, wie man von den Dateien zum fertigen Auszug kommt. Neben der Web-App gibt es eine Desktop-App für Windows und macOS ohne Konto, bei der alle Daten auf dem eigenen Computer bleiben. Ein Projekt lässt sich als Paket zwischen beiden verschieben.

Hilfe-Seite: Schritt-für-Schritt-Anleitung mit Inhaltsverzeichnis von der Einrichtung bis zur Desktop-App
Die Hilfe erklärt Schritt für Schritt, wie lazy-koins funktioniert.

Wie es gebaut ist

  • Ein Nx-Monorepo mit einer Angular-App (spartan.ng, Tailwind CSS) und einem NestJS-Backend mit SQLite über Prisma.
  • Die Berechnung ist eine reine TypeScript-Bibliothek mit decimal.js. Web, Desktop, Dashboard und Tests rechnen mit genau demselben Code.
  • Der E-Steuerauszug wird gegen die offiziellen XSD-Schemas geprüft. Die PDF417-Barcodes erzeugt lazy-koins selbst und liest sie im Test wieder zurück.
  • Eine Werkzeug-Schicht für Chat und MCP-Server, die Desktop-App mit Electron, gehostet mit Coolify.
  • Geplant, gebaut und getestet zu einem grossen Teil zusammen mit KI-Agenten.

Code und Lizenz

Der Code liegt auf GitHub, unter der PolyForm Noncommercial License 1.0.0. Für private und andere nicht-kommerzielle Zwecke darf man ihn frei nutzen, ändern und weitergeben. Eine kommerzielle Nutzung erlaubt die Lizenz nicht. Fehler und Ideen sind als Issues willkommen. Die Screenshots zeigen synthetische Beispieldaten.

lazy-koins ist keine Steuerberatung. Es dokumentiert, wie jede Zahl berechnet wurde, damit man selbst, der Treuhänder oder das Steueramt sie nachprüfen kann.

Alle Projekte
  • hello-eme-play

    Spiel-Engine, die jede Webseite in ein Spiel verwandelt, konfiguriert mit einem einzigen JSON. Mit Plugin für Payload CMS.

    KI-generiert
    • Tools
  • Moat

    Ein kleines PHP-Gate auf dem bestehenden Hosting, das API-Schlüssel aus dem Browser fernhält und nur freigegebene Anfragen weiterleitet. Noch in Entwicklung.

    KI-generiert
    • Tools
  • bexio-dotnet

    .NET-Bibliothek für die bexio-API (2.0 und 3.0): Rechnungen, Kontakte, Buchhaltung und mehr, mit Anmeldung per Zugriffstoken oder OAuth2.

    KI-unterstützt
    • Tools