Zum Hauptinhalt springen

5 Beiträge mit „Doppelte Buchführung“ markiert

Alle Tags anzeigen

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;

Ein Beancount-Ledger dekonstruieren: Eine Fallstudie für die Unternehmensbuchhaltung

· 3 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Im heutigen Blogbeitrag werden wir ein Beancount-Ledger für Unternehmen aufschlüsseln, das Ihnen helfen wird, die Feinheiten dieses Klartext-Doppiksystems zu verstehen.

Ein Beancount-Ledger dekonstruieren: Eine Fallstudie für die Unternehmensbuchhaltung

Beginnen wir zunächst mit dem Code:

2023-05-22-business-template

1970-01-01 open Assets:Bank:Mercury
1970-01-01 open Assets:Crypto

1970-01-01 open Equity:Bank:Chase

1970-01-01 open Income:Stripe
1970-01-01 open Income:Crypto:ETH

1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:COGS:Contabo
1970-01-01 open Expenses:COGS:AmazonWebServices

1970-01-01 open Expenses:BusinessExpenses
1970-01-01 open Expenses:BusinessExpenses:ChatGPT

2023-05-14 * "CONTABO.COM" "Mercury Checking ••1234"
Expenses:COGS:Contabo 17.49 USD
Assets:Bank:Mercury -17.49 USD

2023-05-11 * "Amazon Web Services" "Mercury Checking ••1234"
Expenses:COGS:AmazonWebServices 14490.33 USD
Assets:Bank:Mercury -14490.33 USD

2023-03-01 * "STRIPE" "Mercury Checking ••1234"
Income:Stripe -21230.75 USD
Assets:Bank:Mercury 21230.75 USD

2023-05-18 * "customer_182734" "0x5190E84918FD67706A9DFDb337d5744dF4EE5f3f"
Assets:Crypto -19 ETH {1,856.20 USD}
Income:Crypto:ETH 19 ETH @@ 35267.8 USD

Den Code verstehen

  1. Konten eröffnen: Der Code beginnt mit der Eröffnung einer Reihe von Konten am 01.01.1970. Dazu gehören eine Mischung aus Aktivkonten (Assets:Bank:Mercury und Assets:Crypto), einem Eigenkapitalkonto (Equity:Bank:Chase), Ertragskonten (Income:Stripe und Income:Crypto:ETH) und Aufwandskonten (Expenses:COGS, Expenses:COGS:AmazonWebServices, Expenses:BusinessExpenses und Expenses:BusinessExpenses:ChatGPT).

  2. Transaktionen: Anschließend werden eine Reihe von Transaktionen zwischen dem 01.03.2023 und dem 18.05.2023 erfasst.

    • Die Transaktion vom 14.05.2023 stellt eine Zahlung von 17,49 USD an CONTABO.COM von Mercury Checking ••1234 dar. Dies wird als Aufwand (Expenses:COGS:Contabo) und eine entsprechende Abbuchung vom Konto Assets:Bank:Mercury erfasst.

    • Ähnlich stellt die Transaktion vom 11.05.2023 eine Zahlung von 14.490,33 USD an Amazon Web Services vom selben Bankkonto dar. Dies wird unter Expenses:COGS:AmazonWebServices verbucht.

    • Die Transaktion vom 01.03.2023 zeigt Einnahmen von STRIPE, die auf Mercury Checking ••1234 eingezahlt wurden, in Höhe von insgesamt 21.230,75 USD. Dies wird als Einnahme (Income:Stripe) und als Zugang zum Bankkonto (Assets:Bank:Mercury) erfasst.

    • Die letzte Transaktion vom 18.05.2023 stellt eine Krypto-Transaktion dar, bei der 19 ETH von einem Kunden involviert sind. Dies wird unter Assets:Crypto und Income:Crypto:ETH verfolgt. Die Angabe {1,856.20 USD} zeigt den ETH-Preis zum Zeitpunkt der Transaktion, während @@ 35267.8 USD den Gesamtwert der 19 ETH-Transaktion angibt.

Bei allen Transaktionen wird das Prinzip der doppelten Buchführung beibehalten, wodurch sichergestellt wird, dass die Gleichung Aktiva = Passiva + Eigenkapital stets gültig ist.

Abschließende Gedanken

