Zum Hauptinhalt springen

4 Beiträge mit „Open Source“ markiert

Alle Tags anzeigen

Beancount v3: Was ist neu?

· 3 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Beancount Version 3, Mitte 2024 veröffentlicht, markiert eine bedeutende architektonische Weiterentwicklung für das beliebte Klartext-Buchhaltungstool. Während es die Abwärtskompatibilität für Benutzer-Ledger-Dateien beibehält, wurden die zugrunde liegende Struktur und die begleitenden Tools erheblich verändert. Hier ist eine Übersicht über die Neuerungen in Beancount v3.

Eine modularere und schlankere Architektur

2025-06-06-whats-new-in-beancount-v3

Die bedeutendste Änderung in Beancount v3 ist der Übergang zu einem modulareren Ökosystem. Mehrere Schlüsselfunktionalitäten, die zuvor im Kern gebündelt waren, wurden in separate, unabhängige Projekte ausgegliedert. Dies macht den Kern von Beancount schlanker und ermöglicht eine fokussiertere Entwicklung einzelner Komponenten.

Die wichtigsten Komponenten, die nun separate Pakete sind, umfassen:

  • beanquery: Das leistungsstarke SQL-ähnliche Abfragetool für Ihre Ledger-Dateien ist jetzt in einem eigenen Paket.
  • beangulp: Dies ist das neue Zuhause für das Datenimport-Framework und ersetzt das frühere Modul beancount.ingest.
  • beanprice: Ein dediziertes Tool zum Abrufen von Preisen für Rohstoffe und Aktien.

Diese Trennung bedeutet, dass Benutzer diese Pakete zusätzlich zu beancount selbst installieren müssen, um die volle Funktionalität beizubehalten, die sie aus Version 2 gewohnt waren.

Änderungen an Befehlszeilen-Tools und Workflows

Die neue modulare Architektur spiegelt sich in einigen bemerkenswerten Änderungen an den Befehlszeilen-Tools wider:

  • bean-report wurde entfernt: Dieses Tool wurde entfernt. Benutzer werden nun ermutigt, bean-query (aus dem beanquery-Paket) für ihre Berichterstellungsbedürfnisse zu verwenden.
  • Neuer Importer-Workflow: Die Befehle bean-extract und bean-identify wurden aus dem Kern entfernt. Der neue Ansatz mit beangulp ist skriptbasiert. Benutzer werden nun ihre eigenen Python-Skripte erstellen, um den Import von Daten aus externen Quellen wie Kontoauszügen zu handhaben.

Syntax- und Funktionserweiterungen

Während die grundlegenden Buchhaltungsprinzipien gleich bleiben, führt Beancount v3 einige willkommene Flexibilität in seine Syntax ein:

  • Flexiblere Währungscodes: Die früheren Einschränkungen bezüglich Länge und Zeichen für Währungsnamen wurden gelockert. Einzeichen-Währungssymbole werden nun unterstützt.
  • Erweiterte Transaktions-Flags: Benutzer können nun jeden Großbuchstaben von A bis Z als Flag für Transaktionen verwenden, was eine granularere Kategorisierung ermöglicht.

Wichtig ist, dass diese Änderungen abwärtskompatibel sind, sodass Ihre bestehenden Beancount v2 Ledger-Dateien ohne Änderungen funktionieren werden.

Die C++-Neuentwicklung und Leistung

Eines der langfristigen Ziele für Beancount war eine Neuentwicklung seiner leistungskritischen Komponenten in C++. Während diese Arbeit noch im Gange ist, enthält die erste Veröffentlichung von Beancount v3 nicht den C++-basierten Kern. Dies bedeutet, dass die Leistung von v3 vorerst mit v2 vergleichbar ist. Der C++-Code verbleibt in einem separaten Entwicklungszweig für die zukünftige Integration.

Migration von v2 zu v3

Für die meisten Benutzer ist die Migration von Beancount v2 zu v3 relativ unkompliziert:

  1. Ledger-Dateien: Für Ihre .beancount-Dateien sind keine Änderungen erforderlich.
  2. Installation: Sie müssen die neuen, separaten Pakete wie beanquery und beangulp mit pip installieren.
  3. Importer-Skripte: Wenn Sie benutzerdefinierte Importer haben, müssen Sie diese aktualisieren, um die neue beangulp-API zu verwenden. Dies beinhaltet hauptsächlich die Änderung der Basisklasse, von der Ihre Importer erben, und die Anpassung einiger Methodensignaturen.
  4. Fava: Die beliebte Weboberfläche für Beancount, Fava, wurde aktualisiert, um mit v3 kompatibel zu sein. Stellen Sie sicher, dass Sie die neueste Version von Fava haben, um ein nahtloses Erlebnis zu gewährleisten.

Im Wesentlichen ist Beancount v3 eine grundlegende Veröffentlichung, die die Architektur des Projekts optimiert, sie modularer und langfristig einfacher zu warten und zu erweitern macht. Während es einige Anpassungen der Benutzer-Workflows erfordert, insbesondere beim Datenimport, ebnet es den Weg für die zukünftige Entwicklung dieses leistungsstarken Buchhaltungstools.

Das Beancount-Ökosystem: Eine umfassende Analyse

· 34 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Kernfunktionalität und Philosophie von Beancount

Beancount ist ein Open-Source-System für doppelte Buchführung, das Klartextdateien zur Erfassung von Transaktionen verwendet. Im Kern betrachtet Beancount Ihr Hauptbuch als einen Datensatz, der durch eine einfache, strikte Grammatik definiert ist. Jedes Finanzereignis (Transaktionen, Kontoeröffnungen, Rohstoffpreise usw.) ist eine Direktive in einer Textdatei, die Beancount in eine In-Memory-Datenbank von Einträgen parst. Dieses Design erzwingt das Prinzip der doppelten Buchführung: Jede Transaktion muss Soll und Haben über die Konten hinweg ausgleichen. Das Ergebnis ist ein hochtransparentes und prüfbares Hauptbuch, das Sie einfach versionskontrollieren, inspizieren und abfragen können.

2025-04-15-beancount-ecosystem

Philosophie – Korrektheit und Minimalismus: Beancounts Design priorisiert Datenintegrität und Einfachheit. Sein Schöpfer, Martin Blais, beschreibt Beancount als „pessimistisch“ in der Annahme, dass der Benutzer Fehler machen wird, und erlegt daher zusätzliche Prüfungen und Einschränkungen auf. Beispielsweise erlaubt Beancount nicht, Vermögenswerte zu entfernen, die nie hinzugefügt wurden (was negative Bestände oder Kassenbestände verhindert), und kann durchsetzen, dass jedes Konto vor der Verwendung eröffnet wird. Es fehlt Ledgers Konzept von „virtuellen“ oder automatisch ausgeglichenen Buchungen – eine bewusste Entscheidung, um vollständig ausgeglichene Einträge zu erzwingen. Beancount „geht aufs Ganze“ bei der Korrektheit mit mehr Gegenprüfungen, als die grundlegende doppelte Buchführung bietet. Dieser vorsichtige Ansatz spricht Benutzer an, die „sich selbst nicht zu sehr vertrauen“ und möchten, dass die Software ihre Fehler abfängt.

Minimale Optionen, maximale Konsistenz: Im Gegensatz zu Ledgers unzähligen Kommandozeilen-Flags und Tuning-Optionen setzt Beancount auf Minimalismus. Es gibt nur sehr wenige globale Optionen, und keine, die die Transaktionssemantik außerhalb der Hauptbuchdatei ändern. Alle Konfigurationen, die die Buchhaltung betreffen (wie Methoden der Anschaffungskostenbasis für Rohstoffe oder Buchungsannahmen), erfolgen in der Datei über Direktiven oder Plugins, wodurch sichergestellt wird, dass das Laden derselben Datei immer die gleichen Ergebnisse liefert, unabhängig davon, wie Berichte generiert werden. Dieses Design vermeidet die Komplexität von Ledgers vielen Stellschrauben und die subtilen Wechselwirkungen zwischen ihnen. Beancounts Philosophie ist, dass ein Buchhaltungstool eine stabile, deterministische Pipeline von der Eingabedatei zu den Berichten sein sollte. Dies wird erreicht, indem das Hauptbuch als ein geordneter Strom von Direktiven behandelt wird, die programmatisch sequenziell verarbeitet werden können. Selbst Dinge, die Ledger als spezielle Syntax behandelt (wie Eröffnungsbilanzen oder Preisangaben), sind erstklassige Direktiven in Beancounts Datenmodell, was das System hochgradig erweiterbar macht.

Erweiterbarkeit über Plugins und Abfragesprache: Beancount ist in Python implementiert und bietet Hooks, um benutzerdefinierte Logik in die Verarbeitungspipeline einzufügen. Benutzer können Plugins in Python schreiben, die auf den Transaktionsstrom wirken (zum Beispiel, um eine benutzerdefinierte Regel durchzusetzen oder automatische Einträge zu generieren). Diese Plugins werden beim Verarbeiten der Datei ausgeführt und erweitern so effektiv die Kernfunktionalität von Beancount, ohne den Quellcode ändern zu müssen. Beancount enthält auch eine leistungsstarke Abfragesprache (inspiriert von SQL), um das Hauptbuch aufzuschlüsseln und zu analysieren. Das bean-query-Tool behandelt das geparste Hauptbuch als Datenbank und ermöglicht es Ihnen, analytische Abfragen darauf auszuführen – zum Beispiel Ausgaben nach Kategorie zu summieren oder alle Transaktionen für einen bestimmten Zahlungsempfänger zu extrahieren. In Beancount 3.x wurde diese Abfragefunktion in ein eigenständiges beanquery-Paket verschoben, aber aus Benutzersicht bietet sie weiterhin flexible Berichterstattung über SQL-ähnliche Abfragen.

Klartext und Versionskontrolle: Als Klartext-Buchhaltungstool betont Beancount die Benutzerkontrolle und die Langlebigkeit der Daten. Das Hauptbuch ist einfach eine .beancount-Textdatei, die Sie in jedem Texteditor bearbeiten können. Das bedeutet, dass Ihre gesamte Finanzhistorie in einer menschenlesbaren Form gespeichert ist und Sie sie in Git oder ein anderes VCS einfügen können, um Änderungen im Laufe der Zeit zu verfolgen. Benutzer halten ihre Beancount-Datei oft unter Versionskontrolle, um einen Audit-Trail jeder Bearbeitung zu führen (mit Commit-Nachrichten, die Änderungen beschreiben). Dieser Ansatz stimmt mit Beancounts Philosophie überein, dass Buchhaltungsdaten, insbesondere persönliche oder Kleinunternehmensfinanzen, transparent und „zukunftssicher“ sein sollten – nicht in einer proprietären Datenbank gesperrt. In Martin Blais' eigenen Worten ist Beancount ein „Herzensprojekt“, das entwickelt wurde, um einfach, langlebig und kostenlos für die Gemeinschaft zu sein. Es wurde erstmals um 2007 entwickelt und hat sich durch größere Überarbeitungen (v1 zu v2 und jetzt v3 im Jahr 2024) weiterentwickelt, um sein Design zu verfeinern, während seine Kernphilosophie des Minimalismus und der Korrektheit bewahrt wurde.

Werkzeuge, Plugins und Erweiterungen im Beancount-Ökosystem

Das Beancount-Ökosystem hat eine reichhaltige Auswahl an Werkzeugen, Plugins und Erweiterungen hervorgebracht, die die Kernfunktionalität des Hauptbuchs erweitern. Diese umfassen den Datenimport, die Bearbeitung von Hauptbüchern, die Berichtsansicht und die Ergänzung um spezialisierte Buchhaltungsfunktionen. Im Folgenden finden Sie eine Übersicht über die wichtigsten Komponenten und Add-ons in der Beancount-Welt:

Dienstprogramme für den Datenimport (Importprogramme)

Eines der wichtigsten Bedürfnisse für die praktische Anwendung ist der Import von Transaktionen von Banken, Kreditkarten und anderen Finanzinstituten. Beancount bietet zu diesem Zweck ein Import-Framework und von der Community beigesteuerte Import-Skripte. In Beancount 2.x wurde das eingebaute Modul beancount.ingest (mit Befehlen wie bean-extract und bean-identify) verwendet, um Import-Plugins in Python zu definieren und auf heruntergeladene Kontoauszüge anzuwenden. In Beancount 3.x wurde dies durch ein externes Projekt namens Beangulp ersetzt. Beangulp ist ein dediziertes Import-Framework, das sich aus beancount.ingest entwickelt hat und nun die empfohlene Methode ist, um den Transaktionsimport für Beancount 3.0 zu automatisieren. Es ermöglicht das Schreiben von Python-Skripten oder Kommandozeilen-Tools, die externe Dateien (wie CSV- oder PDF-Kontoauszüge) lesen und Beancount-Einträge ausgeben. Dieser neue Ansatz entkoppelt die Importlogik vom Beancount-Kern – zum Beispiel wurde der alte Befehl bean-extract in v3 entfernt, und stattdessen erzeugen Ihre Import-Skripte selbst Transaktionen über die CLI-Schnittstelle von Beangulp.

Dutzende von vorgefertigten Importprogrammen existieren für verschiedene Banken und Formate, beigesteuert von der Community. Es gibt Import-Skripte für Institutionen weltweit – von Alipay und WeChat Pay in China über verschiedene europäische Banken (Commerzbank, ING, ABN AMRO usw.) bis hin zu US-Banken wie Chase und Amex. Viele davon sind in öffentlichen Repositories (oft auf GitHub) oder in Paketen wie beancount-importers gesammelt. Zum Beispiel bietet das Projekt Tarioch Beancount Tools (tariochbctools) Importprogramme für Schweizer und britische Banken und verarbeitet sogar Krypto-Transaktionsimporte. Ein weiteres Beispiel ist Lazy Beancount, das ein Set gängiger Importprogramme (für Wise, Monzo, Revolut, IBKR usw.) bündelt und ein Docker-basiertes Setup für einfache Automatisierung bereitstellt. Egal welche Bank oder welchen Finanzdienst Sie nutzen, die Chancen stehen gut, dass jemand bereits ein Beancount-Importprogramm dafür geschrieben hat – oder Sie können Ihr eigenes mit dem Framework von Beangulp schreiben. Die Flexibilität von Python bedeutet, dass Importprogramme das Parsen von CSV-/Excel-Dateien, OFX-/QIF-Downloads oder sogar das Scrapen von APIs übernehmen und dann Transaktionen im standardisierten Beancount-Format ausgeben können.

Bearbeitung und Editor-Integration

Da Beancount-Ledger reiner Text sind, nutzen Anwender oft ihre bevorzugten Texteditoren oder IDEs, um sie zu pflegen. Das Ökosystem bietet Plugins zur Editor-Unterstützung, um diese Erfahrung reibungsloser zu gestalten. Es gibt Erweiterungen für viele beliebte Editoren, die Syntaxhervorhebung, Autovervollständigung von Kontonamen und Echtzeit-Fehlerprüfung bieten:

  • Emacs Beancount-Mode: Ein Emacs Major Mode (beancount-mode) ist zum Bearbeiten von .beancount-Dateien verfügbar und bietet Funktionen wie Syntaxfärbung und Integration mit Beancounts Prüfprogramm. Er kann sogar bean-check im Hintergrund ausführen, sodass Fehler im Ledger (wie eine unausgeglichene Transaktion) während der Bearbeitung markiert werden.
  • VS Code Extension: Eine Beancount-Erweiterung auf dem VSCode Marketplace bietet ähnliche Annehmlichkeiten für Visual Studio Code-Benutzer. Sie unterstützt Syntaxhervorhebung, Ausrichtung von Beträgen, Autovervollständigung für Konten/Zahlungsempfänger und sogar sofortige Saldenprüfungen beim Speichern der Datei. Sie kann auch mit Fava integriert werden, sodass Sie die Fava-Weboberfläche direkt aus VSCode starten können.
  • Plugins oder Modi existieren auch für Vim, Atom und andere Editoren. Zum Beispiel gibt es eine Tree-sitter-Grammatik für Beancount, die die Syntaxhervorhebung in modernen Editoren ermöglicht und sogar in Favas webbasierter Editor-Komponente übernommen wurde. Kurz gesagt, egal welche Bearbeitungsumgebung Sie nutzen, die Community hat wahrscheinlich ein Plugin bereitgestellt, um die Bearbeitung von Beancount-Dateien bequem und fehlerfrei zu gestalten.

Für die schnelle Erfassung von Transaktionen außerhalb traditioneller Editoren gibt es auch Tools wie Bean-add und mobile Apps. Bean-add ist ein Kommandozeilen-Tool, das das Hinzufügen einer neuen Transaktion über eine Eingabeaufforderung oder einen Einzeiler ermöglicht und dabei Datum- und Kontovorschläge berücksichtigt. Auf Mobilgeräten bietet ein Projekt namens Beancount Mobile eine einfache Benutzeroberfläche zur Eingabe von Transaktionen unterwegs (zum Beispiel die Erfassung eines Barkaufs von Ihrem Telefon aus). Zusätzlich existiert ein Beancount Telegram Bot, um Transaktionen per Nachricht zu erfassen – Sie können eine Nachricht mit Transaktionsdetails senden, und der Bot formatiert diese in Ihre Ledger-Datei.

Web-Frontends und Visualisierungstools

(Fava) Favas Weboberfläche bietet ein interaktives Dashboard für Beancount, mit Berichten wie einer Gewinn- und Verlustrechnung mit Visualisierungen (hier als Treemap der Ausgaben nach Kategorie dargestellt) neben Tabellen von Konten und Salden.

Das Vorzeige-Frontend für Beancount ist Fava, eine moderne Weboberfläche. Fava läuft als lokale Web-App, die Ihre Beancount-Datei liest und ein reichhaltiges interaktives Erlebnis in Ihrem Browser erzeugt. Es bietet eine vollständige Palette von Berichten: Bilanz, Gewinn- und Verlustrechnung, Nettovermögen im Zeitverlauf, Portfoliobestände, Performance-Diagramme, Budgets und mehr – alles sofort einsatzbereit. Benutzer nennen Fava oft als Hauptgrund, Beancount gegenüber anderen Klartext-Buchhaltungstools zu bevorzugen. Mit einem einzigen Befehl (fava ledger.beancount) können Sie Ihre Finanzen mit Grafiken und Tabellen anstelle von Text durchsuchen. Fava unterstützt Funktionen wie: das Aufschlüsseln von Konten, das Filtern von Transaktionen nach Zahlungsempfänger oder Tag, einen Abfrage-Editor (damit Sie Beancount-Abfragen ausführen und die Ergebnisse im Browser sehen können) und sogar einen integrierten webbasierten Editor für Ihr Hauptbuch. Es ist sehr benutzerfreundlich und macht die Klartext-Buchhaltung auch für diejenigen zugänglich, die visuelle Oberflächen bevorzugen.

Unter der Haube ist Fava in Python (Flask im Backend) und JavaScript (Svelte im Frontend) geschrieben. Es hat einen eigenen Release-Zyklus und wird aktiv gepflegt. Bemerkenswert ist, dass Fava mit der Entwicklung von Beancount Schritt gehalten hat – zum Beispiel hat Fava 1.30 Unterstützung für Beancount v3 hinzugefügt und intern auf die Verwendung der neuen Pakete beanquery und beangulp umgestellt. (Es unterstützt weiterhin Beancount 2 für ältere Hauptbücher.) Favas Fokus auf Benutzerfreundlichkeit umfasst nette Details wie die Autovervollständigung im Web-Editor und eine elegante Benutzeroberfläche mit Dunkelmodus und responsiven Diagrammen. Es gibt auch einen Ableger namens Fava-GTK, der Fava in einer Desktop-Anwendung für GNOME/Linux-Benutzer verpackt, die ein natives App-Gefühl bevorzugen.

Neben Fava existieren weitere Visualisierungs- und Analyseoptionen. Da Beancount-Daten als Tabellen exportiert oder abgefragt werden können, nutzen Benutzer oft Tools wie Jupyter-Notebooks oder Pandas für benutzerdefinierte Analysen. Zum Beispiel beschreibt ein Benutzer, wie er Daten aus Beancount über die Abfrageschnittstelle in ein Pandas DataFrame zieht, um einen benutzerdefinierten Bericht zu erstellen. Es gibt auch von der Community beigesteuerte Skripte für spezifische Berichte – z. B. ein Tool zur Portfolioallokationsanalyse oder ein Prozesskontroll-Diagramm für Ausgaben im Vergleich zum Nettovermögen. Für die meisten Menschen bietet Fava jedoch mehr als genug Berichtsleistung, ohne dass Code geschrieben werden muss. Es unterstützt sogar Erweiterungen: Sie können Python-Dateien einfügen, die neue Berichtsseiten oder Diagramme zu Fava hinzufügen. Eine bemerkenswerte Erweiterung ist fava-envelope für das Umschlag-Budgeting innerhalb von Fava. Insgesamt dient Fava als zentrale Visualisierungsdrehscheibe des Beancount-Ökosystems.

Kommandozeilen-Dienstprogramme und Skripte

Beancount wird mit verschiedenen Kommandozeilen-Tools (insbesondere im älteren v2-Zweig, von denen einige in v3 gestrafft wurden) geliefert. Diese Tools arbeiten mit Ihrer Hauptbuchdatei, um sie zu prüfen oder spezifische Berichte in Text- oder HTML-Format zu generieren:

  • bean-check: Ein Validator, der die Datei auf Syntaxfehler oder Buchhaltungsfehler prüft. Das Ausführen von bean-check myfile.beancount macht Sie auf Ungleichgewichte, fehlende Konten oder andere Probleme aufmerksam und gibt nichts aus, wenn die Datei fehlerfrei ist.
  • bean-format: Ein Formatierer, der Ihr Hauptbuch aufräumt, indem er Zahlen in saubere Spalten ausrichtet, ähnlich wie ein Code-Formatierer Quellcode formatiert. Dies hilft, die Datei sauber und lesbar zu halten.
  • bean-query: Eine interaktive Shell oder ein Batch-Tool, um Beancounts Abfragesprache auf Ihrem Hauptbuch auszuführen. Sie können es verwenden, um benutzerdefinierte Tabellenberichte zu erstellen (z. B. bean-query myfile.beancount "SELECT account, sum(amount) WHERE ...").
  • bean-report: Ein vielseitiger Berichtsgenerator (in v2), der vordefinierte Berichte (Bilanz, Gewinn- und Verlustrechnung, Saldenbilanz usw.) auf der Konsole oder in Dateien ausgeben kann. Zum Beispiel würde bean-report file.beancount balances die Kontostände ausgeben. (In der Praxis wurden viele dieser Textberichte durch Favass schönere Präsentation ersetzt.)
  • bean-web / bean-bake: Eine ältere Weboberfläche, die die Berichte auf localhost bereitstellen oder sie als statische HTML-Dateien „backen“ würde. Diese wurden hauptsächlich verwendet, bevor Fava populär wurde; bean-web bot eine grundlegende Webansicht der gleichen Berichte, die bean-report generieren konnte. In Beancount 3 wurde bean-web entfernt (da Fava jetzt das empfohlene Web-Frontend ist und eine überlegene Erfahrung bietet).
  • bean-example: Ein Dienstprogramm zum Generieren einer Beispiel-Hauptbuchdatei (nützlich für Neueinsteiger, um eine Vorlage für Beancount-Einträge zu sehen).
  • bean-doctor: Ein Debugging-Tool, das Probleme in Ihrem Hauptbuch oder Ihrer Umgebung diagnostizieren kann.

Es ist erwähnenswert, dass mit Beancount v3 viele dieser Tools aus dem Kernprojekt ausgelagert wurden. Das Kernpaket von Beancount wurde gestrafft, und Tools wie die Abfrage-Engine und Importeure wurden in separate Pakete (beanquery, beangulp usw.) aufgeteilt, um die Wartung zu erleichtern. Zum Beispiel wird die Funktionalität von bean-query jetzt durch das Tool beanquery bereitgestellt, das separat installiert wird. Aus Nutzersicht bleibt die Funktionalität verfügbar; sie wurde lediglich modularisiert. Die Arch Linux-Community bemerkte diese Änderung beim Aktualisieren von Fava: Das Fava-Paket fügte Abhängigkeiten von beanquery und beangulp hinzu, um Beancount 3.x zu unterstützen. Dieser modulare Ansatz ermöglicht es auch anderen in der Community, unabhängiger vom Beancount-Release-Zyklus zu diesen Hilfswerkzeugen beizutragen.

Beancount-Plugins und -Erweiterungen

Eine herausragende Stärke des Beancount-Ökosystems ist das Plugin-System. Durch das Hinzufügen einer Zeile plugin "module.name" in Ihrer Beancount-Datei können Sie benutzerdefinierte Python-Logik integrieren, die während der Ledger-Verarbeitung ausgeführt wird. Die Community hat viele Plugins erstellt, um Beancounts Funktionen zu erweitern:

  • Datenqualität und Regeln: Beispiele sind beancount-balexpr, mit dem Sie Gleichungen überprüfen können, die mehrere Konten betreffen (z. B. Vermögenswert A + Vermögenswert B = Verbindlichkeit X), und beancount-checkclosed, das automatisch Saldenprüfungen einfügt, wenn Sie ein Konto schließen, um sicherzustellen, dass es auf Null saldiert. Es gibt sogar ein Plugin, das sicherstellt, dass Transaktionen in der Datei nach Datum sortiert sind (autobean.sorted), um Einträge außerhalb der Reihenfolge zu erkennen.
  • Automatisierung: Das beancount-asset-transfer-Plugin kann Sachübertragungsbuchungen zwischen Konten generieren (nützlich für die Übertragung von Aktien zwischen Brokern unter Beibehaltung der Anschaffungskostenbasis). Ein weiteres Plugin, autobean.xcheck, gleicht Ihr Beancount-Ledger mit externen Kontoauszügen auf Abweichungen ab.
  • Wiederkehrende Transaktionen und Budgets: Das „Wiederholungs“- oder Interpolations-Plugin von Akuukis ermöglicht die Definition wiederkehrender Transaktionen oder die Verteilung einer jährlichen Ausgabe über Monate. Für die Budgetierung unterstützt die fava-envelope-Erweiterung (über Fava verwendet) die Umschlag-Budgetierungsmethode im Klartext. Es gibt auch MiniBudget von Frank Davies – ein kleines eigenständiges Tool, inspiriert von Beancount, das bei der Budgetierung für den persönlichen Gebrauch oder kleine Unternehmen hilft.
  • Steuern und Berichterstattung: Einige Plugins helfen bei der Steuerbuchhaltung, wie z. B. eines, das Kapitalgewinne automatisch in kurz- oder langfristig klassifiziert. Ein weiteres (fincen_114 von Justus Pendleton) generiert einen FBAR-Bericht für US-Steuerzahler mit ausländischen Konten und veranschaulicht, wie Beancount-Daten für die regulatorische Berichterstattung genutzt werden können.
  • Plugin-Sammlungen der Community: Es gibt kuratierte Plugin-Sets wie beancount-plugins (von Dave Stephens), die sich auf Dinge wie Abschreibungsbuchungen konzentrieren, und beancount-plugins-zack (von Stefano Zacchiroli), die verschiedene Hilfsfunktionen wie Sortierungsdirektiven enthalten.

Zusätzlich zu den Plugins gibt es weitere Dienstprogramme rund um Beancount, die spezifische Bedürfnisse ansprechen. Zum Beispiel ist beancount-black ein Auto-Formatierer, ähnlich dem Black Code-Formatierer, aber für Beancount-Ledger-Dateien. Es gibt einen Beancount Bot (Telegram/Mattermost) zum Hinzufügen von Transaktionen per Chat, wie bereits erwähnt, und einen Alfred-Workflow für macOS, um schnell Transaktionen an Ihre Datei anzuhängen. Ein Tool namens Pinto bietet eine „aufgemotzte“ CLI mit interaktiver Eingabe (wie ein verbesserter bean-add). Für diejenigen, die von anderen Systemen migrieren, existieren Konverter (YNAB2Beancount, CSV2Beancount, GnuCash2Beancount, Ledger2Beancount), um Daten von anderswo zu importieren.

Zusammenfassend lässt sich sagen, dass das Beancount-Ökosystem recht umfangreich ist. Tabelle 1 unten listet einige wichtige Tools und Erweiterungen mit ihren Funktionen auf:

| Tool/Erweiterung | Beschreibung

Vergleich mit Ledger, hledger und ähnlichen Systemen

Beancount gehört zur Familie der Reintext-Tools für die doppelte Buchführung, unter denen Ledger CLI (John Wiegley’s Ledger) und hledger prominent sind. Während all diese Systeme die Kernidee von Reintext-Ledger-Dateien und doppelter Buchführung teilen, unterscheiden sie sich in Syntax, Philosophie und Reifegrad des Ökosystems. Die folgende Tabelle hebt die wichtigsten Unterschiede zwischen Beancount, Ledger und hledger hervor:

AspektBeancount (Python)Ledger CLI (C++)hledger (Haskell)
Syntax & DateistrukturStrenge, strukturierte Syntax, definiert durch eine formale Grammatik (BNF). Transaktionen haben explizite Zeilen mit Datum Flag "Zahlungsempfänger" "Beschreibung" und Buchungen mit Mengen; alle Konten müssen explizit eröffnet/definiert werden. Keine impliziten Buchungen; jede Transaktion muss ausgeglichen sein.Freiere Syntax. Zahlungsempfänger/Beschreibung typischerweise auf derselben Zeile wie das Datum. Erlaubt einen gewissen impliziten Ausgleich (z. B. kann eine Einzelbuchung eine zweite Buchung auf ein Standardkonto implizieren). Kontonamen können ohne vorherige Deklaration verwendet werden. Bietet viele Kommandozeilenoptionen, die das Parsen beeinflussen können (z. B. Jahresannahmen, Regeln zur Zusammenführung von Waren).Folgt weitgehend der Syntax von Ledger mit geringfügigen Unterschieden. hledger ist eine Neuimplementierung der Kernfunktionen von Ledger in Haskell, daher ist das Journalformat dem von Ledger sehr ähnlich (mit einigen Erweiterungen und standardmäßig strengerer Analyse). Zum Beispiel ist hledger etwas strenger bei Datums- und Warensyntax als Ledger, aber nicht so streng wie Beancount.
PhilosophieKonservativ & Pedantisch. Legt größten Wert darauf, Benutzerfehler abzufangen und die Datenintegrität zu wahren. Erzwingt standardmäßig viele Prüfungen (Saldenprüfungen, Chargenverfolgung). Minimale Konfiguration – ein „Ein Weg, es zu tun“-Ansatz für Konsistenz. Als Bibliothek mit Plugins für Erweiterbarkeit konzipiert (behandelt Ledger-Daten als einen zu verarbeitenden Stream, was benutzerdefinierte Python-Logik ermöglicht).Optimistisch & Flexibel. Vertraut darauf, dass der Benutzer Daten korrekt eingibt; weniger integrierte Einschränkungen standardmäßig. Hochgradig anpassbar mit Dutzenden von Optionen und Kommandozeilen-Flags zur Anpassung des Verhaltens. Tendiert dazu, ein monolithisches Werkzeug mit integrierten Funktionen (Berichte, Diagramme) zu sein und verwendet eine domänenspezifische Sprache innerhalb des Ledgers für Dinge wie automatisierte Transaktionen und periodische Transaktionen. Erweiterbarkeit erfolgt typischerweise über externe Skripte oder die integrierte Abfragesprache statt über Plugin-APIs.Pragmatisch & Konsistent. Zielt darauf ab, Ledgers Ansatz einem breiteren Publikum mit vorhersehbarem Verhalten näherzubringen. hledger ist standardmäßig konsistenter (keine Ausgleichsannahmen ohne explizite Konten) und hat weniger Fallstricke als Ledgers nachsichtigste Modi. Es verfügt über eine Teilmenge der Ledger-Funktionen (einige von Ledgers exotischeren Optionen werden nicht unterstützt), fügt aber einige eigene hinzu (wie eine Weboberfläche und integrierten CSV-Import). Betont Stabilität und Korrektheit, jedoch ohne ein Plugin-System wie Beancount.
Transaktionen & AusgleichStrenge doppelte Buchführung: Jede Transaktion muss gleiche Soll- und Haben-Gesamtbeträge aufweisen. Erlaubt keine unausgeglichenen Einträge oder Platzhalter (keine „virtuellen Buchungen“, die sich automatisch ausgleichen). Erzwingt auch die Reihenfolgeunabhängigkeit: Das Ledger kann beliebig nach Datum sortiert werden, da Saldenprüfungen datumsbezogen sind und nicht von der Dateireihenfolge abhängen. Die Kostenverfolgung für Waren ist rigoros – beim Verkauf von Vermögenswerten müssen Chargen angegeben werden, oder Beancount erzwingt FIFO/LIFO, sodass nichts entfernt werden kann, was nicht hinzugefügt wurde.Erlaubt mehr Nachsicht bei Transaktionen. Ledger erlaubt „virtuelle“ Buchungen (mit eckigen Klammern [ ] oder runden Klammern), die kein explizites Ausgleichskonto erfordern – oft zur Handhabung von Budgetierung oder implizitem Eigenkapitalausgleich verwendet. Es ist in Ledger möglich, eine unvollständige Transaktion einzugeben (eine Seite wegzulassen) und Ledger den Ausgleichsbetrag ableiten zu lassen. Außerdem erzwingt Ledger die chargenweise Vermögensentnahme nicht streng; es wird bereitwillig von einem aggregierten Warenbestand abziehen, auch wenn spezifische Chargen nicht verfolgt wurden. Dies erleichtert beispielsweise die Durchschnittskostenrechnung, bedeutet aber, dass Ledger Sie nicht von Fehlern abhält, wie dem Verkauf von mehr Anteilen, als Sie in einer bestimmten Charge haben.
Inventar & AnschaffungskostenbasisPräzise Chargenverfolgung. Beancount fügt Kosteninformationen zu Warenchargen hinzu (z. B. Kauf von 10 Anteilen zu je 100 $), und bei der Reduzierung eines Bestands erfordert es den Abgleich einer spezifischen Charge oder die Verwendung einer definierten Strategie. Es stellt sicher, dass Kapitalgewinne und Anschaffungskostenbasen designbedingt korrekt berechnet werden. Die Durchschnittskostenmethode ist nicht die Standardeinstellung, es sei denn, Sie schreiben explizit Logik dafür, da Beancount jede Charge separat behandelt, um die Genauigkeit zu wahren.Abstrakteres Inventar. Ledger behandelt Warenmengen flüssiger; standardmäßig werden alle Chargen in Berichten zusammengeführt (es zeigt nur Gesamtquantitäten). Es bietet Optionen, bei Bedarf nach Charge oder Durchschnittskosten zu berichten, aber dies ist ein Berichtsbelang. Historisch gesehen verwendete Ledger keine Kosteninformationen, um den Ausgleich bei Mehrwarentransaktionen zu erzwingen, was zu subtilen Fehlberechnungen von Kapitalgewinnen führen konnte. Ledgers Flexibilität ermöglicht es den Benutzern jedoch, FIFO, LIFO, Durchschnitt usw. zur Berichtszeit über Kommandozeilen-Flags zu wählen.
Berichterstattung & BenutzeroberflächePrimär über Fava (Web-Benutzeroberfläche) und bean-query/bean-report. Fava bietet ein poliertes Web-Dashboard mit Grafiken und Diagrammen, was Beancount für die Analyse sehr benutzerfreundlich macht. Unterstützt auch Textberichte und SQL-ähnliche Abfragen über bean-query. Keine offizielle TUI (Text-Benutzeroberfläche), aber die Integration von Editoren/IDEs füllt diese Lücke.Primär CLI-basierte Berichterstattung. Ledger verfügt über viele integrierte Berichts-Befehle (balance, register, stats usw.), die Text an das Terminal ausgeben. Es kann Diagramme (ASCII oder über gnuplot) erstellen und hat sogar einige Add-ons für HTML-Berichte, aber es hat keine offizielle Weboberfläche, die als Teil des Projekts gepflegt wird. (Es gab Drittanbieter-Versuche für Web-Benutzeroberflächen für Ledger, aber keine so prominent wie Fava für Beancount.) Für eine Benutzeroberfläche verlassen sich Benutzer auf das Terminal oder vielleicht GUIs wie Ledger-Live (ein separates Projekt).Bietet sowohl CLI als auch eine einfache Web-Benutzeroberfläche. hledger erbt Ledgers CLI-Berichte (mit ähnlichen Befehlen) und bietet zusätzlich **hledger

Anwendungsszenarien für Beancount

Beancount ist vielseitig genug, um sowohl für die Verwaltung privater Finanzen als auch (in einigen Fällen) für die Buchhaltung kleiner Unternehmen eingesetzt zu werden. Sein grundlegendes Prinzip der doppelten Buchführung ist in beiden Szenarien dasselbe, aber Umfang und spezifische Praktiken können sich unterscheiden.

Persönliche Finanzen

Viele Beancount-Nutzer verwenden es, um ihre individuellen oder Haushaltsfinanzen zu verwalten. Ein typisches Setup für persönliche Finanzen in Beancount könnte Konten für Giro- und Sparkonten, Kreditkarten, Investitionen, Darlehen, Einnahmekategorien (Gehalt, Zinsen usw.) und Ausgabenkategorien (Miete, Lebensmittel, Unterhaltung usw.) umfassen. Nutzer erfassen alltägliche Transaktionen entweder manuell (Eingabe von Belegen, Rechnungen usw.) oder durch den Import aus Kontoauszügen mithilfe der zuvor besprochenen Import-Tools. Die Vorteile, die Beancount für die persönlichen Finanzen bietet, sind:

  • Konsolidierung und Analyse: Alle Ihre Transaktionen können in einer einzigen Textdatei (oder einer Reihe von Dateien) gespeichert werden, die Jahre Ihrer Finanzhistorie abbildet. Dies erleichtert die Analyse langfristiger Trends. Mit Beancounts Abfragesprache oder mit Fava können Sie Fragen wie „Wie viel habe ich in den letzten 5 Jahren für Reisen ausgegeben?“ oder „Wie hoch ist meine durchschnittliche monatliche Lebensmittelrechnung?“ in Sekundenschnelle beantworten. Ein Nutzer bemerkte, dass nach dem Wechsel zu Beancount die „Analyse von Finanzdaten (Ausgaben, Spenden, Steuern usw.) trivial“ sei, entweder über Fava oder durch Abfragen der Daten und die Verwendung von Tools wie Pandas. Im Wesentlichen wird Ihr Hauptbuch zu einer persönlichen Finanzdatenbank, die Sie nach Belieben abfragen können.
  • Budgetierung und Planung: Obwohl Beancount kein Budgetierungssystem vorschreibt, können Sie eines implementieren. Einige Nutzer betreiben Umschlagbudgetierung, indem sie Budgetkonten erstellen oder das fava-envelope-Plugin verwenden. Andere nutzen einfach periodische Berichte, um Ausgaben mit Zielen zu vergleichen. Da es sich um Klartext handelt, ist die Integration von Beancount mit externen Budgetierungstools oder Tabellenkalkulationen unkompliziert (Datenexport oder Verwendung von CSV-Ausgaben aus Abfragen).
  • Investitionen und Vermögensverfolgung: Beancount eignet sich hervorragend zur Verfolgung von Investitionen dank seiner robusten Handhabung von Anschaffungskosten und Marktpreisen. Sie können Käufe/Verkäufe von Aktien, Krypto usw. mit Kostendetails erfassen und dann Prices-Direktiven verwenden, um den Marktwert zu verfolgen. Fava kann ein Diagramm des Nettovermögens im Zeitverlauf und eine Portfolioaufschlüsselung nach Anlageklassen anzeigen. Dies ist äußerst nützlich für die persönliche Vermögensverwaltung – Sie erhalten Einblicke, die denen kommerzieller Tools wie Mint oder Personal Capital ähneln, aber vollständig unter Ihrer Kontrolle. Die Unterstützung mehrerer Währungen ist ebenfalls integriert, sodass Beancount, wenn Sie Fremdwährungen oder Krypto halten, diese verfolgen und für die Berichterstattung umrechnen kann.
  • Abstimmung und Genauigkeit: Persönliche Finanzen beinhalten oft die Abstimmung mit Kontoauszügen. Mit Beancount kann man Konten regelmäßig durch die Verwendung von Saldenbestätigungen oder der Dokumentenfunktion abstimmen. Zum Beispiel könnten Sie jeden Monat einen balance Assets:Bank:Checking <date> <balance>-Eintrag hinzufügen, um zu bestätigen, dass Ihr Hauptbuch mit dem Kontoauszug der Bank zum Monatsende übereinstimmt. Das bean-check-Tool (oder Favas Fehleranzeige) wird Sie benachrichtigen, wenn etwas nicht übereinstimmt. Ein Nutzer erwähnt, dass er monatlich alle Konten abstimmt, was „hilft, ungewöhnliche Aktivitäten zu erkennen“ – eine gute Praxis der persönlichen Finanzhygiene, die Beancount erleichtert.
  • Automatisierung: Technikaffine Personen haben große Teile ihres persönlichen Finanzworkflows mit Beancount automatisiert. Mithilfe von Importern, Cron-Jobs und vielleicht ein wenig Python können Sie Ihr System so einrichten, dass beispielsweise täglich Ihre Banktransaktionen abgerufen (einige verwenden OFX oder APIs) und Ihrer Beancount-Datei hinzugefügt werden, nach Regeln kategorisiert. Mit der Zeit wird Ihr Hauptbuch größtenteils automatisch aktualisiert, und Sie müssen es nur noch bei Bedarf überprüfen und anpassen. Ein Community-Mitglied auf Hacker News teilte mit, dass ihre Beancount-Bücher nach 3 Jahren zu „95 % automatisch“ waren. Dieses Maß an Automatisierung ist aufgrund der Klartext-Offenheit und der Skripting-Fähigkeiten von Beancount möglich.

Nutzer im Bereich persönliche Finanzen entscheiden sich oft für Beancount gegenüber Tabellenkalkulationen oder Apps, weil es ihnen die vollständige Datenhoheit gibt (keine Abhängigkeit von einem Cloud-Dienst, der eingestellt werden könnte – ein Anliegen, da Mint beispielsweise eingestellt wurde) und weil die Tiefe der Einblicke größer ist, wenn alle Daten integriert sind. Die Lernkurve ist nicht trivial – man muss grundlegende Buchhaltung und die Beancount-Syntax lernen – aber Ressourcen wie die offizielle Dokumentation und Community-Tutorials helfen Neulingen beim Einstieg. Einmal eingerichtet, empfinden viele es als beruhigend, jederzeit ein klares, vertrauenswürdiges Bild ihrer Finanzen zu haben.

