Zum Hauptinhalt springen

Community Showcase: Real-World Beancount Setups

Real-World Beancount Setups

Einführung

community-showcase

Beancount ist ein vielseitiges Plain-Text-Accounting-System, und seine Benutzer haben es so geformt, dass es zu einer Vielzahl von realen Bedürfnissen passt. In diesem Community Showcase präsentieren wir anonymisierte Beispiele dafür, wie verschiedene Personen ihre Beancount-Accounting-Workflows strukturieren und nutzen – von Freelancern und Kleinunternehmern bis hin zu persönlichen Finanzenthusiasten. Diese Beispiele heben kreative Praktiken hervor, wie das Markieren von Transaktionen mit Metadaten, das Automatisieren von Ledger-Updates mit benutzerdefinierten Skripten, den Umgang mit mehreren Währungen, Budgetierung und Prognosen sowie das Erweitern von Beancount mit Plugins oder Integrationen (wie der Fava-Weboberfläche). Ziel ist es, Buchhalter, Entwickler und finanzkundige Benutzer darüber zu informieren und zu inspirieren, was mit dem flexiblen System von Beancount möglich ist.

Beispiel Fava-Interface: Viele Beancount-Benutzer verlassen sich auf Fava – ein Open-Source-Web-Dashboard –, um ihre Finanzen zu visualisieren. Fava kann ein Beancount-Ledger in interaktive Berichte und Diagramme verwandeln. Zum Beispiel zeigt der obige Screenshot ein Income Statement (Gewinn- und Verlustrechnung) Treemap, das Einnahmen und Ausgaben nach Kategorien aufschlüsselt und einen schnellen Überblick darüber gibt, woher das Geld kommt und wohin es geht. Benutzer können diese Ansicht nach Zeit, Konto oder Tags filtern, um bestimmte Projekte oder Zeiträume genauer zu untersuchen. Solche Visualisierungen helfen, Plain-Text-Daten zugänglicher zu machen, sodass Benutzer Trends und Anomalien auf einen Blick erkennen können.

Jede Beancount-Konfiguration ist einzigartig, aber es gibt gemeinsame Themen. Im Folgenden tauchen wir in drei Szenarien ein – ein Freelancer, ein Kleinunternehmer und ein Power-User im Bereich persönliche Finanzen –, um zu sehen, wie sie ihre Konten organisieren und die Funktionen von Beancount nutzen. Alle persönlichen Daten wurden entfernt oder verallgemeinert, wobei der Fokus nur auf Techniken und Konfigurationen liegt.

Freelancer: Projekt-Tagging und Rechnungsverfolgung

Unser erstes Beispiel ist ein freiberuflicher Berater, der Beancount als Rückgrat seiner Geschäftsfinanzen nutzt. Das Ledger dieses Freelancers ist so organisiert, dass er Einnahmen und Ausgaben pro Projekt verfolgen und Rechnungen für mehrere Kunden verwalten kann. Sie haben dedizierte Konten für Forderungen (A/R) unter Aktiva für jeden Kunden eingerichtet, was hilft zu trennen, wer was schuldet. Wenn sie ein Projekt abschließen und einem Kunden eine Rechnung stellen, erfassen sie eine Transaktion, die das A/R-Konto des Kunden belastet und ein Ertragskonto gutschreibt. Beispielsweise könnte eine neue Rechnung wie folgt erfasst werden:

2025-08-01 * "Project X Completed" ^INV-0001
Assets:AccountsReceivable:ClientA 5,000 USD
Income:Consulting -5,000 USD

Hier ist die Notation ^INV-0001 ein Link (eine eingebaute Beancount-Metadatenfunktion), der verwendet wird, um diese Transaktion mit der Rechnungsnummer zu versehen. Wenn der Kunde einen Teil oder die gesamte Rechnung bezahlt, enthält die Zahlungstransaktion denselben ^INV-0001-Link, der die beiden Einträge miteinander verbindet. Diese Verknüpfung erleichtert die Zuordnung von Zahlungen zu bestimmten Rechnungen und das Anzeigen ausstehender Salden. Wie ein Community-Mitglied erklärte, können Sie solche Tags oder Links verwenden, um Teilzahlungen zu markieren – z. B. eine Zahlung von 20 $ gegen eine Rechnung von 30 $ – sowohl im Rechnungseintrag als auch im Zahlungseintrag. Durch Abfragen des Ledgers nach diesem Rechnungslink kann der Freelancer sofort sehen, wie viel von der Rechnung bezahlt wurde und was noch offen ist.

