lazy-koins
Crypto tax documents for Switzerland: exports and wallets in, tax value, income and statement out. Runs on lazy-koins.hello-eme.ch, still in development.
AI-generated- Tools
- Steuern
- Crypto
lazy-koins runs on lazy-koins.hello-eme.ch and is still in development. You can sign up and try it with your own exports. Quite a bit will still change before the first stable version, and errors are possible, so always check the numbers yourself.
Why I built it
- For the fun of it: I like planning, building and testing. A project that goes from the idea all the way to a running app is my favourite way to try new things.
- Building ideas with AI: With AI, ideas can be built quickly and validated right away with real data. “Wouldn't it be handy if …” turns into a feature you can test in no time, and that's simply fun.
- A simple statement is enough: In Switzerland, capital gains on private assets are tax-free. The tax return only needs a list of the coins as of 31 December with their tax value, plus the year's income. The usual tools calculate much more and charge a yearly subscription for it.
What is lazy-koins?
lazy-koins turns exports from crypto exchanges and wallet addresses into the documents for one tax year: wealth as of 31 December with the tax value of every position, and the year's income from interest, staking, airdrops and launchpools, valued on the day it was received. From that it creates statements and tax documents as PDF, Excel and CSV, up to the e-tax statement for the cantonal tax software. The first focus is Switzerland, private assets. The app is available in German and English.
Dashboard
The start page shows your crypto wealth across all projects: its history over any period you choose, deposits and withdrawals, income, costs and trading fees, the split by asset and the holdings. Every figure can be clicked to show the transactions behind it. A filter shows the holdings you should still take a look at.
Files and mappings
Exports are uploaded as CSV, Excel or PDF and stay unchanged. A file belongs to the user, not to a project. Each tax year only picks which files it uses, and single files can be turned off for a project. Instead of a separate parser per exchange, a small JSON describes how to read an export. There are ready-made default mappings for ten platforms; you can write your own or let an AI draft them. In the mapping library users share and rate their mappings. The desktop app can read the library of a web server too.
For each project lazy-koins notices when an export stops too early, starts too late or a statement as of 31 December is missing, and lists it under “Notices”.
Transactions: one truth per entry
All transactions from all files and wallets are on one page, along with how they count in the tax calculation: as income, as wealth, as a transfer between your own accounts, as spam or not yet classified. Reclassifying a transaction, hiding it or linking the two sides of a transfer applies in every project that uses it, always with a reason and always reversible. The original file stays unchanged. An AI can analyse unknown transactions and make suggestions.
Wallets and prices
Wallets are added with their public address and queried directly: Bitcoin (xpub too), Ethereum and other EVM networks, Solana, plus Cardano and Polkadot rewards. lazy-koins rejects seed phrases and private keys before anything is stored.
Prices as of 31 December come from the ESTV price list (Swiss Federal Tax Administration), which lazy-koins loads automatically. For everything else you choose the price sources and their order yourself, such as CoinGecko, CoinMarketCap, DefiLlama or the daily prices of exchanges, plus the ECB exchange rates. Every price is stored with its source and can be overridden. Calculations use exact decimals instead of floating point, and every number can be traced back to its file and line.
Checks and AI assistant
The checks compare the balance from the transactions with the account statement, look for withdrawals that never arrive in one of your own accounts and show positions without a price, each with a traffic light and an estimated impact. With your own AI connection (OpenAI-compatible, local too, or Anthropic) a chat explains the numbers and suggests corrections. Nothing changes until you click “Run”. The same tools are also available to external AI clients through an MCP server.
Tax documents and e-tax statement
Besides the short and the detailed statement, lazy-koins creates a list of securities (also as CSV for the tax software), a list of income and receipts, and a proof of transactions and holdings for questions from the tax office. New is the e-tax statement according to eCH-0196: as XML for direct import and as PDF with barcode pages that the cantonal tax software can read. All documents contain only declared values. Open points go into a separate internal review report, and everything can be emailed to your accountant straight from the app.
Setup, help and desktop app
On first start a wizard walks you through profile, accountant, AI, prices, wallets, email and PIN. After that a help page explains step by step how to get from your files to the finished statement. Besides the web app there is a desktop app for Windows and macOS without an account, where all data stays on your own computer. A project can be moved between the two as a package.
How it's built
- An Nx monorepo with an Angular app (spartan.ng, Tailwind CSS) and a NestJS backend with SQLite via Prisma.
- The calculation is a plain TypeScript library using decimal.js. Web, desktop, dashboard and tests all calculate with exactly the same code.
- The e-tax statement is validated against the official XSD schemas. lazy-koins generates the PDF417 barcodes itself and reads them back in its tests.
- A tool layer for the chat and the MCP server, the desktop app with Electron, hosted with Coolify.
- Planned, built and tested largely together with AI agents.
Code and license
The code is on GitHub, under the PolyForm Noncommercial License 1.0.0. You may use, change and share it freely for private and other non-commercial purposes. The license does not allow commercial use. Bugs and ideas are welcome as issues. The screenshots show synthetic sample data.
lazy-koins is not tax advice. It documents how every number was calculated, so that you, your accountant or the tax office can check it.