Die Buchhaltungssoftware für Freiberufler, Selbstständige und Kleinunternehmer, die du selbst betreibst.
Rechnungen mit E-Rechnung (ZUGFeRD, XRechnung), Belege, Bankabgleich, EÜR und die Umsatzsteuer-Voranmeldung
direkt an ELSTER. GoBD-konform, auf deinem Server, ohne Abo, ohne Datenabfluss.
Warum? • Funktionen • Schnellstart • Dokumentation • Entwicklung
English: self-hosted open-source bookkeeping for German freelancers and small businesses, with e-invoicing (ZUGFeRD, XRechnung), bank reconciliation, EÜR and VAT returns via ELSTER. The app and its documentation are in German.
Warning
Beta: Haben wird noch stark weiterentwickelt. Datenmodell und Abläufe können sich von Version zu Version
ändern, und Migrationen lassen sich nicht zurückspielen. Vor jedem Update ein Backup machen
(docker compose exec backup backup.sh, siehe Backup und Wiederherstellen)
und Auswertungen und Meldungen ans Finanzamt vor dem Absenden prüfen.
Als Freiberufler schreibst du Rechnungen, sammelst Belege, gleichst das Konto ab und schickst die Voranmeldung. Dafür braucht es kein Abo bei Lexware Office (früher lexoffice) oder sevDesk und keinen fremden Dienst, der jede Rechnung sieht. Haben ist die Open-Source-Alternative dazu: eine Web-App für Buchhaltung, Steuern und Rechnungen, die du mit Docker oder Podman auf deinem eigenen Server betreibst.
- Ein Weg vom Beleg bis zum Finanzamt: festschreiben, Zahlung zuordnen, Voranmeldung prüfen und senden
- GoBD-konform von Anfang an: Festschreibung per Postgres-Trigger, Audit-Log, Korrekturen nur über Storno
- Deine Daten bleiben bei dir: eigener Server, Schlüssel verschlüsselt, Jahresarchiv mit Prüfsummen; KI nur auf Wunsch
- Umzug ohne Datenverlust: Rechnungen, Belege und Kontakte aus Lexware Office übernehmen, DATEV-Export archivieren
- Für Freiberufler und Kleingewerbe: Einnahmen-Überschuss-Rechnung (EÜR), Ist- oder Soll-Versteuerung, Kleinunternehmerregelung nach § 19 UStG, Kontenrahmen SKR03 oder SKR04
| Bereich | Was Haben kann |
|---|---|
| 🧾 Rechnungen | Live-Vorschau, ZUGFeRD/XRechnung (KoSIT-geprüft), Netto- oder Bruttopreise (Endpreise für Privatkunden), Storno, Reverse Charge, § 19 UStG, Abschlagsrechnungen, wiederkehrende Rechnungen, Mahnwesen, Versand per E-Mail |
| 📝 Angebote | Eigener Nummernkreis, PDF und Versand, mit einem Klick zur Rechnung |
| 📎 Belege | Drag-and-drop, Kamera, Teilen am Handy oder per E-Mail (IMAP); E-Rechnungen direkt gelesen, sonst optional per KI |
| 🏦 Bankabgleich | Automatischer Abruf per PSD2 oder Import (DKB, N26, CAMT.053), Vorschläge mit Begründung, Teil- und Sammelzahlungen |
| 📤 Voranmeldung | Kennzahlen aus den Buchungen (Ist oder Soll), Herkunft jeder Zahl, Vorprüfung, Übermittlung per ERiC, Berichtigung |
| 📑 Jahreserklärungen | USt-Erklärung, Anlage EÜR mit AVEÜR, Einkommensteuererklärung; vorausgefüllte Belege von ELSTER abrufen |
| 🏛️ Finanzamt | Bescheide und Nachrichten über ELSTER, Herabsetzung der Vorauszahlungen mit Steuerprognose |
| ⏰ Fristen | Alle Steuertermine auf einer Seite, als Kalender-Abo und per E-Mail |
| 🚗 Pauschalen · Kasse | Homeoffice, Kilometer, Verpflegungsmehraufwand; Kassenbuch für Barzahlungen |
| 🖥️ Anlagen und AfA | Anlagenverzeichnis, lineare AfA, GWG und Sammelposten, AfA-Buchung zum Jahresende |
| 📊 Auswertungen | EÜR, offene Posten, Monatsverlauf, Jahresexport als ZIP mit SHA-256-Prüfsummen |
| 📚 Buchhaltung | Doppelte Buchführung nach SKR03/SKR04, Journal, Saldenliste, Kontenblätter, DATEV-Export |
| 📦 Umzug aus Lexoffice | Abruf über die Public API, DATEV-Buchungsstapel, offene Posten und Anlagen übernehmen |
| 🔐 Anmeldung und App | Passkey (Passwort als Ersatz), installierbar als PWA auf Handy und Desktop, helle und dunkle Themes |
Haben läuft als drei Container: die App (tristanteu/haben, amd64 und arm64), PostgreSQL und Caddy für HTTPS.
Du brauchst einen Linux-Server mit Docker oder Podman und eine Domain, die auf ihn zeigt (Ports 80 und 443),
denn Passkeys funktionieren nur über HTTPS.
mkdir haben && cd haben
curl -O https://raw.githubusercontent.com/firsttris/haben/main/deploy/compose.yml
curl -o .env https://raw.githubusercontent.com/firsttris/haben/main/deploy/compose.env.example
# in .env eintragen: DOMAIN, DB_PASSWORD (openssl rand -hex 24),
# AUTH_SECRET und ENCRYPTION_KEY (je openssl rand -base64 32), dann
docker compose up -dÖffne https://deine-domain, leg dein Konto an und richte Firmendaten, Nummernkreis und ELSTER ein, wie in Erste Schritte beschrieben.
Podman Quadlets, ERiC für die ELSTER-Übermittlung, Backup, Updates und alle Umgebungsvariablen stehen in Betrieb und Installation.
Important
Sichere den Verschlüsselungsschlüssel (ENCRYPTION_KEY bzw. das Secret haben-encryption-key) zusätzlich an
einem zweiten Ort. Ohne ihn sind ELSTER-Zertifikat und Lexoffice-Schlüssel nach einer Wiederherstellung nicht mehr lesbar.
Auch als Website mit Suche: https://firsttris.github.io/haben/
| Betrieb und Installation | Docker Compose, Podman Quadlets, Caddy, Secrets, ERiC einbinden, Backup, Updates, häufige Probleme |
| Erste Schritte | Konto und Passkey, Firmendaten, Ist oder Soll, SKR03 oder SKR04, Nummernkreis, ELSTER-Zertifikat, Bankkonten |
| Rechnungen und E-Rechnung | Editor, Festschreiben, ZUGFeRD und XRechnung, Pflichtangaben, Storno, Mahnwesen |
| Angebote | Nummernkreis, PDF, Versand, Rechnung aus dem Angebot |
| Belege | Hochladen, Teilen am Handy, E-Rechnungen lesen, KI-Auslesung, Reverse Charge |
| Pauschalen · Kassenbuch | Homeoffice, Kilometer, Verpflegungsmehraufwand; Barkasse |
| Anlagen und AfA | Anlagenverzeichnis, lineare AfA, GWG, Sammelposten, Abgang |
| Bankimport und Abgleich | PSD2, DKB, N26, CAMT.053, Vorschläge, Teilzahlungen |
| Umsatzsteuer-Voranmeldung | Kennzahlen, Vorprüfung, Übermittlung an ELSTER, Berichtigung |
| Jahreserklärungen | Umsatzsteuererklärung, Anlage EÜR mit AVEÜR, Einkommensteuererklärung |
| Finanzamt · Fristen | ELSTER-Postfach, Vorauszahlungen, alle Steuertermine als Kalender-Abo |
| Auswertungen und Jahresexport | EÜR, offene Posten, Archiv-ZIP mit Prüfsummen, Aufbewahrung |
| Umzug aus Lexoffice | API-Abruf, DATEV-Buchungsstapel, offene Posten, Abgleich vor der Kündigung |
| KI-Assistenten (MCP) | Im Gespräch mit Claude Code, Claude Desktop oder einem lokalen Modell abfragen; nur lesen |
| Buchhaltung in Haben | GoBD, Festschreibung, Kontenrahmen, alle Buchungssätze, Steuerschlüssel |
| Architektur · Entwicklung | Aufbau, Datenmodell, ERiC-Worker; lokale Umgebung, Tests, Mitwirken |
| Roadmap | Was als Nächstes kommt |
Voraussetzungen: Node 22, pnpm 10 und PostgreSQL 16.
pnpm install
cp apps/web/.env.example apps/web/.env # DATABASE_URL, BETTER_AUTH_SECRET, HABEN_ENCRYPTION_KEY eintragen
pnpm db:migrate
pnpm dev # http://localhost:3000Ohne ERiC (unter Einstellungen per Knopf von der Finanzverwaltung geladen) simuliert Haben die ELSTER-Übermittlung und zeigt das deutlich an. Ohne ANTHROPIC_API_KEY bleibt
die KI-Auslesung aus.
Stack: TanStack Start (React, Server Functions), PostgreSQL mit Drizzle, Better Auth mit Passkeys, Zod, Typst für
die Rechnungs-PDFs, @e-invoice-eu/core für ZUGFeRD und XRechnung, ERiC über koffi in einem eigenen Prozess,
Vitest und Playwright. Aufbau und Abläufe beschreibt die Architektur, alles Weitere
Entwicklung.
| Paket | Inhalt |
|---|---|
apps/web |
Oberfläche, Server Functions, Datenbank, Anmeldung |
packages/core |
Beträge, Zeiträume, Voranmeldung, EÜR, Buchungssätze, Zuordnungsvorschläge |
packages/einvoice |
Rechnungs-PDF, ZUGFeRD und XRechnung erzeugen, eingehende E-Rechnungen lesen |
packages/elster |
ERiC-Anbindung, UStVA-XML, Worker-Prozess |
packages/import |
Kontoauszüge (DKB, N26, CAMT.053), DATEV-Buchungsstapel, Lexware-Office-API |
Fehler und Ideen gern als Issue. Besonders hilfreich sind anonymisierte Kontoauszüge von Banken, die Haben noch nicht
kennt, und Rückmeldungen zur ELSTER-Übermittlung. Vor einem Pull Request bitte pnpm lint, pnpm typecheck und
pnpm test laufen lassen (die Datenbanktests brauchen TEST_DATABASE_URL, siehe Entwicklung).
Danke an @ngres für durchdachte, genau ausgearbeitete Issues, aus denen der Artikelkatalog (#65), die Bruttopreise (#76) und die Manipulationserkennung im Audit-Log (#78) entstanden sind.
⭐ Gefällt dir Haben? Ein Stern auf GitHub hilft anderen, es zu finden.
🐛 Fehler melden · 💡 Idee vorschlagen
Lizenz: AGPL-3.0 · © Tristan Teufel und Mitwirkende
Wer Haben für andere betreibt, muss ihnen den Quellcode anbieten; der Link steht in der Navigation. Eine kommerzielle Lizenz ohne diese Pflichten gibt es über teufel-it.de.
Haben ist keine Steuerberatung. Konten, Kategorien und Aufbewahrung vor dem Echtbetrieb mit deiner Steuerberatung abgleichen.
ELSTER ist eine Marke der Finanzverwaltung. Haben steht in keiner Verbindung zu Lexware, DATEV oder der Finanzverwaltung.