Zusätzlich zu den Links verwendet der Freelancer stark Tags für die Kategorisierung. Tags in Beancount sind Beschriftungen, denen ein # vorangestellt ist, und die Transaktionen zur späteren Filterung markieren können. Dieser Benutzer taggt jede Ausgabe, die einem Kunden in Rechnung gestellt wird, mit dem Code des Projekts, wie #ProjectX, und erstattungsfähige Ausgaben mit #Reimbursable. Wenn sie beispielsweise Flugtickets für ein Kundenprojekt kaufen, kann der Ausgabeneintrag #ProjectX #Reimbursable enthalten. Diese Vorgehensweise ermöglicht die Generierung von Berichten pro Projekt oder Kunde durch Filtern nach Tags. Nach einem Projekt kann der Freelancer eine Abfrage ausführen, um alle #Reimbursable-Ausgaben für dieses Projekt aufzulisten und sicherzustellen, dass sie dem Kunden jede in Rechnung stellen. Ein Beancount-Benutzer bemerkte, dass das Taggen von Ausgaben für Geschäftsreisen dabei half, diejenigen zu erfassen, die nicht erstattet wurden – idealerweise gleichen sich die Ausgaben einer Geschäftsreise auf 0 $ aus, wenn alle Rückerstattungen vom Kunden eingegangen sind. Dies unterstreicht, wie das Taggen in Kombination mit den Abfragefunktionen von Beancount eine zusätzliche Aufsichtsebene für Freelancer bietet, die abrechenbare Ausgaben verwalten.

Um den Status ausstehender Zahlungen zu verwalten, verwendet unser Freelancer eine spezielle Konvention für ausstehende Forderungen. Sie wenden das Tag #UNRESOLVED auf jede Rechnungstransaktion an, die noch nicht vollständig bezahlt wurde. Beancount (und Fava) erzwingt dieses Tag nicht, aber es ist ein in der Community etabliertes Muster, um Transaktionen zu markieren, die auf die Begleichung warten. Bis Client A beispielsweise die vollen 5.000 $ bezahlt, würde die obige Rechnungstransaktion #UNRESOLVED enthalten. Durch Filtern nach diesem Tag kann der Freelancer jederzeit alle offenen Rechnungen auflisten. Sobald die Zahlung eingegangen und angewendet wurde (die entsprechende A/R-Transaktion wurde eingegeben), entfernen oder ignorieren sie das Tag #UNRESOLVED, und das Forderungskonto für diesen Kunden wird sich auf Null ausgleichen. Dieses System stellt sicher, dass keine Rechnung „durchrutscht“. Es ist im Wesentlichen ein Aging Report in Plain Text – wenn ein A/R nicht Null bleibt und als ungelöst markiert ist, muss er beachtet werden.

Da Freelancer oft mit mehreren Zahlungsmethoden und manchmal mit mehreren Währungen zu tun haben, wird diese Konstellation durch die Beancount-Konfiguration nahtlos unterstützt. In unserem Beispiel könnte der Berater einigen Kunden in USD und anderen in EUR eine Rechnung stellen. Die Multi-Currency-Verwaltung ist in Beancount unkompliziert: Jedes Konto kann mehrere Rohstoffe (Währungen werden als Rohstoffe behandelt) enthalten. Der Freelancer kann entweder separate Unterkonten für jede Währung führen (z. B. Assets:AccountsReceivable:ClientA:EUR vs. ...:USD) oder einfach Transaktionen in der entsprechenden Währung unter demselben Konto buchen. Beancount verfolgt die Salden pro Währung automatisch. Ein Benutzer betonte, wie schön es ist, dass „Beancount Mengen in jeder Währung verfolgen kann, sei es USD oder ein Tickersymbol“, alles in einem Ledger. Unser Freelancer nutzt dies, indem er Wechselkurse mit price-Direktiven aufzeichnet, wann immer er Währungen für die Berichterstattung umrechnen muss. Sie können einen Einkommensbericht erstellen, der in ihre Heimatwährung umgerechnet wird, sobald sie periodische Wechselkurse oder Marktpreise eingegeben haben.

Schließlich integriert dieser Freelancer sein Beancount-Ledger in praktische Tools, um seinen Workflow zu rationalisieren. Beispielsweise fügen sie dem Ledger PDF-Kopien jeder Rechnung mithilfe von Dokument-Metadaten bei. Ein typischer Rechnungseintrag könnte wie folgt aussehen:

2025-08-30 * "ClientA" "Payment for INV-0001" ^INV-0001
Assets:Bank:Checking 5,000 USD
Assets:AccountsReceivable:ClientA -5,000 USD
document: "Invoices/ClientA/INV-0001.pdf"

Die document-Direktive oder -Metadaten von Beancount ermöglichen es, Dateien mit Einträgen zu verknüpfen, und Fava zeigt einen Hyperlink für diese Anhänge an. Dies bedeutet, dass der Freelancer (oder sein Buchhalter) direkt aus dem Ledger-Bericht klicken kann, um die ursprüngliche Rechnungs-PDF anzuzeigen, um einen einfachen Zugriff auf die Sicherungsdokumentation zu gewährleisten. Der Freelancer verwendet auch die Berichte von Fava, um ihr Geschäft zu überwachen: Durch Filtern der Gewinn- und Verlustrechnung oder Bilanz nach Kunden kann sie die Rentabilität pro Kunde einsehen und überprüfen, ob alle Projekte bezahlt sind. Zusammenfassend lässt sich sagen, dass das Beancount-System dieses Freelancers die starke Verwendung von Tagging und Verknüpfung zur Verwaltung der projektbasierten Buchhaltung demonstriert. Es verwandelt ein Plain-Text-Ledger in ein robustes Freelance-Accounting-Tool mit klarer Sicht auf Projektausgaben, Multi-Currency-Einnahmen und Rechnungsstatus.

