Zum Inhalt
Vereine & NGOsDatenschutz im Verein: Mitgliederdaten, Newsletter, Fotos
Bl. 28
2026
laufend

belegwerk

Rechnung, Storno, Mahnung und ein nachweisfähiges Register — als Dateien, die man auch ohne das Werkzeug noch lesen kann.

github.com/Artaeon/belegwerk →

Eine von belegwerk gesetzte Rechnung — Demo-Mandant, Namen erfunden
Eine von belegwerk gesetzte Rechnung — Demo-Mandant, Namen erfunden

Aufmaß

Ein Betrieb mit einer Handvoll Rechnungen im Monat mietet für die Buchhaltung einen Werkzeugkasten und benutzt daraus einen Schraubenzieher: monatliche Kosten, ein weiteres Konto, und die eigenen Belege liegen in einer fremden Datenbank. Die Alternative ist üblicherweise eine Tabellenkalkulation — die zwar niemandem gehört außer einem selbst, aber weder Pflichtangaben erzwingt noch nachweisen kann, dass eine Zeile unverändert ist. belegwerk ist der Schraubenzieher: die formale Strenge des Buchhaltungsprogramms, in Dateien, die man besitzt.

92
automatisierte Tests, 238 Assertions
97,2 %
Zeilenabdeckung der Bibliotheken
Art
Eigenentwicklung, quelloffen unter MIT
Zielgruppe
Einzelunternehmen und kleine Gesellschaften in Österreich
Rechtsrahmen
§ 11 UStG als Pflichtfelder · Reverse Charge (§ 19), ig Lieferung, Kleinunternehmer (§ 6) mit den vorgeschriebenen Hinweisen
Nachweis
SHA-256 je Rechnung, jede Registerzeile mit der vorigen verkettet; die Prüfsumme steht auch auf dem PDF
Aufbewahrung
Der Push ins entfernte Repository ist die Sieben-Jahres-Ablage nach BAO; `sichern` erzeugt zusätzlich ein selbstprüfendes Archiv
Datenhaltung
JSON je Rechnung, CSV als Register, Git als Prüfpfad — keine Datenbank
Betrieb
Kein Webdienst, kein Port, keine Telemetrie. Auf dem Server ein privates Repo je Mandant plus systemd-Timer
Branding
Farben, Logo, Schrift, Kopf und Fuß je Mandant — die Dokumente tragen dessen Marke, nicht die des Werkzeugs
Bewusst draußen
Registrierkasse/RKSV, doppelte Buchführung, Steuerberatung. In ANFORDERUNGEN.md einzeln benannt
Quellcode
github.com/Artaeon/belegwerk
Leistung
Produkt, Entwicklung
Stack
Bun · JavaScript · Puppeteer · SHA-256 · Git

Gebaut

  • Rechnung, Storno mit eigener Nummer, wiederkehrende Monatsrechnungen, Zahlungseingang, Mahnung in zwei Stufen
  • Manipulationsevidentes Register: eine geänderte oder gelöschte Zeile bricht die Kette aller folgenden
  • Nummernkreis ausschließlich aus dem Register — kein zweiter Zähler, der auseinanderlaufen könnte
  • Jahresexport für die Steuerberatung mit Netto, USt, Brutto, Status und Summenzeile
  • Übernahme des Altbestands aus dem Vorsystem, idempotent und konfliktgeprüft
  • Vier durchgesetzte Regeln: ausgestellte Rechnungen ändern sich nie, Nummern kommen aus dem Register, gemahnt wird nie vor Fälligkeit, versendet wird von Hand
  • Einzeln getestete Angriffsflächen — HTML-Injection ins PDF, Formel-Injection in der Export-CSV, Pfad-Traversal über Rechnungsnummern, CSS-Injection über die Konfiguration

Ansichten

4 Aufnahmen · seitlich ziehen