Skip to content

jonax1337/zettel

Zettel

Offline-first Rechnungen für deutsche Freelancer und Kleinunternehmer. ZUGFeRD- / Factur-X-konforme PDF/A-3 mit eingebettetem EN-16931-XML — lokal, ohne Cloud, ohne Abo.

Release Build License: MIT Downloads Stars

Windows macOS Linux ZUGFeRD Made in Germany

Tauri Svelte TypeScript Tailwind Python SQLite

Releases  •   Discussions  •   Plan  •   Changelog  •   Contributing


Ich bin Solo-Selbstständiger und hatte keine Lust auf weitere 20–30 € pro Monat für SaaS-Buchhaltung, nur um ein paar Rechnungen pro Quartal zu schreiben. Zettel ist das, was dabei rausgekommen ist: ein kleines Desktop-Tool, das lokal läuft, die deutsche E-Rechnungs-Norm EN 16931 korrekt umsetzt und den Kleinunternehmer-Modus (§ 19 UStG) als First-Class-Feature behandelt — nicht als Häkchen, das man hinter einem Premium-Tarif suchen muss.

Stand 0.2: fünf von fünf v0.1-Test-Rechnungen sind grün bei erechnungs-validator.de. v0.2 bringt Reverse-Charge, BASIC/EXTENDED-Profile, DATEV-Export, Backup/Restore und wiederkehrende Rechnungen dazu. Reicht für mich, reicht hoffentlich auch für dich.

Install

Installer für Windows, macOS und Linux gibt's unter Releases.

Plattform Format Hinweis
Windows 10/11 .msi, .exe (NSIS) Erster Start: SmartScreen → Weitere Informationen → Trotzdem ausführen
macOS 14+ .dmg (Apple Silicon) Nicht notarisiert — Rechtsklick → Öffnen beim ersten Start. Intel-Build vorübergehend ausgesetzt (CI-Capacity).
Linux .deb (Ubuntu 22.04+) Pango/Cairo nötig (s. u.)

Auf Linux und macOS braucht WeasyPrint Pango, Cairo und gdk-pixbuf aus dem System:

# Ubuntu / Debian
sudo apt install libpango1.0-0 libcairo2 libgdk-pixbuf2.0-0

# macOS
brew install pango cairo gdk-pixbuf

Quickstart

  1. Einstellungen öffnen, Firmendaten und Steuernummer eintragen
  2. Kunde anlegen
  3. Neue Rechnung → Kunde wählen → Positionen eintragen → speichern
  4. PDF erzeugen → liegt unter ~/Documents/Zettel/Rechnungen/RE-2026-0001.pdf

Was drin ist

Rechnungen & Kunden lokal. SQLite, kein Cloud-Sync. Status-Workflow Entwurf → Versandt → Bezahlt → Storniert. Customer-Snapshot pro Rechnung (rechtssicher zum Rechnungszeitpunkt). Konfigurierbare Nummernkreise, Logo-Upload.

E-Rechnung konform. PDF/A-3 mit eingebettetem Factur-X-XML in den Profilen BASIC, EN 16931 und EXTENDED. Kleinunternehmer-Modus mit korrektem CategoryCode E und BR-CO-26-konformem BT-29-Fallback ohne USt-IdNr. Mehrere USt-Sätze pro Rechnung (0 %, 7 %, 19 %).

Reverse-Charge / intra-EU B2B. Toggle pro Rechnung, automatischer 0 %-Ausweis, ZUGFeRD CategoryCode K + ExemptionReason, deutscher und englischer Hinweistext auf der PDF.

DATEV-Export. Buchungsstapel (Format 700, SKR03/SKR04) für den Steuerberater — eine Buchungszeile pro USt-Rate pro Rechnung. Kleinunternehmer- und Reverse-Charge-Rechnungen auf den passenden Erlöskonten. UTF-8-BOM, CRLF, importierbar in DATEV Kanzlei-Rechnungswesen.

Wiederkehrende Rechnungen. Vorlagen für Retainer/Subscriptions (monatlich / quartalsweise / jährlich). Fällige Vorlagen erscheinen auf dem Dashboard — ein Klick erzeugt einen Entwurf. Keine stille Auto-Generierung im Hintergrund.

Backup & Restore. ZIP mit konsistentem SQLite-Snapshot (VACUUM INTO), allen PDFs und einem Manifest. Restore wird beim nächsten App-Start eingespielt; die alte DB landet vorsichtshalber als zettel.db.bak.

Was nicht drin ist

Keine vollständige Buchhaltung, kein Banking, kein Cloud-Sync, keine Mobile-App. Eingangsrechnungen einlesen und Drittland-Reverse-Charge sind für v0.3+ geplant. Vollständige Non-Goals in PLAN.md.

Stack

Tauri 2 + Svelte 5 (Runes) + TypeScript strict + Tailwind v4. UI als shadcn-Style-Layer über Bits-UI-Primitives unter src/lib/ui/. Persistenz über tauri-plugin-sql direkt auf SQLite. PDF und ZUGFeRD-XML rendert ein Python-Sidecar (WeasyPrint, factur-x, Jinja2), gebundelt per PyInstaller und als Tauri-Resource ausgeliefert. Architektur, Datenmodell und Sidecar-Protokoll: PLAN.md und CLAUDE.md.

Entwicklung

pnpm install
pnpm tauri:dev

Release-Build inklusive Sidecar-Bundle:

cd sidecar && python build.py && cd ..
pnpm tauri:build

Contributor-Setup, Konventionen und Bauanleitung pro Plattform: CONTRIBUTING.md.

Disclaimer

Zettel ist keine Rechts- oder Steuerberatung und gibt keinerlei Garantie auf rechtliche Korrektheit der erzeugten Rechnungen. Nutzung auf eigene Verantwortung. Die ersten Rechnungen vor dem Versand vom Steuerberater prüfen lassen.

Lizenz

MIT — © Jonas Laux & Contributors · laux.digital

About

Offline-first ZUGFeRD/Factur-X invoice generator for German freelancers and Kleinunternehmer.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors