Selbst gehostete Buchhaltung für Freiberufler: E-Rechnung, Bankabgleich, EÜR, ELSTER-Voranmeldung
1.3K
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.
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.
| 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 |
![]() Rechnung schreiben: Vorschau des PDFs, während du tippst | ![]() Bankabgleich: Vorschlag mit Begründung, Enter ordnet zu |
![]() Voranmeldung: aus den Buchungen berechnet, direkt an ELSTER | ![]() Auswertungen: EÜR nach Zufluss und Abfluss |
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 |
| 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:3000
Ohne 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).
⭐ 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.
Content type
Image
Digest
sha256:1407fdc14…
Size
225.9 MB
Last updated
3 days ago
docker pull tristanteu/haben