Wichtige Praktiken im Freelancer-Setup: Verwenden von Tags zum Gruppieren von Transaktionen nach Projekt oder Zweck, Verknüpfen von Rechnungen und Zahlungen mit eindeutigen IDs, Markieren ausstehender Forderungen mit einem #UNRESOLVED-Tag, Anhängen von Rechnungsdokumenten an Ledgereinträge als Referenz und Nutzen des Multi-Currency-Supports von Beancount, um internationale Kunden problemlos abzurechnen. All dies wird mit Plain-Text-Einträgen und einigen Hilfstools erreicht, was die Leistungsfähigkeit von Metadaten in Beancount demonstriert.

Kleinunternehmen: Automatisierung und Multi-Currency-Accounting

Als Nächstes betrachten wir einen Kleinunternehmer – insbesondere einen Startup-Gründer –, der Beancount übernommen hat, um die Unternehmensbücher zu führen. Kleine Unternehmen haben ähnliche Bedürfnisse wie Freelancer (Rechnungen, Ausgaben, Multi-Currency), jedoch oft in größerem Umfang und mit größerem Schwerpunkt auf Automatisierung, Konsistenz und Zusammenarbeit. In diesem Fall war der Gründer technisch versiert und baute einen hochautomatisierten Beancount-Workflow auf, um die manuelle Buchhaltung zu minimieren. Nach der Bewertung traditioneller Buchhaltungssoftware wie QuickBooks entschied er sich für den Plain-Text-Ansatz von Beancount, um die volle Kontrolle über die Daten zu behalten. Über einige Jahre entwickelte er iterativ benutzerdefinierte Tools, um einen Automatisierungsgrad von 95 % im Buchhaltungsprozess zu erreichen.

Automatisierte Importe und Abstimmung: Eine der ersten Herausforderungen bestand darin, Transaktionen aus verschiedenen Quellen (Bankkonten, Kreditkarten, Zahlungsabwickler) in das Ledger zu importieren. Anstatt jede Transaktion einzutippen, richtete dieser Benutzer Importskripte ein, um Daten abzurufen und in das Beancount-Format zu übersetzen. Er schrieb benutzerdefinierte Python-Importer für das CSV- oder API-Format jeder Finanzinstitution, sodass er mit einem Befehl neue Transaktionen abrufen und an das Ledger anhängen kann. Mithilfe des bean-extract-Frameworks von Beancount kann der Gründer beispielsweise ein Skript ausführen, das einen Download-Ordner nach neuen Kontoauszügen durchsucht und diese als Beancount-Einträge ausgibt. Ein anderer Benutzer, Rhyd Lewis, beschrieb eine ähnliche Einrichtung, bei der er separate Importer-Skripte für jede Bank hat und diese über einen einfachen Befehl (mithilfe einer Justfile) aufrufen kann, um sein Ledger zu aktualisieren. Unser Kleinunternehmer macht dasselbe – alle Banktransaktionen, Kreditkartenzahlungen und sogar PayPal- oder Stripe-Transaktionen werden automatisch abgerufen und den Büchern hinzugefügt, kategorisiert mit den entsprechenden Konten.

Um die Datenintegrität auch bei automatischem Hinzufügen dieser Einträge sicherzustellen, verwendet er auch die Validierungstools und Plugins von Beancount. Beispielsweise ist das Plugin beancount.plugins.noduplicates aktiviert, um zu verhindern, dass versehentlich dieselbe Transaktion zweimal importiert wird, und beancount.plugins.nounused kennzeichnet alle Konten, die keine Einträge haben (hilfreich zum Bereinigen veralteter Konten). Der Gründer verwendet auch einen Formatter (wie bean-format oder das Community-Tool beancount-black), um die Ledger-Datei konsistent zu formatieren. Dies ist wichtig, da eine einheitliche Formatierung bei vielen automatisierten Bearbeitungen die Unterschiede und Audits erleichtert. Tatsächlich speichert der Gründer das Ledger in einem Git-Repository und behandelt Ledger-Updates wie Codeänderungen. Jede neue Charge importierter Transaktionen wird zu einem Git-Commit, und er kann die Unterschiede überprüfen, um zu sehen, was sich geändert hat. In einem Screenshot zeigt er einen Git-Verlauf, in dem eine Kreditkartentransaktion für „Costco“ ohne manuelles Eingreifen von einem ausstehenden Zustand in einen abgerechneten Zustand im Ledger übergeht. Die Versionskontrolle bietet einen Audit-Trail: Er kann genau sehen, wann eine Transaktion hinzugefügt oder geändert wurde, und sogar Änderungen rückgängig machen, wenn etwas falsch importiert wurde. Dies ist ein großartiges Beispiel dafür, wie Best Practices der Softwareentwicklung (wie die Quellcodeverwaltung) in Buchhaltungsunterlagen einfließen.