Dieses Beancount-Ledger bietet ein unkompliziertes und dennoch robustes System zur Verfolgung von Finanztransaktionen. Wie in der letzten Transaktion zu sehen ist, ist Beancount flexibel genug, um auch nicht-traditionelle Vermögenswerte wie Kryptowährungen zu berücksichtigen, was ein Beweis für seine Nützlichkeit in unserer zunehmend digitalen Finanzlandschaft ist.

Wir hoffen, dass diese Aufschlüsselung Ihnen hilft, die Struktur und die Funktionen von Beancount besser zu verstehen, egal ob Sie ein erfahrener Buchhalter sind oder ein Anfänger, der versucht, seine persönlichen Finanzen im Blick zu behalten. Bleiben Sie dran für unseren nächsten Blogbeitrag, in dem wir uns eingehender mit fortgeschrittenen Beancount-Operationen befassen werden.

Beancount Kurzübersicht

· 2 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Beispiel Kontoname

Assets:US:BofA:Checking

cheatsheet-de

Kontotypen

Assets          +
Liabilities -
Income -
Expenses +
Equity -

Währungen / Güter

CNY, EUR, CAD, AUD
GOOG, AAPL, RBF1005
HOME_MAYST, AIRMILES
HOURS

Direktiven

Allgemeine Syntax

YYYY-MM-DD <Directive> <Parameters...>

Konten eröffnen & schließen

2001-05-29 open Expenses:Restaurant
2001-05-29 open Assets:Checking USD,EUR ; Währungsbeschränkungen

2015-04-23 close Assets:Checking

Währungen / Güter deklarieren (Optional)

1998-07-22 commodity AAPL
name: "Apple Computer Inc."

Preise

2015-04-30 price AAPL   125.15 CNY
2015-05-30 price AAPL 130.28 CNY

Notizen

2013-03-20 note Assets:Checking "Anruf wegen Rabattanfrage"

Dokumente

2013-03-20 document Assets:Checking "path/to/statement.pdf"

Buchungen

2015-05-30 * "Eine Beschreibung dieser Buchung"
Liabilities:CreditCard -101.23 CNY
Expenses:Restaurant 101.23 CNY

2015-05-30 ! "Kabelgesellschaft" "Telefonrechnung" #tag ˆlink
id: "TW378743437" ; Metadaten
Expenses:Home:Phone 87.45 CNY
Assets:Checking ; Sie können einen Betrag weglassen

Buchungsposten

  ...    123.45 USD                             Einfach
