Vrwb.
Alle Tools
zum Selbst-Hosten

Für die Arbeit

Tab

Buchhaltung für Kleinunternehmer (§ 19 UStG).

Tab ist meine eigene Buchhaltung. Als Kleinunternehmer nach § 19 UStG brauchst du keine Buchhaltungs-Suite — du brauchst saubere Belege, richtige Kategorien und am Jahresende die Summen pro Zeile der Anlage EÜR.

Genau das macht Tab. Und bewusst nicht mehr: kein ELSTER-Direktversand, kein Bankabruf, keine Umsatzsteuer-Logik.

Was es kann

  • Belege nach Zufluss/Abfluss (§ 11 EStG): Buchungsdatum ist Zahlungsdatum
  • Beleg-Eingang: PDF, JPG oder PNG hochladen und später der Buchung zuordnen
  • Eine Rechnung, mehrere Positionen — Aufteilung auf verschiedene Kategorien und Beträge
  • EÜR-Summenblatt: je befüllte Zeile eine Summe, zum Übertragen ins Steuerprogramm oder ELSTER
  • Beleg-Journal als CSV mit allen Einzelbuchungen
  • Multi-Gewerbe: eine eigene Anlage EÜR pro Gewerbe, z. B. Makler und App-Geschäft getrennt
  • AfA monatsgenau pro rata; Sofortabzug für Hardware und Software im Kaufjahr
  • Sonderfälle eingebaut: Bewirtung mit 70 % in Zeile 63, km-Pauschale, GWG-Hinweis, Geschenke-Grenze
  • Warnung an der Kleinunternehmer-Grenze (25.000 € / 100.000 €)

Kategorien statt Zeilennummern

Die Zeilennummern der Anlage EÜR verschieben sich von Jahr zu Jahr. Deshalb speichert Tab an der Buchung nie die Zeile, sondern nur die Kategorie — das Mapping Kategorie → Zeile ist jahresversioniert und wird erst beim Export aufgelöst.

Der Jahrgang 2025 ist gegen die ELSTER-Anleitung verifiziert, 2026 vorläufig. Korrekturen am Mapping ändern rückwirkend keine einzige Buchung.

Selbst hosten

Dein Server, deine Daten.

Das brauchst du

  • Server mit Docker und Docker Compose, Domain mit A-Record
  • Zwei Verzeichnisse als Bind-Mounts für SQLite-Datei und Beleg-Uploads — die gehören in dein Backup
  • Ein Reverse-Proxy davor; ein Caddy-Snippet liegt im Repo bei

So läuft es an

  1. 1

    Vorbereiten

    mkdir -p /opt/appdata/tab/data /opt/appdata/tab/uploads
    git clone https://github.com/laarsv/tab.git && cd tab
    cp .env.example .env
  2. 2

    Zugang erzeugen

    Tab ist Single-User: ein bcrypt-Hash und ein JWT-Secret in der .env, kein User-Management.

    python3 scripts/hash_password.py    # fragt verdeckt, gibt ADMIN_PASSWORD_HASH aus
    openssl rand -hex 32                 # als JWT_SECRET eintragen
  3. 3

    Starten

    Das Skript zieht den Code, baut die Container und wartet auf den Health-Check.

    ./scripts/deploy.sh
  4. 4

    Caddy anbinden

    caddy.snippet ans zentrale Caddyfile anhängen und reloaden: /api geht ans Backend, alles andere an die SPA.

Steckbrief

Stack
FastAPI · SQLite (eine Datei) · React + Vite
Auth
Single-User, bcrypt + JWT
Lizenz
AGPL-3.0

Tab ist eine technische Hilfe, keine Steuerberatung. Ob eine Buchung steuerlich richtig eingeordnet ist, entscheidest du — im Zweifel mit deiner Steuerberatung.