Multi-Currency und internationale Transaktionen: Kleine Unternehmen wickeln häufig Transaktionen in mehreren Währungen ab – beispielsweise kann ein Startup USD-Ausgaben haben, aber auch Zahlungen in EUR erhalten oder ein GBP-Bankkonto führen. Unser Showcase-Unternehmen nutzt die Multi-Currency-Funktionen von Beancount, um all dies in einem Ledger zusammenzufassen. Sie eröffneten separate Konten für jede Währung (z. B. Assets:Bank:Checking:USD und Assets:Bank:Checking:EUR), was ein gängiger Ansatz ist. Selbst wenn sich verschiedene Währungen ein Konto teilen, verfolgt Beancount den Saldo jeder Währung separat und erfordert, dass Transaktionen pro Währung ausgeglichen werden. Der Gründer führt häufig Bewertungsberichte aus, um die Gesamtguthaben des Unternehmens in die Basiswährung umgerechnet anzuzeigen. Da Beancount Preisabfragen unterstützt, richtete er mithilfe des Tools bean-price oder eines Plugins tägliche Preisfeeds für Währungskurse (und Aktienkurse für alle Anlagen) ein. Das Ergebnis ist, dass er jederzeit eine Bilanz in beispielsweise USD erstellen kann, die das EUR-Konto zum neuesten Kurs umgerechnet enthält. Community-Mitglieder weisen darauf hin, dass der Umgang mit mehreren Währungen in der Ledger-Buchhaltung einfach ist – Sie fügen einfach Transaktionen in der jeweiligen Währung hinzu und erfassen bei Bedarf Wechselkurse. Ein Benutzer teilte beispielsweise ein Beispiel für die Umrechnung von USD in EUR in CAD über Zwischenkonten, um Währungsumrechnungen in Beancount zu verwalten. In unserem Fall rechnet das kleine Unternehmen nicht unbedingt Währungen in Transaktionen um (es behält sie in der Landeswährung), sondern verwendet Berichte zur Konsolidierung. Diese Flexibilität war entscheidend für die globale Expansion des Startups.

Benutzerdefinierte Skripte und Erweiterungen: Nicht alles, was der Gründer brauchte, war sofort verfügbar, also erweiterte er Beancount mit benutzerdefinierten Plugins. Im Laufe der Zeit schrieb er eine Parser-Bibliothek, ein Formatierungstool und einen regelbasierten Transaktionsimporter und veröffentlichte viele davon als Open-Source-Pakete. Beispielsweise erstellten sie eine regelbasierte Import-Engine, die eine YAML-Konfiguration verwendet, um Transaktionen automatisch zu kategorisieren. Ein Ausschnitt dieser Konfiguration zeigt, wie bestimmte Zahlungsempfänger oder Beschreibungen (wie „Comcast“ oder „PG&E“) bestimmten Ausgabenkonten und Erzählungen zugeordnet werden, sodass bei deren Erscheinen in einem Bankfeed der korrekte Beancount-Eintrag ohne manuelle Bearbeitung generiert wird. Dies ist im Wesentlichen eine benutzerdefinierte Automatisierung, um Buchhaltungsregeln (für Versorgungsunternehmen, Abonnements usw.) spontan anzuwenden. Ein anderes Plugin stellt sicher, dass das Ledger immer ausgeglichen und formatiert bleibt. Alle diese Tools werden als Teil des Workflows des Gründers ausgeführt, wenn neue Daten aufgenommen werden. Das Ergebnis ist ein Ledger, das sich mit minimalem Eingriff „selbst aktualisiert“, was dem Gründer als Automatisierungs-besessenem Entwickler „pure Freude“ bereitet.

Sicherheit und Zugänglichkeit waren ebenfalls ein Anliegen. Der Gründer wollte, dass sein Finanzteam (und sogar seine Frau, die als Aufseherin fungiert) die Bücher problemlos einsehen kann. Dafür richtete er eine private Bereitstellung von Fava in der Cloud ein. Jedes Mal, wenn er einen neuen Ledger-Commit in das private Git-Repository pusht, stellt eine CI-Pipeline (mit GitHub Actions und AWS Elastic Beanstalk) eine aktualisierte Fava-Instanz bereit. Die Weboberfläche befindet sich hinter einem Passwort (mit einem Nginx-Proxy mit Basic Auth), sodass nur autorisierte Personen sie sehen können. Auf diese Weise sind die neuesten Finanzberichte immer über ein Browser-Dashboard verfügbar, ohne dass etwas lokal installiert werden muss. Das folgende Architekturdiagramm veranschaulicht diese Einrichtung: Die Beancount-Datei und die erforderliche Konfiguration werden zusammen mit Fava in ein Docker-Image gebündelt und auf AWS bereitgestellt, wobei Cloudflare als Proxy fungiert.