Buchhaltung für Kleinunternehmen

Die Nutzung von Beancount für ein Kleinunternehmen (oder eine gemeinnützige Organisation, einen Verein usw.) ist weniger verbreitet als die private Nutzung, aber durchaus möglich, und einige haben dies erfolgreich getan. Beancounts doppelte Buchführung ist im Grunde dasselbe System, das der Unternehmensbuchhaltung zugrunde liegt, nur ohne einige der höherwertigen Funktionen, die spezielle Buchhaltungssoftware bietet (wie Rechnungsmodule oder Lohnbuchhaltungs-Integrationen). So passt Beancount in den Kontext eines Kleinunternehmens:

  • Hauptbuch und Finanzberichte: Ein Kleinunternehmen kann die Beancount-Datei als sein Hauptbuch behandeln. Sie hätten Aktivkonten für Bankkonten, Forderungen aus Lieferungen und Leistungen, vielleicht Lagerbestände; Passivkonten für Kreditkarten, Darlehen, Verbindlichkeiten aus Lieferungen und Leistungen; Eigenkapital für das Eigentümerkapital; Ertragskonten für Verkäufe oder Dienstleistungen; und Aufwandskonten für alle Geschäftsausgaben. Durch die Führung dieses Hauptbuchs können Sie jederzeit eine Gewinn- und Verlustrechnung (GuV) und eine Bilanz erstellen, indem Sie Beancounts Berichte oder Abfragen verwenden. Tatsächlich können Beancounts integrierte Berichte oder Fava in Sekundenschnelle eine Bilanz und GuV generieren, die perfekt den Rechnungslegungsgrundsätzen entsprechen. Dies kann für einen kleinen Betrieb ausreichen, um Rentabilität, Finanzlage und Cashflow zu beurteilen (mit ein wenig Abfrage für den Cashflow, da direkte Kapitalflussrechnungen nicht integriert sind, aber abgeleitet werden können).
  • Rechnungen und Forderungen/Verbindlichkeiten (A/R, A/P): Beancount verfügt über kein integriertes Rechnungssystem; Benutzer würden die Rechnungsstellung typischerweise extern handhaben (z. B. Rechnungen in Word oder einer Rechnungs-App erstellen) und die Ergebnisse dann in Beancount erfassen. Wenn Sie beispielsweise eine Rechnung ausstellen, würden Sie einen Buchungssatz erfassen, der das Konto „Forderungen aus Lieferungen und Leistungen“ belastet und das Konto „Erträge“ gutschreibt. Wenn die Zahlung eingeht, belasten Sie „Kasse/Bank“ und schreiben „Forderungen aus Lieferungen und Leistungen“ gut. Auf diese Weise können Sie den Überblick über ausstehende Forderungen behalten, indem Sie den Saldo des A/R-Kontos überprüfen. Dasselbe gilt für Rechnungen (A/P). Obwohl dies manueller ist als spezialisierte Buchhaltungssoftware (die möglicherweise Erinnerungen sendet oder sich in E-Mails integriert), ist es durchaus machbar. Einige Benutzer haben Vorlagen oder Workflows geteilt, wie sie Rechnungen mit Beancount verwalten und sicherstellen, dass sie keine offenen Rechnungen übersehen (zum Beispiel durch die Verwendung von Metadaten oder benutzerdefinierten Abfragen, um unbezahlte Rechnungen aufzulisten).
  • Lagerbestand oder Wareneinsatz: Für Unternehmen, die Produkte verkaufen, kann Beancount Lagerbestands-Käufe und -Verkäufe verfolgen, erfordert aber disziplinierte Buchungen. Sie könnten die Inventory- und Kostenrechnungsfunktionen nutzen: Der Kauf von Lagerbeständen erhöht ein Aktivkonto (mit Kosten, die den Artikeln zugeordnet sind), der Verkauf verschiebt die Kosten auf einen Aufwand (Wareneinsatz) und erfasst Einnahmen. Da Beancount auf der Zuordnung von Losen besteht, wird es eine korrekte Reduzierung des Lagerbestands mit den richtigen Kosten erzwingen, was bei richtiger Durchführung tatsächlich die Genauigkeit Ihrer Bruttogewinnberechnungen sicherstellen kann. Es gibt jedoch keine automatisierte SKU-Verfolgung oder Ähnliches – alles erfolgt auf finanzieller Ebene (Menge und Kosten).
  • Lohnbuchhaltung und komplexe Transaktionen: Beancount kann Lohnbuchhaltungstransaktionen (Gehaltsaufwand, Steuereinbehalte usw.) erfassen, aber die Berechnung dieser Zahlen könnte extern oder über ein anderes Tool erfolgen und dann einfach in Beancount gebucht werden. Für ein sehr kleines Unternehmen (z. B. ein oder zwei Mitarbeiter) ist dies überschaubar. Sie würden beispielsweise pro Gehaltsperiode einen einzigen Journaleintrag erfassen, der Löhne, einbehaltene Steuern, Arbeitgebersteueraufwand, ausgezahlte Barmittel usw. aufschlüsselt. Dies manuell zu tun, ähnelt der Vorgehensweise in QuickBooks-Journaleinträgen – es erfordert Kenntnisse darüber, welche Konten betroffen sind.
  • Mehrbenutzer und Prüfung: Eine Herausforderung im Geschäftsumfeld besteht darin, wenn mehrere Personen auf die Bücher zugreifen müssen oder ein Buchhalter diese überprüfen muss. Da Beancount eine Textdatei ist, ist es nicht in Echtzeit mehrbenutzerfähig. Das Hosten der Datei in einem Git-Repository kann jedoch die Zusammenarbeit ermöglichen: Jede Person kann bearbeiten und committen, und Unterschiede können zusammengeführt werden.
  • Regulatorische Compliance: Für die Steuererklärung oder Compliance können Beancounts Daten zur Erstellung der notwendigen Berichte verwendet werden, dies kann jedoch benutzerdefinierte Abfragen oder Plugins erfordern. Wir sahen ein Beispiel für ein Community-Plugin für die Compliance-Berichterstattung der indischen Regierung und eines für die FinCEN FBAR-Berichterstattung. Dies zeigt, dass Beancount mit Aufwand an spezifische Berichtsanforderungen angepasst werden kann. Kleinunternehmen in Jurisdiktionen mit einfachen Anforderungen (Einnahmen-Überschuss-Rechnung oder einfache Abgrenzung) können ihre Bücher sicherlich in Beancount führen und Finanzberichte für Steuererklärungen erstellen. Funktionen wie Abschreibungspläne oder Amortisation erfordern jedoch möglicherweise, dass Sie Ihre eigenen Einträge schreiben oder ein Plugin verwenden (Dave Stephens’ Abschreibungs-Plugins helfen beispielsweise dabei, dies zu automatisieren). Es gibt keine GUI, um „Anlage abschreiben“ anzuklicken, wie in einigen Buchhaltungssoftwares; Sie würden die Abschreibung als Transaktionen kodieren (was es in gewisser Weise entmystifiziert – alles ist ein Eintrag, den Sie überprüfen können).

In der Praxis haben viele technologieorientierte Kleinunternehmer Beancount (oder Ledger/hledger) verwendet, wenn sie Kontrolle und Transparenz der Bequemlichkeit von QuickBooks vorziehen. Eine Reddit-Diskussion stellte fest, dass Beancount für die Standardbuchhaltung kleiner Unternehmen mit einem begrenzten Transaktionsvolumen gut funktioniert. Der limitierende Faktor ist in der Regel der Komfort – ob der Geschäftsinhaber (oder sein Buchhalter) mit einem textbasierten Tool vertraut ist. Ein Vorteil sind die Kosten: Beancount ist kostenlos, während Buchhaltungssoftware für ein Kleinunternehmen kostspielig sein kann. Andererseits bedeutet das Fehlen offizieller Unterstützung und der DIY-Charakter, dass es am besten für diejenigen geeignet ist, die sowohl Geschäftsinhaber als auch technisch etwas versiert sind. Für Freiberufler oder Einzelunternehmer mit Programmierkenntnissen kann Beancount eine attraktive Wahl sein, um Finanzen zu verwalten, ohne auf Cloud-Buchhaltungsdienste angewiesen zu sein.

Hybride Ansätze sind ebenfalls möglich: Einige Kleinunternehmen verwenden ein offizielles System für Rechnungen oder die Lohnbuchhaltung, importieren die Daten aber regelmäßig in Beancount zur Analyse und Archivierung. Auf diese Weise erhalten sie das Beste aus beiden Welten – Compliance und Einfachheit für den täglichen Betrieb, plus die Leistungsfähigkeit von Beancount für konsolidierte Einblicke.

