Sign inSign up

tristanteu/haben

By tristanteu

•Updated 3 days ago

Selbst gehostete Buchhaltung für Freiberufler: E-Rechnung, Bankabgleich, EÜR, ELSTER-Voranmeldung

Image
0

1.3K

tristanteu/haben repository overview

⁠Haben: Open-Source-Buchhaltung für Freiberufler, selbst gehostet

Haben: Rechnung 2026-031 festgeschrieben, Zahlungseingang zugeordnet, Voranmeldung September an ELSTER übermittelt

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.

CI Release Lizenz: AGPL-3.0 Doku E-Rechnung ELSTER TypeScript TanStack Start PostgreSQL Docker Pulls Image Size Plattformen Podman

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.

Übersicht in Haben: offene Forderungen, Umsatz, Umsatzsteuer-Zahllast, Kontostand und die nächsten Aufgaben

⁠💡 Warum Haben?

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

⁠✨ Funktionen

BereichWas 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 AppPasskey (Passwort als Ersatz), installierbar als PWA auf Handy und Desktop, helle und dunkle Themes

⁠📸 Screenshots

Rechnungseditor mit Positionen links und Live-Vorschau des PDFs rechts
Rechnung schreiben: Vorschau des PDFs, während du tippst
Bankabgleich: Umsatz von Rheinpixel GmbH mit dem besten Treffer Rechnung 2026-033 und den Gründen
Bankabgleich: Vorschlag mit Begründung, Enter ordnet zu
Voranmeldung September mit Kennzahlen 81, 86, 66 und 83 und dem Bereich zum Übermitteln an ELSTER
Voranmeldung: aus den Buchungen berechnet, direkt an ELSTER
Auswertungen 2026 mit Einnahmen, Ausgaben, Gewinn und Monatsdiagramm
Auswertungen: EÜR nach Zufluss und Abfluss

⁠🚀 Schnellstart

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.

⁠📚 Dokumentation

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

⁠🔧 Entwicklung

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⁠.

PaketInhalt
apps/webOberfläche, Server Functions, Datenbank, Anmeldung
packages/coreBeträge, Zeiträume, Voranmeldung, EÜR, Buchungssätze, Zuordnungsvorschläge
packages/einvoiceRechnungs-PDF, ZUGFeRD und XRechnung erzeugen, eingehende E-Rechnungen lesen
packages/elsterERiC-Anbindung, UStVA-XML, Worker-Prozess
packages/importKontoauszüge (DKB, N26, CAMT.053), DATEV-Buchungsstapel, Lexware-Office-API

⁠🤝 Mitwirken

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.

Tag summary

Content type

Image

Digest

sha256:1407fdc14…

Size

225.9 MB

Last updated

3 days ago

docker pull tristanteu/haben