Automatisierung von Beancount in der Cloud: Dieses Diagramm zeigt eine Bereitstellungspipeline für ein Beancount-Ledger + Fava. Der Benutzer aktualisiert die Ledger-Datei lokal und pusht sie nach Git. Ein Docker-Container (einschließlich Fava und Nginx für die Authentifizierung) wird erstellt und auf einem AWS Beanstalk-Server bereitgestellt, und Cloudflare fungiert als Proxy. Das Ergebnis ist ein sicheres Webportal, über das die Finanzdaten des Kleinunternehmens von überall (vom Inhaber oder Team) in Echtzeit abgerufen werden können. Diese erweiterte Einrichtung zeigt, wie ein Kleinunternehmen Beancount in moderne Cloud-Tools integrieren kann, um Komfort zu erzielen, ohne die Datenhoheit aufzugeben.

Im täglichen Gebrauch konzentriert sich der Kleinunternehmer auf Ausnahmebehandlung anstatt auf Dateneingabe. Jeden Monat überprüft er kurz die automatisch importierten Transaktionen (mithilfe von Git-Unterschieden oder der Journalansicht von Fava), um nicht kategorisierte oder falsche Einträge zu erfassen. Er verwendet auch die Saldo-Assertionen von Beancount, um Konten abzustimmen. Nachdem er beispielsweise alle Juni-Transaktionen eingegeben hat, fügt er möglicherweise eine Saldo-Prüfung hinzu, um zu bestätigen, dass der Endsaldo des Bankkontos mit dem Kontoauszug übereinstimmt. Wenn dies nicht der Fall ist, gibt Beancount einen Fehler aus, der darauf hinweist, dass etwas fehlt oder falsch eingegeben wurde. Dies stellt sicher, dass die Bücher korrekt bleiben.

Wichtige Praktiken im Kleinunternehmens-Setup: Starke Automatisierung durch benutzerdefinierte Importer und Skripte (die das Ledger „zu 95 % automatisch“ machen), Verwendung der Versionskontrolle für Audit-Trails und Zusammenarbeit, Multi-Currency-Accounting mit Preisfeeds für die Bewertung und Bereitstellung von Fava für einfachen, gemeinsam nutzbaren Zugriff auf Finanzberichte. Das Kleinunternehmensszenario zeigt, wie weit Beancount mit Engineering-Aufwand getrieben werden kann – die Umwandlung der Buchhaltung in eine weitgehend automatisierte Pipeline bei gleichzeitiger Wahrung von Transparenz und Flexibilität. Selbst wenn man kein Programmierer ist, können viele dieser Vorteile durch die Verwendung von Community-Plugins (zum Formatieren, Erkennen doppelter Einträge usw.) und durch die Einführung des Plain-Text-Workflows erzielt werden, der häufige Überprüfungen und Backups fördert.

Persönlicher Finanzenthusiast: Budgetierung und benutzerdefinierte Analyse

Unser letzter Showcase ist ein persönlicher Finanzenthusiast – jemand, der Beancount verwendet, um Haushaltsfinanzen und Investitionen mit einem hohen Detaillierungsgrad zu verwalten. Dieser Benutzer behandelt seine persönlichen Finanzen mit der Strenge eines Buchhalters und der Neugier eines Datenanalysten. Das Ergebnis ist ein Beancount-Ledger, das nicht nur jeden Penny verfolgt, sondern auch als Basis für Budgetierung, Prognosen und analytische Experimente dient.

Organisieren des persönlichen Ledgers: Viele Einzelpersonen beginnen mit einer einzigen Beancount-Datei für alle ihre Konten, und dieser Enthusiast ist nicht anders. Sie führen ein Master-Ledger (z. B. main.beancount), das alle Konten (Bankkonten, Kreditkarten, Darlehen, Anlageportfolios usw.) und Transaktionen enthält. Im Laufe der Zeit haben sie eine gewisse Struktur eingeführt, indem sie Abschnitte aufgeteilt haben – zum Beispiel haben sie eine Datei für das Eröffnen/Schließen von Konten und separate Dateien für jährliche Transaktionen –, die in die Hauptdatei aufgenommen werden. Diese modulare Organisation erleichtert die Navigation in jahrelangen Daten (man kann alte Jahre in separaten Dateien archivieren), während sie logisch immer noch ein Ledger sind. Ein anderer persönlicher Benutzer im Community-Forum beschrieb ein ähnliches Layout: eine Hauptdatei, die andere nach Kategorien enthält (z. B. Income.beancount, Expenses.beancount, Investments.beancount). Unser Enthusiast hält es vorerst einfach: eine Datei, die über Geräte hinweg synchronisiert wird.