Zusammenfassend lässt sich sagen, dass Beancount die Buchhaltung kleiner Unternehmen bewältigen kann, vorausgesetzt, der Benutzer ist bereit, Dinge manuell zu verwalten, die kommerzielle Software automatisiert. Es gewährleistet ein hohes Maß an Transparenz – Sie verstehen Ihre Bücher zutiefst, weil Sie sie selbst schreiben – und für einen sorgfältigen Benutzer kann es tadellose Bücher erstellen. Sowohl private als auch geschäftliche Benutzer profitieren von Beancounts Kernstärken: einer zuverlässigen Buchhaltungs-Engine, einem vollständigen Audit-Trail und der Flexibilität, sich an einzigartige Szenarien anzupassen (über Skripte und Plugins). Ob es darum geht, ein Haushaltsbudget oder die Finanzen eines Startups zu verfolgen, Beancount bietet ein Toolkit, um dies mit Präzision und Offenheit zu tun.

Community und Entwicklungsaktivität

Beancount verfügt über eine engagierte Community und eine Entwicklungsgeschichte, die seinen Open-Source-, Nischen-aber-leidenschaftlichen Charakter widerspiegelt. Nachfolgend sind wichtige Punkte zu seiner Community, seinen Betreuern und verwandten Projekten aufgeführt:

  • Projektpflege: Der Hauptautor von Beancount ist Martin Blais, der das Projekt um 2007 begann und es durch mehrere Versionen geleitet

Aktuelle Entwicklungen und kommende Funktionen

Im Jahr 2025 hat das Beancount-Ökosystem in den letzten Jahren bedeutende Entwicklungen erfahren, und es gibt laufende Diskussionen über zukünftige Verbesserungen. Hier sind einige bemerkenswerte aktuelle Entwicklungen und ein Ausblick auf das, was kommen könnte:

  • Beancount 3.0 Veröffentlichung (2024): Nach einer langen Periode, in der Beancount 2.x der Standard war, wurde Version 3 Mitte 2024 offiziell veröffentlicht. Dies war ein wichtiger Meilenstein, da v3 eine Vereinfachung und Modernisierung der Codebasis darstellt. Martin Blais hatte v3 als eine Chance gesehen, das System weiter zu „neu zu ordnen und zu vereinfachen“. Während ursprünglich ein großes Rewrite erwartet wurde, war das Update für die Benutzer in der Praxis nicht allzu störend. Die Hauptänderungen fanden unter der Haube statt: ein neuer Parser, einige Leistungsverbesserungen und die Auslagerung optionaler Komponenten aus dem Kern. Die Veröffentlichung erfolgte schrittweise (v3 war seit 2022 in der Beta-Phase, wurde aber im Juli 2024 zur empfohlenen stabilen Version). Benutzer wie Siddhant Goel berichteten, dass die Migration von 2.x auf 3.x „größtenteils ereignislos“ verlief, mit nur wenigen Änderungen im Workflow.

  • Modularisierung – Tools in separate Pakete verschoben: Eine der großen Änderungen mit Beancount 3 ist, dass viele Tools, die früher im monolithischen Repository angesiedelt waren, ausgegliedert wurden. Zum Beispiel wird bean-query jetzt vom beanquery-Paket bereitgestellt, und beancount.ingest wurde durch das beangulp-Paket ersetzt. Befehle wie bean-extract und bean-identify (für Importe) wurden aus dem Beancount-Kern entfernt. Stattdessen ist die Philosophie, eigenständige Skripte für den Import zu verwenden. Das bedeutet, wenn Sie auf v3 aktualisieren, würden Sie beangulp installieren und Importer-Skripte ausführen (jeder Importer ist im Grunde ein kleines Programm), anstatt eine zentrale bean-extract-Konfigurationsdatei zu haben. Ähnlich werden Abfragen über beanquery ausgeführt, das unabhängig vom Beancount-Kern installiert und aktualisiert werden kann. Dieser modulare Ansatz wurde entwickelt, um die Wartung zu erleichtern und Community-Beiträge zu fördern. Er verschlankte auch den Beancount-Kern, sodass sich der Kern rein auf die Parsing- und Buchhaltungslogik konzentriert, während Zusatzfunktionen sich separat entwickeln können. Aus Benutzersicht muss man nach dem Upgrade Befehle anpassen (z. B. bean-query von beanquery verwenden oder Fava nutzen, das dies ohnehin abstrahiert). Favas Changelog weist explizit auf diese Änderungen hin: Fava hängt jetzt von beanquery und beangulp ab und handhabt Import-Workflows für Beancount 3 anders als für Beancount 2.

  • Leistungsverbesserungen: Die Leistung war eine Motivation für die Überarbeitung des Beancount-Designs. Der v3-Plan (wie in Martins „V3 goals“-Dokument dargelegt) umfasste die Optimierung des Parsers und möglicherweise die Beschleunigung und Reduzierung des Speicherbedarfs des Ladevorgangs. Bis 2025 haben sich einige dieser Verbesserungen materialisiert. Anekdotisch haben Benutzer mit sehr großen Ledgern (Zehntausende von Transaktionen oder viele Aktienhandel) eine bessere Leistung mit der neuesten Version gemeldet. Zum Beispiel hat ein Benutzer, der mit „Mikroinvestitions-Transaktionen“ zu tun hatte und Leistungsprobleme feststellte, diese Bedenken in der Google Group geäußert – diese Art von Feedback hat wahrscheinlich v3 beeinflusst. Der neue Parser ist effizienter und klarer geschrieben, was in Zukunft erweitert werden könnte. Zusätzlich wechselte Fava 1.29 zu einem effizienteren Dateibeobachtungsmechanismus (unter Verwendung der watchfiles-Bibliothek), um die Reaktionsfähigkeit bei Ledger-Änderungen zu verbessern. Mit Blick auf die Zukunft könnte die Community die inkrementelle Analyse (nur die geänderten Teile der Datei neu verarbeiten, anstatt alles) untersuchen, um große Ledger schneller zu handhaben – dies wurde in den Docs als „Beancount-Server / inkrementelle Buchung“ angedeutet.

  • Verbesserungen bei der Investitionsverfolgung: Es gab fortlaufende Arbeiten, um die Berichterstattung über Investitionen und Portfolios zu verbessern. Zum Beispiel wurde die Handhabung von durchschnittlichen Anschaffungskosten im Vergleich zu FIFO ausführlich diskutiert. Während Beancount den Losabgleich erzwingt, bevorzugen einige Benutzer die durchschnittlichen Kosten für bestimmte Gerichtsbarkeiten. Ein Vorschlag und eine Diskussion existieren, um die Buchung der Anschaffungskosten flexibler zu gestalten (möglicherweise über ein Plugin oder eine Option). Bis 2025 ist kein eingebauter Schalter für die durchschnittlichen Kosten vorhanden, aber die Vorarbeit in v3 (die Neugestaltung der Buchung) erleichtert es Plugins, dies zu implementieren. Ein Community-Plugin „Gains Minimizer“ wurde veröffentlicht, das vorschlagen kann, welche Lose verkauft werden sollen, um Steuern zu minimieren, was die Art der fortschrittlichen Tools zeigt, die rund um Investitionen entwickelt werden. Auch Fava fügte Funktionen wie eine Portfolio-Zusammenfassungs-Erweiterung (mit Renditeberechnungen) hinzu. Im Hinblick auf kommende Funktionen ist in diesem Bereich mehr zu erwarten: möglicherweise automatisierte Vorschläge zur Portfolio-Neugewichtung oder Risikoanalyse, wahrscheinlich als externe Tools, die Beancount-Daten lesen (da die Daten alle vorhanden sind).

  • Neue Plugins und Erweiterungen: Das Plugin-Ökosystem wächst kontinuierlich. Zu den jüngsten bemerkenswerten Ergänzungen gehören:

    • Budget-Berichtstools – z. B. ein einfacher CLI-Budget-Reporter, falls man Favas UI nicht verwendet.
    • Verschlüsselung und Sicherheit – das fava-encrypt-Setup, das es ermöglicht, Fava online zu hosten, wobei das Ledger im Ruhezustand verschlüsselt ist, wurde eingeführt, um die Bedenken beim Selbst-Hosting der eigenen Finanzen zu adressieren.
    • Komfort-Plugins – wie autobean-format (ein neuer Formatierer, der mehr Randfälle durch Parsen und erneutes Ausdrucken der Datei handhaben kann) und beancheck-Integration in Editoren (flymake für Emacs).

    Mit Blick auf die Zukunft wird die Community wahrscheinlich weiterhin Lücken über Plugins füllen. Zum Beispiel könnten wir mehr steuerbezogene Plugins sehen (einige Benutzer haben Skripte für Dinge wie die Berechnung von Wash Sales oder spezifische lokale Steuerberichte geteilt).

  • Potenzielle kommende Funktionen: Basierend auf Diskussionen im Issue Tracker und der Mailingliste sind einige Ideen am Horizont (obwohl nicht garantiert):

    • Zeitauflösung: Derzeit verfolgt Beancount nur Daten (keine Zeitstempel) für Transaktionen. Es gab Fragen zum Hinzufügen von Uhrzeiten (für Aktienhandel oder die Reihenfolge von Transaktionen am selben Tag). Martin Blais hat explizit entschieden, dass Zeitstempel unterhalb eines Tages außerhalb des Umfangs liegen, um die Dinge einfach zu halten. Dies wird sich wahrscheinlich nicht so schnell ändern – daher werden kommende Versionen wahrscheinlich keine Zeitauflösung hinzufügen und an der Haltung festhalten, dass, wenn man Zeit benötigt, man diese in die Beschreibung oder ein Konto integriert.
    • Verbesserte GUI-Bearbeitung: Fava verbessert kontinuierlich seine Bearbeitungsfunktionen. Eine Möglichkeit ist ein voll ausgestatteterer Web-Editor (mit Autovervollständigung, vielleicht einer formularbasierten Eingabe für neue Transaktionen). Die Vorarbeit mit Tree-sitter im Fava-Editor wurde geleistet. Wir könnten sehen, wie Fava nicht nur zu einem Viewer, sondern zu einem leistungsfähigeren Editor wird, wodurch die Notwendigkeit, für viele Aufgaben überhaupt einen Texteditor zu öffnen, reduziert wird.
    • Bessere Unterstützung für mehrere Ledger: Einige Benutzer pflegen mehrere Beancount-Dateien (für verschiedene Entitäten oder zur Trennung von persönlichen und geschäftlichen Finanzen). Derzeit ist das Einbinden von Dateien möglich, hatte aber Einschränkungen (Plugins in eingebundenen Dateien usw.). Ein kürzlich veröffentlichtes Plugin autobean.include wurde erstellt, um externe Ledger sicher einzubinden. In Zukunft könnten wir erstklassige Unterstützung für Multi-Datei-Setups sehen – vielleicht ein Konzept eines Beancount-„Projekts“ mit mehreren Dateien (dies wird durch Funktionen wie die beancount.mainBeanFile-Einstellung der VSCode-Erweiterung angedeutet). Dies würde denjenigen helfen, die eine Buchhaltung für mehrere Entitäten führen oder ihr Ledger modularisieren möchten.
    • Echtzeit- oder inkrementelle Berechnung: Wenn Ledger wachsen, wird die Fähigkeit, Berichte schnell neu zu berechnen, wichtig. Es gibt die Idee eines Beancount-Servers, der ständig läuft und Ergebnisse aktualisiert, wenn sich Transaktionen ändern. Dies könnte sich als Optimierung in Fava oder als Daemon manifestieren, den Editor-Plugins abfragen können. Vielleicht wird eine zukünftige Fava-Version einen kontinuierlich laufenden Beancount-Prozess nutzen, um die Benutzeroberfläche für riesige Ledger reaktionsfähiger zu machen.
    • Fonds-Buchhaltung / Funktionen für gemeinnützige Organisationen: Es gab einen Verbesserungsvorschlag zur Fonds-Buchhaltung in Beancount. Gemeinnützige Organisationen haben Buchhaltungsbedürfnisse (zweckgebundene vs. nicht zweckgebundene Mittel), die potenziell mit Beancounts Tag- oder Kontenhierarchie modelliert werden könnten. Die Diskussion führte noch nicht zu eingebauten Funktionen, aber wenn mehr gemeinnützige Organisationen Beancount übernehmen, könnte dies neue Funktionen vorantreiben (vielleicht nur dokumentierte Best Practices oder Plugins zur Fondsbestandsverfolgung).
  • Langfristiger Ausblick: Martin Blais deutete an, dass er die Zukunft von Beancount darin sieht, den Kern mehr zu einem Motor zu machen und mehr Funktionalität in Plugins zu verlagern. Dies stimmt mit dem überein, was wir sehen (Modularisierung in v3). Eine „kommende Funktion“ im philosophischen Sinne ist also eine größere Erweiterbarkeit – möglicherweise sogar die Möglichkeit für Plugins, neue Direktiven-Typen zu definieren oder die Syntax auf kontrollierte Weise zu erweitern. Wenn das passiert, könnte der Beancount-Kern relativ klein und stabil bleiben, während das Ökosystem die meisten neuen Funktionen als Add-ons liefert. Dies könnte zu einem Plugin-Marktplatz oder einer zentraleren Auflistung von Plugins führen, sodass Benutzer auswählen können (die Awesome Beancount Liste ist ein Anfang dafür).