... 10 GOOG {502.12 USD} Mit Kosten pro Einheit
... 10 GOOG {{5021.20 USD}} Mit Gesamtkosten
... 10 GOOG {502.12 # 9.95 USD} Mit beiden Kosten
... 1000.00 USD @ 1.10 CAD Mit Preis pro Einheit
... 10 GOOG {502.12 USD} @ 1.10 CAD Mit Kosten & Preis
... 10 GOOG {502.12 USD, 2014-05-12} Mit Datum
! ... 123.45 USD ... Mit Flag

Saldoprüfungen und Ausgleichsbuchungen

; Bestätigt den Betrag nur für die angegebene Währung:
2015-06-01 balance Liabilities:CreditCard -634.30 CNY

; Automatische Einfügung einer Buchung zur Erfüllung der folgenden Bestätigung:
2015-06-01pad Assets:Checking Equity:Opening-Balances

Ereignisse

2015-06-01 event "location" "New York, USA"
2015-06-30 event "address" "May Street 123"

Optionen

option "title" "Mein persönliches Hauptbuch"

Sonstiges

pushtag #trip-to-peru
...
poptag #trip-to-peru
; Kommentare beginnen mit einem Semikolon

Die Magie der Klartext-Buchhaltung mit Beancount

· 3 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Entdecken Sie die Magie der Klartext-Buchhaltung mit Beancount

Beancount.io Banner

Einführung

2023-04-18-Einführung-in-Beancount

Willkommen in einer Welt, in der Buchhaltung keine entmutigende Aufgabe mehr ist. Heute stellen wir Ihnen Beancount vor, ein leistungsstarkes, flexibles und intuitives Klartext-Buchhaltungstool. Beancount ermöglicht es Ihnen, die Kontrolle über Ihre Finanzen zu übernehmen, indem es einen transparenten und unkomplizierten Ansatz zur Verwaltung Ihres Geldes bietet.

In diesem umfassenden Leitfaden werden wir uns mit den Grundlagen von Beancount befassen, seine Kernkonzepte erläutern und Sie durch seine einfachen, aber leistungsstarken Funktionen führen. Am Ende dieses Blogs werden Sie ein solides Verständnis von Beancount haben und bereit sein, es zur Organisation und Analyse Ihres Finanzlebens einzusetzen.

Was ist Beancount?

Beancount ist ein Open-Source-Klartext-Buchhaltungssystem, das von Martin Blais entwickelt wurde. Inspiriert von John Wiegleys Ledger-System, zielt Beancount darauf ab, eine robuste und zuverlässige Methode zur Verwaltung persönlicher und kleiner Unternehmensfinanzen mithilfe von Klartextdateien bereitzustellen. Mit Beancount können Sie Ihre Einnahmen, Ausgaben, Investitionen und vieles mehr mühelos verfolgen.

Warum Beancount?

Die Klartext-Buchhaltung bietet mehrere Vorteile gegenüber traditionellen Tabellenkalkulations- oder Software-basierten Buchhaltungssystemen:

  • Transparenz: Beancount-Dateien sind menschenlesbar, was das Verständnis und die Prüfung Ihrer Finanzdaten erleichtert.
  • Flexibilität: Beancount kann leicht an Ihre spezifischen Bedürfnisse angepasst werden, und Sie können Ihren bevorzugten Texteditor und Ihr Versionskontrollsystem verwenden, um Ihre Finanzdaten zu verwalten.
  • Portabilität: Ihre Finanzdaten können auf jedem Gerät abgerufen werden, und es ist einfach, sie zwischen Systemen zu übertragen oder mit anderen zu teilen.
  • Zukunftssicher: Klartextdateien sind universell kompatibel und stellen sicher, dass Ihre Finanzdaten auch bei fortschreitender Technologie zugänglich bleiben.

Beancounts Kernkonzepte

Um Beancount effektiv nutzen zu können, ist es entscheidend, seine Kernkonzepte zu verstehen:

  • Transaktionen: Finanzielle Ereignisse, wie Einnahmen, Ausgaben oder Überweisungen zwischen Konten, werden als Transaktionen erfasst.
  • Konten: Transaktionen betreffen ein oder mehrere Konten, wie Aktiva, Passiva, Einnahmen oder Ausgaben.
  • Doppelte Buchführung: Beancount erzwingt die doppelte Buchführung und stellt sicher, dass jede Transaktion ausgeglichene Soll- und Haben-Buchungen aufweist.
  • Direktiven: Beancount verwendet eine Reihe von Direktiven, um Transaktionen, Kontoeröffnungen und andere finanzielle Ereignisse zu definieren.

Erste Schritte mit Beancount

Um Beancount zu verwenden, folgen Sie diesen einfachen Schritten:

  • Beancount installieren: Installieren Sie Beancount auf Ihrem System gemäß den bereitgestellten Installationsanweisungen für Ihr Betriebssystem.
  • Ihre Beancount-Datei erstellen: Erstellen Sie eine neue Klartextdatei mit der Erweiterung .beancount (z. B. meine_finanzen.beancount).
  • Ihre Konten definieren: Verwenden Sie die Direktive "open", um die Konten zu definieren, die Sie in Ihren Transaktionen verwenden werden.
  • Transaktionen erfassen: Verwenden Sie die Direktive "txn", um Ihre Finanztransaktionen zu erfassen.

Oder melden Sie sich einfach unter https://beancount.io an. Hier sind einige Beispiele für die Klartext-Buchhaltung -

Beispiel 1: Grundlegende Transaktion

2023-04-01 open Assets:Checking
2023-04-01 open Expenses:Groceries

2023-04-10 txn "Grocery Store" "Buying groceries"
Assets:Checking -50.00 USD
Expenses:Groceries 50.00 USD

In diesem Beispiel eröffnen wir zwei Konten, Assets:Checking und Expenses:Groceries. Am 10. April 2023 erfassen wir eine Transaktion für den Einkauf von Lebensmitteln im Wert von 50 $. Die Transaktion reduziert den Saldo von Assets:Checking um 50 $ (Haben) und erhöht den Saldo von Expenses:Groceries um 50 $ (Soll).

Beispiel 2: Einnahmen- und Ausgaben-Transaktion

2023-04-01 open Assets:Checking
2023-04-01 open Income:Salary
2023-04-01 open Expenses:Rent

2023-04-05 txn "Employer" "Salary payment"
Assets:Checking 2000.00 USD
Income:Salary -2000.00 USD

2023-04-06 txn "Landlord" "Monthly rent payment"
Assets:Checking -1000.00 USD
Expenses:Rent 1000.00 USD

In diesem Beispiel eröffnen wir drei Konten: Assets:Checking, Income:Salary und Expenses:Rent. Am 5. April 2023 erfassen wir eine Gehaltszahlungstransaktion von 2000 $. Die Trans

Einführung in Beancount.io

· 5 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Warum moderne Buchführung wichtig ist

Verwalten Sie Ihre Anlagen immer noch mit Tabellenkalkulationen? Obwohl Tabellenkalkulationen vielseitig sind, können sie mit wachsendem Anlageportfolio umständlich und fehleranfällig werden. Hier kommt Beancount.io ins Spiel – eine ausgeklügelte und dennoch benutzerfreundliche Plattform zur Anlageverfolgung, die speziell für die Verwaltung von Aktien- und Kryptowährungsportfolios entwickelt wurde. Für Ingenieure und Finanzminimalisten konzipiert, kombiniert Beancount.io leistungsstarke Funktionen mit einer intuitiven Benutzeroberfläche, um Ihre Anlageverfolgung zu optimieren.

Einführung in Beancount

Ausgaben

Gewinn- und Verlustrechnung

Bilanz

Doppelte Buchführung: Die Grundlage der Genauigkeit

Beancount.io basiert auf den Prinzipien der doppelten Buchführung – einer bewährten Methode, die von Finanzinstituten weltweit angewendet wird. Dieses System gewährleistet mathematische Genauigkeit durch ein einfaches, aber leistungsstarkes Konzept: Jede Finanztransaktion muss perfekt ausgeglichen sein.

In der doppelten Buchführung erfordert jede Transaktion mindestens zwei Einträge – eine Sollbuchung (+) und eine Habenbuchung (-) – über verschiedene Konten hinweg. Dieses integrierte Verifizierungssystem macht es praktisch unmöglich, unbalancierte Transaktionen zu erfassen, wodurch Ihre Finanzunterlagen genau und zuverlässig bleiben.

1970-01-01 open Income:BeancountCorp
1970-01-01 open Assets:Cash
1970-01-01 open Expenses:Food
1970-01-01 open Assets:Receivables:Alice
1970-01-01 open Assets:Receivables:Bob
1970-01-01 open Assets:Receivables:Charlie
1970-01-01 open Liabilities:CreditCard

2019-05-31 * "BeancountCorp" "Salary of May 15th to May 31st"
Income:BeancountCorp -888 USD
Assets:Cash 888 USD

2019-07-12 * "Popeyes chicken sandwiches" "dinner with Alice, Bob, and Charlie"
Expenses:Food 20 USD
Assets:Receivables:Alice 20 USD
Assets:Receivables:Bob 20 USD
Assets:Receivables:Charlie 20 USD
Liabilities:CreditCard -80 USD

Wie Sie in den beiden obigen Beispielen sehen können, muss jede Transaktion die Buchhaltungsgleichung erfüllen.

Assets = Liabilities + Equity(aka Net Assets)

Wir haben die Beancount-Syntax von Martin Blais und das Webprojekt Fava von Jakob Schnitzer verwendet, um diese Website zu erstellen. Und es wird Sie benachrichtigen, wenn eine Transaktion Positionen enthält, die nicht auf Null summieren.

Fehlerwarnung

Nun verstehen Sie, wie wir die Korrektheit des Hauptbuchs durchsetzen. Aber Sie fragen sich vielleicht, was diese „Konten“ sind?

Konten verstehen: Die Wassereimer-Analogie

Stellen Sie sich Ihre Finanzkonten als ein System miteinander verbundener Wassereimer vor, in denen Geld wie Wasser zwischen ihnen fließt. Diese Analogie macht die doppelte Buchführung intuitiv: Wenn Sie Geld von einem Konto auf ein anderes überweisen, ist es, als würden Sie Wasser von einem Eimer in einen anderen gießen – die Gesamtmenge des Wassers (Geldes) im System bleibt konstant.

Beancount.io führt fünf Arten von Konten ein.

  1. Einnahmen — Ihr Betrag ist immer negativ oder im Soll. Dies liegt daran, dass Sie Geld verdienen und das Geld dann vom „Einnahmen“-Konto abgebucht und Ihrem „Vermögen“ gutgeschrieben wird.
  2. Ausgaben — Ihr Betrag ist immer positiv oder im Haben. Dies liegt daran, dass Sie Geld ausgeben und das Geld von den „Vermögenswerten“ oder „Verbindlichkeiten“ zu den „Ausgaben“ fließt.
  3. Verbindlichkeiten — Ihr Betrag ist positiv oder null. Ihre Kreditkartenverbindlichkeiten sind ein gutes Beispiel, die in Zyklen steigen und fallen.
  4. Vermögenswerte — Ihr Betrag ist positiv oder null. Ihr Bargeld oder Ihre Häuser sind immer einen bestimmten Preis wert.
  5. Eigenkapital — Ihr Nettovermögen. Das System berechnet dies automatisch für Sie. Eigenkapital = Vermögenswerte - Verbindlichkeiten und es spiegelt wider, wie wohlhabend Sie sind.

Nun können Sie Ihre angepassten Konten mit den oben genannten Schlüsselwörtern eröffnen:

1970-01-01 open Assets:Cash
1970-01-01 open Assets:Stock:Robinhood
1970-01-01 open Assets:Crypto:Coinbase
1970-01-01 open Expenses:Transportation:Taxi
1970-01-01 open Equity:OpeningBalance

Erweiterte Anlageverfolgung mit Rohstoffen

Beancount.io zeichnet sich durch die Verfolgung verschiedener Anlagen aus, von Aktien bis zu Kryptowährungen. Lassen Sie uns untersuchen, wie es komplexe Anlageszenarien handhabt. Zum Beispiel würden Sie den Kauf von 10 Bitcoins zu je 100 $ im Jahr 2014 wie folgt erfassen:

2014-08-08 * "Buy 10 Bitcoin"
Assets:Trade:Cash -1000.00 USD
Assets:Trade:Positions 10 BTC {100.00 USD}

Und dann, drei Jahre später, verkaufen Sie sie (ursprünglich mit Kosten von 100 $ pro Einheit, annotiert mit {100.00 USD}) zum Preis von 10.000 $ pro Einheit, annotiert mit @ 10,000.00 USD.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @ 10,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Oder dieselbe Transaktion mit @@ 20,000.00 USD bedeutet, dass der Preis insgesamt 20.000 $ beträgt.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @@ 20,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Die Summe aller Positionen der Transaktion, einschließlich -2 BTC {100.00 USD}, ist wie immer null.

Der Kosten-Tag {100.00 USD} ist wichtig, da Sie dieselbe Ware möglicherweise zu unterschiedlichen Kosten gekauft haben.

100 BTC {10.00 USD, 2012-08-08}
10 BTC {100.00 USD, 2014-08-08}

Wenn Sie den Prozess vereinfachen möchten, können Sie das Konto zu Beginn mit FIFO oder LIFO einrichten. FIFO steht für „First In, First Out“, während LIFO für „Last In, First Out“ steht. In den USA verwendet die IRS FIFO, um Ihren Gewinn und Verlust sowie die entsprechende Steuer zu berechnen.

1970-01-01 open Assets:Trade:Positions "FIFO"

Und wenn Sie es dann in Kurzform wie -2 BTC {} verkaufen, wendet Beancount automatisch die FIFO-Strategie an und verkauft die älteste Ware.

Erste Schritte mit Beancount.io

Beancount.io ist eine moderne, cloud-basierte Finanzmanagementplattform, die Ihre textbasierten Transaktionsaufzeichnungen in umfassende Finanzberichte umwandelt, einschließlich Gewinn- und Verlustrechnungen, Bilanzen und Saldenlisten. Durch die Kombination der Zuverlässigkeit von Klartextdateien mit leistungsstarken Visualisierungstools hilft Ihnen Beancount.io, präzise Kontrolle über Ihr Finanzleben zu behalten und gleichzeitig wertvolle Einblicke in Ihre Anlageperformance zu gewinnen.

Beginnen Sie Ihre Finanzreise mit Beancount.io – Kostenlos während unserer Aktionsphase!