Apropos Synchronisieren: Da es sich um persönliche Finanzen handelt, möchte dieser Benutzer Transaktionen erfassen, wo immer sie sich befinden. Sie verwenden eine mobile App namens Beancount Mobile, um unterwegs schnell Einträge hinzuzufügen (z. B. um eine Barausgabe direkt im Geschäft zu protokollieren). Die Ledger-Datei wird über eine Cloud-Synchronisierung (in diesem Fall Syncthing) freigegeben, sodass ihr Telefon, Laptop und ein VPS (Server) alle die neueste Kopie haben. Auf einem Computer verwenden sie beancount-mode mit Emacs, um bequem mit Syntaxhervorhebung zu bearbeiten. Diese Einrichtung stellt sicher, dass sie Transaktionen sofort aufzeichnen und vermeiden, etwas zu vergessen, egal ob sie an ihrem Schreibtisch sitzen oder unterwegs sind. Es ist ein großartiges Beispiel für die Anpassung von Tech-Tools für persönlichen Komfort – der effektive Aufbau einer selbst gehosteten Alternative zu kommerziellen Budgetierungs-Apps.

Tagging und Metadaten für eine granulare Nachverfolgung: Dieser Benutzer nutzt Tags, um seinen Daten eine zweite Dimension hinzuzufügen, die über den Kontenplan hinausgeht. Für reguläre Budgetierungskategorien reichen Konten aus (sie haben Konten wie Expenses:Groceries, Expenses:Rent usw.), aber für übergreifende Themen wie Ereignisse oder Ziele verwenden sie Tags. Beispielsweise taggen sie alle Transaktionen, die sich auf ihr Hausrenovierungsprojekt beziehen, mit #HomeReno, egal ob es sich um den Kauf von Holz in einem Baumarkt (Ausgabe) oder den Erhalt eines Rabatts von einem Hersteller (Einnahme) handelt. Auf diese Weise können sie problemlos einen Bericht über die Gesamtprojektkosten erstellen, ohne dass diese Ausgaben unter verschiedenen Konten isoliert werden. Ein Reddit-Benutzer demonstrierte diesen Ansatz, indem er Ausgaben wie #garage-improvement oder #lighting-improvement für Hausprojekte taggte, wodurch es trivial ist, diese über die Abfragen von Beancount zu filtern und zu summieren. Unser Enthusiast macht dasselbe für Urlaube (#ItalyTrip2025), größere Anschaffungen und einmalige Ereignisse.

Metadaten (Schlüssel-Wert-Paare für Transaktionen) werden auch für einige bestimmte Zwecke verwendet. Beispielsweise fügen sie den großen Ausgaben Metadaten location: ... hinzu, um zu verfolgen, wo sie das Geld ausgegeben haben, oder note: ... für zusätzlichen Kontext über den Zahlungsempfänger und die Erzählung hinaus. In einigen Fällen haben sie sogar benutzerdefinierte Metadatenfelder erstellt, um bei der Prognose zu helfen. Ein Beispiel ist das Hinzufügen von budget: X und frequency: monthly zu bestimmten wiederkehrenden Ausgaben – eine Idee, die von einer Diskussion auf der Beancount-Mailingliste inspiriert wurde, in der ein Benutzer Budgetprognosen in Metadaten für jede Ausgabe speicherte. Diese Metadatenfelder wirken sich nicht auf den Kern von Beancount aus, aber der Enthusiast schrieb ein kleines Python-Skript, das sie liest und die tatsächlichen Ausgaben mit dem prognostizierten Budget vergleicht. Dies ist eine Alternative zur Verwendung der integrierten Budgets von Fava (siehe unten), die zeigt, wie Metadaten nach Belieben des Benutzers gebogen werden können. Wie der Ersteller von Beancount feststellte, sind Metadaten „nur für Sie da [zur Verwendung in benutzerdefinierten Skripten] – Beancount analysiert sie, ignoriert sie aber“ von selbst. Kurz gesagt, dieser Benutzer scheut sich nicht, das Ledger mit zusätzlichen Informationen zu erweitern, um seine persönliche Analyse zu unterstützen.

Budgetierung mit Beancount: Eines der Hauptziele für diesen Benutzer ist es, ein monatliches Budget einzuhalten. Sie verwendeten zuvor eine Budgetierungs-App (YNAB) und wollten einige ihrer Envelope-Budgetierungskonzepte replizieren. Es gibt verschiedene Möglichkeiten, in Beancount zu budgetieren, aber die einfachste ist die Verwendung der Budget-Direktiven von Fava. Unser Enthusiast fügt Ledger-Einträge mit budget wie folgt hinzu:

2025-01-01 custom "budget" Expenses:Groceries   "monthly" 500 USD
2025-01-01 custom "budget" Expenses:DiningOut "monthly" 200 USD
2025-01-01 custom "budget" Expenses:Travel "yearly" 3000 USD