Zusammenfassend lässt sich sagen, dass das Beancount-Ökosystem im Jahr 2025 aktiv und in Entwicklung ist. Die Veröffentlichung von Beancount 3.0 war ein wichtiges jüngstes Ereignis, das die Grundlage des Projekts für die Zukunft sichert. Verbesserungen in Leistung, Tools und Benutzerfreundlichkeit (insbesondere durch Fava) haben die Einstiegshürde weiter gesenkt. Obwohl Beancount ein Tool bleibt, das ein gewisses Fachwissen erfordert, ist es dank dieser Entwicklungen heute weitaus zugänglicher als noch vor einigen Jahren. Kommende Funktionen werden sich wahrscheinlich auf die Verfeinerung der Benutzererfahrung konzentrieren – schnellere Leistung, bessere Integrationen und spezialisierte Erweiterungen – anstatt drastische Änderungen an der Kernphilosophie vorzunehmen. Die Entwicklung der Community deutet darauf hin, dass Beancount weiterhin als Herzstück der Klartext-Buchhaltung reifen wird, indem es ein Gleichgewicht zwischen der nüchternen Kraft der doppelten Buchführung und dem Komfort moderner Software findet. Wie ein Benutzer auf Hacker News witzelte, verleiht Ihnen die Klartext-Buchhaltung „Superkräfte“ beim Verständnis Ihrer Finanzen – und Beancounts aktuelle und zukünftige Verbesserungen zielen darauf ab, diese Superkräfte für jedermann leichter nutzbar zu machen.

Quellen: Beancount-Dokumentation und -Repository; Fava-Dokumentation; „A Comparison of Beancount and Ledger“ von Martin Blais; Awesome Beancount Ressourcenliste; Benutzererfahrungen und Community-Berichte;

Fava Upgrade auf Version 1.19: Wichtige Änderungen und Verbesserungen

· Eine Minute Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Wir haben die MIT-lizenzierte Open-Source-Software Fava auf Version 1.19 aktualisiert. Hier sind die Änderungen seit unserem letzten Update:

  • v1.19 (2021-05-18)
    • Migration von den Optionen conversion und interval zur Option default-page
    • Option invert-income-liabilities-equity hinzugefügt
    • Upgrade auf CodeMirror 6
    • fügt eine bulgarische Übersetzung hinzu
    • weitere kleine Verbesserungen und Fehlerbehebungen
  • v1.18 (2021-01-16)
    • einige kleine Verbesserungen und diverse Fehlerbehebungen.

Begeistert? Probieren Sie es jetzt aus unter https://beancount.io/ledger/

2021-07-16-upgrade-fava-to-1-19

Haben Sie Fragen? Wir sind für Sie da unter https://t.me/beancount :)

Beancount Mobile: Unser Engagement für Open Source und Datenschutz

· Eine Minute Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Datenschutz ist der Kern unserer DNA, unserer Kultur und unserer Werte. Wir verpflichten uns, Ihre Daten in all unseren Systemen zu schützen.

Und heute freuen wir uns, Beancount Mobile als Open Source zu veröffentlichen. Das bedeutet, der Code ist öffentlich verfügbar und kann von jedermann geprüft werden. Dieses Maß an Transparenz gewährleistet sowohl die Sicherheit der App als auch Ihr Vertrauen bezüglich der Verwendung Ihrer Daten.

Open Source bietet unseren Kunden mehr Auswahl auf dem Markt und in vielerlei Hinsicht bessere Lösungen. Wir bauen Beancount.io auf exzellenten Open-Source-Projekten auf und hoffen, in Zukunft so viele Module unseres Systems wie möglich als Open Source freizugeben. Und Beancount Mobile ist nur der Anfang dieser Reise :)

2020-10-08-open-sourcing-beancount-mobile

Beancount.io liebt Open Source