Eigenprojekt · 2026
Grenzwert-Wächter
Ein Dienst, der Einnahmen aus Invoice Ninja und Belege aus Paperless mit den steuerpflichtigen Bezügen der Gehaltsabrechnung zusammenrechnet und warnt, bevor eine Grenze reißt.
Konzept, Entwicklung und Betrieb
Womit es gebaut ist
Python · FastAPI · SQLite · pdftotext · Docker
Das Problem
Wer neben einer Anstellung selbständig ist, hängt an mehreren Grenzen gleichzeitig: der Kleinunternehmergrenze, der Geringfügigkeitsgrenze und der Veranlagungspflicht. Die Zahlen dafür liegen an drei Orten: offene und bezahlte Rechnungen in Invoice Ninja, Belege in Paperless, die steuerpflichtigen Bezüge unter Kennzahl 245 der Gehaltsabrechnung. Von Hand rechnet das niemand monatlich nach, und auffallen tut es erst im Bescheid.
Die Lösung
Ein Dienst holt alle fünfzehn Minuten den Stand aus Invoice Ninja und Paperless, liest neue Gehaltsabrechnungen per pdftotext aus und zieht die Kennzahl 245 heraus. Der Rechenkern ist zustandslos: Er bekommt Zahlen hinein und gibt eine Bewertung zurück, ohne selbst zu speichern oder zu laden. Getestet wird er gegen von Hand nachgerechnete Beispiele, damit ein Fehler in der Rechnung auffällt und nicht erst der Steuerberater. Persistenz und Abgleich liegen daneben in SQLite; die Oberfläche zeigt je Grenze den Abstand in Euro und den Monat, in dem sie bei gleichbleibendem Verlauf erreicht wird.
Das Ergebnis
- Jede Grenze hat einen aktuellen Abstand in Euro statt einer Schätzung am Jahresende.
- Der Rechenkern läuft ohne Zustand und ist gegen von Hand nachgerechnete Fälle abgesichert.
- Gehaltsabrechnungen werden automatisch eingelesen, statt Beträge abzutippen.
- Der Abgleich läuft alle fünfzehn Minuten, ohne dass jemand etwas anstößt.
Warum es das gibt
Die Grenzen, an denen eine nebenberufliche Selbständigkeit hängt, sind einzeln harmlos und zusammen unübersichtlich. Sie greifen auf unterschiedliche Zeiträume, auf unterschiedliche Beträge und auf Zahlen, die in verschiedenen Systemen liegen. Der Wächter beantwortet eine einzige Frage: Wie weit ist es noch bis zur nächsten Grenze, und wann wäre sie bei gleichbleibendem Verlauf erreicht?
Wie er gebaut ist
Ein Abgleichlauf je Quelle, ein Rechenkern ohne Zustand, eine SQLite-Datei für den Verlauf. Der Kern bekommt Zahlen als Argumente und gibt eine Bewertung zurück, ohne Zugriff auf Datenbank oder Netz. Das macht ihn prüfbar: Zu jedem Fall gibt es einen Test mit einem von Hand nachgerechneten Ergebnis. Fehler in der Anbindung bleiben damit Fehler in der Anbindung und verfälschen nicht die Rechnung.
Was daran übertragbar ist
Dasselbe Muster trägt überall dort, wo Zahlen aus mehreren Systemen zu einer Entscheidung zusammenlaufen: Abgleich außen, Rechnung innen, Tests gegen von Hand nachgerechnete Fälle. Genau nach diesem Muster baue ich Auswertungen für Betriebe.