Jede Zeile legt ein Budget für ein Konto (Kategorie) über einen Zeitraum fest. Fava zeigt dann Budget-vs-Ist-Balken in der Weboberfläche an, sodass der Benutzer beispielsweise sehen kann, dass er diesen Monat 480 USD für Lebensmittel von den budgetierten 500 USD ausgegeben hat und vielleicht 220 USD für DiningOut (über Budget). Der Enthusiast überprüft regelmäßig die Income Statement- und Expenses-Berichte von Fava, die sowohl monatliche Summen als auch die Budgetziele anzeigen. Fava rollt die täglichen/wöchentlichen Budgets bequem in die entsprechenden Zeiträume. Durch die Verwendung der Fava-Benutzeroberfläche hierfür benötigt der Benutzer keine separate Tabellenkalkulation für die Budgetierung. Es ist alles integriert. (Sie experimentierten auch mit einem stärker automatisierten „Envelope“-System, indem sie zu Beginn jedes Monats Gelder in Dummy-Konten verschoben, wie in den Foren vorgeschlagen, fanden aber die benutzerdefinierten Budget-Direktiven einfacher zu pflegen.)

Für die Prognose behalten sie neben den Budgets auch die kommenden Rechnungen im Auge. Einige Community-Mitglieder haben Plugins erstellt, um zukünftige Transaktionen für Abonnements oder Darlehensamortisationspläne zu generieren, aber dieser Benutzer entschied sich für einen einfacheren Ansatz: Sie führen einen separaten Abschnitt des Ledgers mit zukünftigen Transaktionen für bekannte Elemente (wie die Miete für den nächsten Monat oder eine kommende jährliche Versicherungszahlung). Diese bleiben im Ledger, beeinflussen aber nicht die heutigen Salden, und sobald das Datum erreicht ist und die Transaktion aktuell wird, dient sie als Erinnerung (und sie passen den Betrag bei Bedarf an, um ihn an die tatsächliche Belastung anzupassen). Es ist ein bisschen ein Hack, aber es funktioniert, um den Cashflow ohne komplexe Tools vorherzusagen.

Investment Tracking und Multi-Commodity-Accounting: Als Finanzenthusiast verwendet dieser Benutzer Beancount auch, um Anlagekonten – Aktien, Investmentfonds und Krypto – zusammen mit Bargeldkonten zu konsolidieren. Sie haben Brokerage-Konten, deren Bestände (z. B. Aktien von AAPL, GOOG usw.) in Beancount als Rohstoffe erfasst werden. Der Kauf von 10 Apple-Aktien wäre beispielsweise ein Eintrag, der das Brokerage-Bargeld gutschreibt und ein Vermögenskonto mit 10 AAPL als Rohstoffbetrag belastet. Die Fähigkeit von Beancount, mit jedem Rohstoff umzugehen, ist hier sehr nützlich. Man kann Währungen und Aktien frei mischen. „Beancount kann Mengen in jeder Währung verfolgen, sei es USD oder ein Tickersymbol“, wie ein Benutzer betonte, was eine große Verbesserung gegenüber persönlichen Finanz-Apps darstellte, die Aktienpositionen oft nicht gut unterstützen. Unser Enthusiast verwendet das Tool bean-price für einen nächtlichen Cronjob, um die neuesten Marktpreise für alle seine Wertpapiere und Fremdwährungen abzurufen. Jeden Abend um 4 Uhr morgens führt ein Skript bean-price aus, das Preise (von Yahoo Finance oder einer anderen Quelle) abruft und Preisdatensätze für diesen Tag an das Ledger anhängt. Auf diese Weise können sie beim nächsten Öffnen von Fava oder beim Ausführen eines Berichts aktuelle Portfoliowerte und sogar die Anlageperformance im Laufe der Zeit anzeigen. Das gesamte Nettovermögen, über Bankkonten, Altersvorsorgefonds und Krypto-Wallets hinweg, ist in einer einheitlichen Ansicht verfügbar. Dies ist ein Traum für einen datengesteuerten Investor: Kein Einloggen auf mehreren Plattformen erforderlich, um das Gesamtbild zu sehen. Sie haben im Wesentlichen ein persönliches Finanz-Dashboard erstellt, das von Beancount betrieben wird.

Analyse und Integration: Was diesen persönlichen Finanz-Power-User wirklich auszeichnet, ist, wie er die Daten analysiert, sobald sie in Beancount sind. Da sich alle Transaktionen in einer SQLite-Datenbank befinden (Beancount kann Daten über seine integrierte Abfragesprache abfragen, die SQL-ähnlich ist), kann der Benutzer benutzerdefinierte Analysen durchführen. Sie schrieben Python-Skripte, um Fragen wie „Was ist der gleitende 3-Monats-Durchschnitt meiner Lebensmittelausgaben?“ oder „Wie vergleichen sich die diesjährigen Ausgaben für Versorgungsunternehmen mit dem letzten Jahr?“ zu beantworten. Ein Skript fragt das Ledger nach bestimmten Tags ab und gibt Ergebnisse in ein Pandas-Dataframe zur weiteren Zahlenverarbeitung aus. Da das Ledger Plain Text ist, haben sie auch Jupyter-Notebooks verwendet, um mit verschiedenen Visualisierungen zu experimentieren (die über das hinausgehen, was Fava bietet). Beispielsweise erstellten sie ein benutzerdefiniertes Balkendiagramm der monatlichen Sparquote mithilfe von Matplotlib, indem sie Beancount-Daten in Python aggregierten. Diese Art der Ad-hoc-Analyse ist nur möglich, weil Beancount Daten zugänglich und maschinenlesbar hält. Wie ein Benutzer es formulierte, ist das Extrahieren von Daten trivial – „Ich habe ein Python-Skript, das Daten mithilfe der Abfragesprache aus Beancount abruft, und dann verwende ich ein Pandas-Dataframe, um die Daten in einem Bericht vorzubereiten“. Unser Enthusiast hat ein Repository mit kleinen Skripten wie diesem, die er für seine jährliche Finanzprüfung ausführt.

Natürlich erfordert nicht alles Programmierung – die meiste Zeit verlassen sie sich auf die integrierten Diagramme von Fava. Fava bietet ein Nettovermögensliniendiagramm, einen Trend von Einnahmen und Ausgaben und sogar eine Treemap-Aufschlüsselung (wie bereits gezeigt), die alle nur einen Klick entfernt sind. Der Benutzer schätzt, dass die gesamte Historie seiner Finanzen seit 2018 abfragbar und überprüfbar ist. Wenn sie sich beispielsweise fragen, „wie viel habe ich in den letzten 5 Jahren für Autoreparaturen ausgegeben?“, können sie eine schnelle Abfrage schreiben oder in Fava filtern, um die Antwort zu erhalten, anstatt Quittungen zu durchsuchen. Diese Ermächtigung ist genau das, was sie zu Beancount gezogen hat: vollständige Datenhoheit und unendliche Flexibilität bei der Analyse. Als Bonus ist das Plain-Text-Ledger zukunftssicher – es kann versioniert, migriert oder sogar von anderen Tools analysiert werden, falls erforderlich. Im Gegensatz zu einer Closed-Source-App besteht kein Risiko, den Zugriff auf ihre Finanzhistorie zu verlieren.

Wichtige Praktiken im persönlichen Setup: Verwendung von mobilen und Desktop-Tools für eine bequeme Dateneingabe, Verwendung von Tags und benutzerdefinierten Metadaten, um Lebensereignisse und kategorieübergreifende Gruppierungen zu verfolgen, Implementierung von Budgets durch die budget-Direktiven von Fava für laufende Ausgabenziele, Verfolgung von Investitionen und mehreren Währungen im selben Ledger (mit automatisierten Preisaktualisierungen) und Durchführung benutzerdefinierter Analysen durch direktes Abfragen der Ledger-Daten. Dieser Fall zeigt, dass selbst persönliche Finanzenthusiasten mit ein wenig Einrichtung ein Maß an Einblick und Kontrolle erreichen können, das normalerweise Unternehmen vorbehalten ist – und das alles, während es für einen technisch versierten Benutzer unterhaltsam und ansprechend bleibt.

Fazit

In diesen Community-Beispielen ist ein klares Thema, dass die Flexibilität von Beancount ein hochpersonalisiertes Accounting-System ermöglicht. Power-User in der Community haben einfache Textdateien genutzt, um Lösungen zu erstellen, die kommerzieller Software in Bezug auf die Funktionalität Konkurrenz machen, aber dennoch auf ihre Workflows zugeschnitten sind. Freelancer taggen und verknüpfen Einträge, um Kundenprojekte und Rechnungen einfach zu verwalten. Kleinunternehmer automatisieren mühsame Buchhaltungsaufgaben und integrieren Beancount in moderne Infrastruktur für stets aktuelle Finanzdaten. Persönliche Finanzenthusiasten verwenden das Ledger als Single Source of Truth für Budgetierung, Investitionen und Entscheidungsfindung und erweitern es mit Tags und Tools, um praktisch jede Frage zu ihrem Geld zu beantworten. All dies wird erreicht, während die Kernvorteile der Plain-Text-Buchhaltung erhalten bleiben: Transparenz, Prüfbarkeit und Kontrolle über die eigenen Daten.

Die Community von Beancount hat auch ein reichhaltiges Ökosystem von Plugins und Integrationen hervorgebracht. Von Editormodi und mobilen Apps für die Eingabe über die Fava-Weboberfläche für die Visualisierung bis hin zu unzähligen Importern und Dienstprogrammen auf GitHub gibt es Ressourcen, um fast alle Bedürfnisse zu erfüllen. Benutzer teilen häufig ihre Ledger-Setups in Foren und Blogs, damit andere lernen und Best Practices übernehmen können. Wichtig ist, dass sensible Informationen aufgrund des für Menschen lesbaren Formats privat gehalten (oder zur Weitergabe leicht redigiert) werden können – wie wir es in diesem Showcase getan haben. Die obigen Beispiele zeigen, dass Sie Beancount nach Ihren Wünschen gestalten können, egal ob Sie ein freiberuflicher Entwickler, ein Startup-Gründer oder ein persönlicher Finanz-Nerd sind. Indem Sie Tags und