Zum Hauptinhalt springen

Beancount-Community-Setups, Plugins und Workflows

Entdecken Sie echte Beancount-Buchhaltungssetups aus der Community: Plugins, Fava-Workflows, GitHub-Projekte und maßgeschneiderte Bücher.

Beancount-Einrichtungen aus der Praxis

Einführung

Beancount ist ein vielseitiges Buchhaltungssystem in Klartext, und seine Nutzer haben es an eine breite Palette realer Anforderungen angepasst. In dieser Community-Vorstellung zeigen wir anonymisierte Beispiele, wie unterschiedliche Personen ihre Beancount-Buchhaltungsabläufe strukturieren und nutzen – von Freiberuflern und Kleinunternehmern bis zu Enthusiasten der privaten Finanzverwaltung. Diese Beispiele heben kreative Praktiken hervor, wie das Markieren von Buchungen mit Metadaten, die Automatisierung von Hauptbuch-Updates mit eigenen Skripten, die Verwaltung mehrerer Währungen, Budgetierung und Prognosen sowie die Erweiterung von Beancount mit Plugins oder Integrationen (wie die Fava-Weboberfläche).

For living overviews of the same tooling cluster, see Beancount v3: What's New?, Essential Beancount Native Plugins You Should Know, The Beancount Ecosystem, and Beancount's Technical Edge. Das Ziel ist es, Buchhalter, Entwickler und finanzaffine Nutzer zu inspirieren und zu informieren, was mit dem flexiblen System von Beancount möglich ist.

Gewinn- und Verlustrechnung des öffentlichen Beancount-Hauptbuchs von Apple auf beancount.io mit Nettogewinn-Diagramm sowie Einnahmen- und Ausgabenaufstellungen

Beispieloberfläche: Viele Beancount-Nutzer verlassen sich auf Fava – ein quelloffenes Web-Dashboard – oder das gehostete Pendant auf beancount.io zur Visualisierung ihrer Finanzen. Diese Werkzeuge verwandeln ein Beancount-Hauptbuch in interaktive Berichte und Diagramme. Zum Beispiel zeigt diese Gewinn- und Verlustrechnung die Einnahmen und Ausgaben nach Kategorie über die Zeit auf und gibt einen schnellen Überblick darüber, woher das Geld kommt und wohin es fließt. Nutzer können diese Ansicht nach Zeit, Konto oder Tags filtern, um in bestimmte Projekte oder Zeiträume einzutauchen. Solche Visualisierungen machen Klartextdaten zugänglicher und ermöglichen es den Nutzern, Trends und Auffälligkeiten auf einen Blick zu erkennen.

Jede Beancount-Einrichtung ist einzigartig, aber es zeigen sich gemeinsame Muster. Im Folgenden betrachten wir drei Szenarien – einen Freiberufler, einen Kleinunternehmer und einen Power-Nutzer der privaten Finanzverwaltung –, um zu sehen, wie sie ihre Konten organisieren und die Funktionen von Beancount nutzen. Alle persönlichen Details wurden entfernt oder verallgemeinert, der Fokus liegt ausschließlich auf Techniken und Konfigurationen.

Freiberufler: Projekttagging und Rechnungsverfolgung

Unser erstes Beispiel ist ein freiberuflicher Berater, der Beancount als Fundament für seine Geschäftsfinanzen nutzt. Das Hauptbuch dieses Freelancers ist so organisiert, dass Einnahmen und Ausgaben pro Projekt verfolgt und Rechnungen für mehrere Kunden verwaltet werden können. Sie haben für jeden Kunden im Bereich Vermögenswerte ein eigenes Konto für Forderungen (A/R) eingerichtet, um klar zu trennen, wer was schuldet. Wenn ein Projekt abgeschlossen und eine Rechnung an einen Kunden erstellt wird, wird eine Buchung erfasst, bei der das Kunden-A/R-Konto belastet und ein Einnahmekonto gutgeschrieben wird. Zum Beispiel 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 ^INV-0001-Notation ein Link (eine eingebaute Beancount-Metadatenfunktion), mit dem diese Buchung mit der Rechnungsnummer markiert wird. Wenn der Kunde einen Teil oder die gesamte Rechnung bezahlt, enthält die Zahlungsbuchung denselben ^INV-0001-Link, der die beiden Einträge verbindet. Dieses Verknüpfen erleichtert es, Zahlungen bestimmten Rechnungen zuzuordnen und offene Beträge zu sehen. Wie ein Community-Mitglied erklärte, kann man solche Tags oder Links nutzen, um Teilzahlungen zu markieren – z. B. eine Zahlung von $20 gegen eine $30-Rechnung – sowohl im Rechnungseintrag als auch im Zahlungseintrag. Durch das Abfragen des Hauptbuchs nach diesem Rechnungslink kann der Freelancer sofort sehen, wie viel von der Rechnung bezahlt wurde und was noch offen ist.

Zusätzlich zu Links verwendet der Freelancer intensiv Tags zur Kategorisierung. Tags in Beancount sind mit # vorangestellte Labels, mit denen Buchungen später gefiltert werden können. Dieser Nutzer taggt jede abrechenbare Ausgabe für einen Kunden mit dem Projektcode, wie #ProjectX, und erstattet Auslagen mit #Reimbursable. Wenn er beispielsweise Flugtickets für ein Kundenprojekt kauft, könnte der Ausgabeneintrag #ProjectX #Reimbursable enthalten. Diese Praxis ermöglicht es, Berichte nach Projekt oder Kunde zu erstellen, indem auf Tags gefiltert wird. Nach einem Projekt kann der Freelancer eine Abfrage durchführen, die alle #Reimbursable-Ausgaben dieses Projektes auflistet und sicherstellt, dass er dem Kunden jede abrechnet. Ein Beancount-Nutzer bemerkte, dass das Taggen von Dienstreiseausgaben half, nicht erstattete Auslagen zu erkennen – idealerweise gleichen sich die Ausgaben einer Dienstreise auf $0 aus, wenn alle Rückerstattungen vom Kunden eingehen. Dies zeigt, wie Tagging in Kombination mit den Abfragefähigkeiten von Beancount eine zusätzliche Kontrolle für Freelancer bei der Verwaltung abrechenbarer Ausgaben bietet.

Um den Status ausstehender Zahlungen zu verwalten, verwendet unser Freelancer eine spezielle Konvention für ausstehende Forderungen. Er wird das Tag #UNRESOLVED auf jede Rechnungstransaktion anwenden, die noch nicht vollständig bezahlt wurde. Beancount (und Fava) erzwingen dieses Tag nicht, aber es ist ein von der Community etablierter Standard, um Transaktionen zu kennzeichnen, die noch nicht beglichen sind. Zum Beispiel würde die obige Rechnungstransaktion bis zur vollständigen Zahlung von 5.000 $ durch Kunde A das Tag #UNRESOLVED enthalten. Durch Filtern nach diesem Tag kann der Freelancer jederzeit alle offenen Rechnungen auflisten. Sobald die Zahlung eingegangen und verbucht ist (die entsprechende Forderungstransaktion erfasst wurde), entfernt oder ignoriert er das #UNRESOLVED-Tag, und das Forderungskonto dieses Kunden gleicht sich auf null aus. Dieses System stellt sicher, dass keine Rechnung "zwischen die Stühle gerät." Es ist im Grunde ein Altersbericht in Klartext – wenn eine Forderung nicht null ist und als ungelöst markiert bleibt, bedarf sie der Aufmerksamkeit.

Da Freelancer oft mit mehreren Zahlungsmethoden und manchmal mehreren Währungen arbeiten, unterstützt die Beancount-Konfiguration dies nahtlos. In unserem Beispiel könnte der Berater manche Kunden in USD und andere in EUR abrechnen. Die Mehrwährungsbehandlung ist in Beancount unkompliziert: Jedes Konto kann mehrere Waren (Währungen werden als Waren 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 jeweiligen Währung unter demselben Konto buchen. Beancount verfolgt Salden pro Währung automatisch. Ein Anwender betonte, wie schön es ist, dass „Beancount Mengen in jeder Währung verfolgen kann, sei es USD oder ein Börsenkürzel“, alles in einem Hauptbuch. Unser Freelancer nutzt dies, indem er price-Direktiven für Wechselkurse aufzeichnet, wann immer er Währungen für Berichte umrechnen muss. Er kann dann einen Einkommensbericht in der Heimatwährung erstellen, sobald er periodische Wechselkurse oder Marktpreise eingegeben hat.

Abschließend integriert dieser Freelancer sein Beancount-Hauptbuch mit praktischen Werkzeugen, um den Arbeitsprozess zu optimieren. Beispielsweise fügt er PDF-Kopien jeder Rechnung dem Hauptbuch über Dokumenten-Metadaten hinzu. Ein typischer Zahlungseintrag für eine Rechnung 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 Buchungssätzen zu verknüpfen, und Fava zeigt für diese Anhänge einen Hyperlink an. Das bedeutet, dass der Freelancer (oder dessen Buchhalter) direkt vom Hauptbuchbericht aus auf die Originalrechnung im PDF-Format zugreifen kann, was einen einfachen Zugriff auf die Belegunterlagen garantiert. Der Freelancer nutzt auch Favas Berichte, um ihr Geschäft zu überwachen: Indem sie die Gewinn- und Verlustrechnung oder Bilanz nach Kunde filtert, kann sie die Profitabilität pro Kunde sehen und überprüfen, dass alle Projekte bezahlt sind. Zusammenfassend zeigt das Beancount-System dieses Freelancers eine intensive Nutzung von Tags und Verlinkungen zur Verwaltung der projektbasierten Buchhaltung. Es verwandelt ein reines Text-Hauptbuch in ein robustes Buchhaltungswerkzeug für Freelancer mit klarer Sicht auf Projektkosten, mehrwährungsfähige Einnahmen und Rechnungsstatus.

Wichtige Praktiken im Freelancer-Setup: Tags verwenden, um Buchungen nach Projekt oder Zweck zu gruppieren, Rechnungen und Zahlungen mit eindeutigen IDs zu verlinken, ausstehende Forderungen mit einem #UNRESOLVED-Tag zu markieren, Rechnungsdokumente als Anhang an Hauptbucheinträge zur Referenz anzuhängen und die Mehrwährungsunterstützung von Beancount zu nutzen, um internationale Kunden problemlos abzurechnen. All dies wird mit reinen Textbuchungen plus einigen Hilfstools erreicht, was die Macht der Metadaten in Beancount demonstriert.

Kleinunternehmen: Automatisierung und Multiwährungs-Buchhaltung

Als nächstes betrachten wir einen Kleinunternehmer – konkret einen Startup-Gründer –, der Beancount zur Führung der Firmenbücher einsetzte. Kleinunternehmen haben ähnliche Bedürfnisse wie Freelancer (Rechnungen, Ausgaben, Multiwährung), jedoch oft in größerem Umfang und mit stärkerem Fokus auf Automatisierung, Konsistenz und Zusammenarbeit. In diesem Fall war der Gründer technisch versiert und entwickelte einen hochautomatisierten Beancount-Workflow, um die manuelle Buchhaltung zu minimieren. Nach der Evaluierung traditioneller Buchhaltungssoftware wie QuickBooks entschied er sich für die Plain-Text-Methode von Beancount, um volle Datenkontrolle zu behalten. Über mehrere Jahre hinweg wurden maßgeschneiderte Tools iterativ entwickelt, um einen zu 95 % automatisierten Buchhaltungsprozess zu erreichen.

Automatisierte Importe und Abstimmung: Eine der ersten Herausforderungen bestand darin, Transaktionen aus verschiedenen Quellen (Bankkonten, Kreditkarten, Zahlungsprozessoren) in das Kontobuch zu importieren. Anstatt jede Transaktion manuell einzutippen, richtete dieser Benutzer Importskripte ein, um Daten abzurufen und in das Beancount-Format zu übersetzen. Sie erstellten maßgeschneiderte Python-Importer für das CSV- oder API-Format jeder Finanzinstitution, sodass sie mit einem einzigen Befehl neue Transaktionen abrufen und an das Kontobuch anhängen können. Zum Beispiel kann der Gründer mit beangulp-Importern 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 Importerskripte für jede Bank hat und diese über einen einfachen Befehl (mithilfe einer Justfile) aufrufen kann, um sein Kontobuch 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 passenden Konten.

Um die Datenintegrität sicherzustellen, auch wenn diese Einträge automatisch hinzugefügt werden, validieren sie das Kontobuch vor jedem Commit und verwenden Beancount’s Plugins. Zum Beispiel ist das beancount.plugins.noduplicates-Plugin aktiviert, um das versehentliche doppelte Importieren derselben Transaktion zu verhindern, und beancount.plugins.nounused markiert alle Konten, die keine Einträge haben (hilfreich zur Bereinigung veralteter Konten). Wir empfehlen bea check für diesen Validierungsschritt. Der Gründer nutzt außerdem einen Community-Formatter (wie beancount-black), um die Kontobuchdatei durchgängig stilistisch einheitlich zu halten. Das ist wichtig, denn bei vielen automatischen Änderungen erleichtert ein einheitlicher Stil das Vergleichen von Änderungen (Diffs) und Audits. Tatsächlich führt der Gründer das Kontobuch in einem Git-Repository und behandelt Kontobuchaktualisierungen wie Codeänderungen. Jeder neue Satz importierter Transaktionen wird zu einem Git-Commit, und sie können Diffs überprüfen, um zu sehen, was sich geändert hat. In einem Screenshot zeigen sie eine Git-Historie, in der eine Kreditkartentransaktion für „Costco“ von einem ausstehenden Status auf erledigt im Kontobuch wechselt, alles ohne manuellen Eingriff. Die Versionskontrolle liefert eine Prüfsumme: Sie können genau sehen, wann eine Transaktion hinzugefügt oder geändert wurde und Änderungen sogar zurücknehmen, falls etwas falsch importiert wurde. Dies ist ein großartiges Beispiel dafür, wie bewährte Softwareentwicklungspraktiken (wie Versionskontrolle) in Buchhaltungsunterlagen einfließen können.

Mehrwährungs- und internationale Transaktionen: Kleine Unternehmen tätigen häufig Transaktionen in mehreren Währungen – zum Beispiel kann ein Startup USD-Ausgaben haben, aber auch Zahlungen in EUR erhalten oder ein GBP-Bankkonto führen. Das vorgestellte Unternehmen nutzt die Mehrwährungsfunktionen von Beancount, um all dies in einem Hauptbuch zu konsolidieren. 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 jedoch verschiedene Währungen dasselbe Konto teilen, verfolgt Beancount den Saldo jeder Währung separat und verlangt, dass Transaktionen auf Währungsbasis ausgeglichen sind. Der Gründer führt häufig Bewertungsberichte durch, um die Gesamtsalden des Unternehmens in die Basiswährung umgerechnet zu sehen. Da Beancount Kursabfragen unterstützt, richtete er tägliche Kursfeeds für Wechselkurse (und Aktienkurse für etwaige Investitionen) mit einem geplanten Skript zur Kursabfrage ein. Das Ergebnis ist, dass er jederzeit eine Bilanz in z. B. USD erstellen kann, die das EUR-Konto zum neuesten Kurs umgerechnet umfasst. Community-Mitglieder weisen darauf hin, dass der Umgang mit mehreren Währungen in der Ledger-stilbuchhaltung einfach ist – man fügt einfach Transaktionen in der jeweiligen Währung hinzu und erfasst bei Bedarf Wechselkurse. Ein Nutzer teilte beispielsweise ein Beispiel, wie man USD in EUR in CAD durch Zwischenkonten konvertiert, um Währungsumrechnungen in Beancount zu verwalten. In unserem Fall konvertiert das kleine Unternehmen die Währungen bei den Transaktionen nicht unbedingt (sie behalten sie in der jeweiligen Landeswährung), sondern verwendet Berichte für die Konsolidierung. Diese Flexibilität war entscheidend, als das Startup global expandierte.

Benutzerdefinierte Skripte und Erweiterungen: Nicht alles, was der Gründer benötigte, war sofort verfügbar, daher erweiterte er Beancount mit benutzerdefinierten Plugins. Im Laufe der Zeit schrieb er eine Parser-Bibliothek, ein Formatierungstool und einen regelbasierten Transaktionsimporteur, von denen viele als Open-Source-Pakete veröffentlicht wurden. Zum Beispiel entwickelte er 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 Aufwandskonten und Erläuterungen zugeordnet werden, sodass bei Auftreten in einem Bankfeed automatisch der korrekte Beancount-Eintrag ohne manuelle Bearbeitung erzeugt wird. Dies ist im Wesentlichen eine benutzerdefinierte Automatisierung zur Anwendung von Buchführungsregeln (für Versorgungsleistungen, Abonnements usw.) in Echtzeit. Ein weiteres Plugin stellt sicher, dass das Ledger immer ausbalanciert und formatiert bleibt. All diese Werkzeuge laufen im Workflow des Gründers, sobald neue Daten eingelesen werden. Das Ergebnis ist ein Ledger, das sich mit minimalem Eingreifen „selbst aktualisiert“ und dem Gründer als automatisierungsbesessenem Entwickler „reine Freude“ bereitet.

Sicherheit und Zugänglichkeit waren ebenfalls wichtig. Der Gründer wollte, dass sein Finanzteam (und sogar seine Ehefrau als Aufsichtsperson) die Bücher einfach 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, deployt eine CI-Pipeline (unter Verwendung von GitHub Actions und AWS Elastic Beanstalk) eine aktualisierte Fava-Instanz. Die Weboberfläche ist durch ein Passwort geschützt (mittels eines Nginx-Proxy mit Basic Auth), sodass nur autorisierte Personen Zugriff haben. So sind die neuesten Finanzberichte immer über ein Browser-Dashboard verfügbar, ohne dass etwas lokal installiert werden muss. Das nachstehende Architekturdiagramm veranschaulicht dieses Setup: Die Beancount-Datei und die notwendige Konfiguration werden zusammen mit Fava in einem Docker-Image gebündelt und auf AWS bereitgestellt, mit Cloudflare davor zur Sicherheit.

flowchart LR
    A[Edit ledger locally] --> B[Push to private Git repo]
    B --> C[CI builds Docker image<br/>Fava + Nginx basic auth]
    C --> D[Deploy to AWS<br/>Elastic Beanstalk]
    D --> E[Cloudflare proxy]
    E --> F[Owner & team view<br/>reports in browser]

Automatisierung von Beancount in der Cloud: Der Benutzer aktualisiert die Hauptbuchdatei lokal und pusht sie zu Git; ein Docker-Container (einschließlich Fava und Nginx für Authentifizierung) wird gebaut und auf einem AWS Beanstalk-Server bereitgestellt, während Cloudflare als Proxy fungiert. Das Ergebnis ist ein sicheres Webportal, über das die Finanzdaten des Kleinunternehmens von überall (vom Eigentümer oder Team) in Echtzeit abgerufen werden können. Diese fortgeschrittene Einrichtung zeigt, wie ein Kleinunternehmen Beancount mit modernen Cloud-Tools integrieren kann, um Komfort zu erreichen, ohne die Datenhoheit aufzugeben.

Im Tagesgeschäft liegt der Fokus des Kleinunternehmers auf Fehlerbehandlung statt auf der Dateneingabe. Jeden Monat überprüft er kurz die automatisch importierten Buchungen (mittels Git-Diffs oder Favas Journalansicht), um nicht kategorisierte oder fehlerhafte Einträge zu erkennen. Er verwendet außerdem Beancounts Saldo-Assertions, um Konten abzugleichen. Zum Beispiel kann er nach Eingabe aller Juni-Bewegungen eine Saldo-Kontrolle hinzufügen, um zu bestätigen, dass der Endsaldo des Bankkontos mit dem Auszug übereinstimmt; falls nicht, gibt Beancount einen Fehler aus und weist darauf hin, dass etwas fehlt oder falsch eingetragen wurde. Dies stellt sicher, dass die Bücher genau bleiben.

Schlüsselpraktiken im Kleinunternehmens-Setup: Intensive Automatisierung durch benutzerdefinierte Importeure und Skripte (die das Hauptbuch zu 95 % automatisieren), Einsatz von Versionskontrolle für Prüfpfade und Zusammenarbeit, Mehrwährungsbuchhaltung mit Preisfeeds für Bewertung sowie Einsatz von Fava für einfachen, gemeinschaftlichen Zugriff auf Finanzberichte. Das Kleinunternehmensszenario zeigt, wie weit Beancount mit technischem Aufwand getrieben werden kann – indem die Buchhaltung zu einer weitgehend automatisierten Pipeline wird, bei gleichzeitiger Wahrung von Transparenz und Flexibilität. Auch ohne Programmierkenntnisse können viele dieser Vorteile durch Community-Plugins (für Formatierung, Dublettenerkennung etc.) und die Nutzung des Plain-Text-Workflows erreicht werden, der häufige Überprüfungen und Backups fördert.

Privatfinanz-Enthusiast: Budgetierung und individuelle Analyse

Unser letztes Anwendungsbeispiel ist ein Privatfinanz-Enthusiast – jemand, der Beancount verwendet, um Haushaltsfinanzen und Anlagen sehr detailliert zu verwalten. Dieser Nutzer behandelt seine privaten Finanzen mit der Genauigkeit eines Buchhalters und der Neugierde eines Datenanalysten. Das Ergebnis ist ein Beancount-Hauptbuch, das nicht nur jeden Cent verfolgt, sondern auch als Grundlage für Budgetierung, Prognosen und analytische Experimente dient.

Organisation des persönlichen Hauptbuchs: Viele Personen beginnen mit einer einzigen Beancount-Datei für alle ihre Konten, und dieser Enthusiast ist keine Ausnahme. Sie führen ein Hauptbuch (z.B. main.beancount), das alle Konten (Bankkonten, Kreditkarten, Kredite, Anlageportfolios usw.) und Transaktionen beinhaltet. Im Laufe der Zeit brachten sie etwas Struktur ein, indem sie Abschnitte aufteilten – beispielsweise haben sie eine Datei für Kontoeröffnungen/-schließungen und separate Dateien für Jahresabschluss-Transaktionen –, die in die Hauptdatei eingegliedert sind. Diese modulare Organisation erleichtert die Navigation durch jahrelange Daten (man kann alte Jahre in separaten Dateien archivieren), während das Hauptbuch logisch eine Einheit bleibt. Ein anderer persönlicher Nutzer im Community-Forum beschrieb ein ähnliches Layout: eine Hauptdatei, die andere nach Kategorien einbindet (z.B. Income.beancount, Expenses.beancount, Investments.beancount). Unser Enthusiast hält es vorerst einfach: eine Datei, die auf mehreren Geräten synchronisiert wird.

Apropos Synchronisierung: Da es sich um persönliche Finanzen handelt, möchte dieser Nutzer Transaktionen überall erfassen können. Sie verwenden eine mobile App namens Beancount Mobile, um unterwegs schnell Buchungen hinzuzufügen (beispielsweise eine Barausgabe direkt im Geschäft). Die Hauptbuchdatei wird über Cloud-Sync (in diesem Fall Syncthing) geteilt, sodass ihr Telefon, Laptop und ein VPS (Server) immer die aktuellste Kopie haben. Am Computer bevorzugen sie die Verwendung von Emacs mit beancount-mode für komfortables Bearbeiten mit Syntaxhervorhebung. Dieses Setup stellt sicher, dass sie unabhängig davon, ob sie am Schreibtisch oder unterwegs sind, Transaktionen sofort erfassen können und nichts vergessen. Es ist ein großartiges Beispiel, wie Technik-Tools für persönlichen Komfort adaptiert werden – effektiv ein selbst gehostetes Pendant zu kommerziellen Budget-Apps.

Tagging und Metadaten für granulare Nachverfolgung: Dieser Nutzer nutzt Tags, um ihren Daten neben dem Kontenplan eine zweite Dimension hinzuzufügen. Für reguläre Budgetkategorien reichen Konten aus (sie haben Konten wie Expenses:Groceries, Expenses:Rent usw.), aber für übergreifende Themen wie Ereignisse oder Ziele verwenden sie Tags. Zum Beispiel taggen sie alle Transaktionen, die mit ihrem Hausrenovierungs-Projekt zu tun haben, mit #HomeReno, egal ob es der Kauf von Holz im Baumarkt (Ausgabe) oder das Erlangen eines Herstellerrabatts (Einnahme) ist. So können sie leicht einen Bericht über die gesamten Projektkosten erstellen, ohne dass diese Ausgaben in verschiedenen Konten isoliert sind. Ein Reddit-Nutzer hat diesen Ansatz demonstriert, indem er Ausgaben wie #garage-improvement oder #lighting-improvement für Hausprojekte taggte, was es trivial macht, diese über Beancount-Abfragen zu filtern und zusammenzufassen. Unser Enthusiast tut dasselbe für Urlaube (#ItalyTrip2025), größere Anschaffungen und Einzelereignisse.

Metadaten (Schlüssel-Wert-Paare bei Transaktionen) werden auch für einige spezifische Zwecke verwendet. Zum Beispiel fügen sie großen Ausgaben eine location: ...-Metadaten hinzu, um nachzuverfolgen, wo das Geld ausgegeben wurde, oder eine note: ... für zusätzlichen Kontext über Zahlungsempfänger und Beschreibung hinaus. In wenigen 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 in der Beancount-Mailingliste inspiriert wurde, bei der ein Nutzer Budgetprojektionen für jede Ausgabe in Metadaten speicherte. Diese Metadatenfelder beeinflussen den Beancount-Kern nicht, aber der Enthusiast schrieb ein kleines Python-Skript, das sie ausliest und die tatsächlichen Ausgaben mit dem geplanten Budget vergleicht. Dies ist eine Alternative zur Verwendung der eingebauten Budgets von Fava (unten beschrieben) und zeigt, wie Metadaten nach Belieben genutzt werden können. Wie der Erfinder von Beancount bemerkte, sind Metadaten „nur für dich [zur Verwendung in eigenen Skripten] – Beancount analysiert sie, ignoriert sie jedoch von sich aus“. Kurz gesagt, dieser Nutzer scheut sich nicht, das Hauptbuch mit zusätzlichen Informationen zur Unterstützung seiner persönlichen Analyse zu erweitern.

Budgetierung mit Beancount: Eines der Hauptziele dieses Nutzers ist es, sich an ein monatliches Budget zu halten. Sie verwendeten zuvor eine Budget-App (YNAB) und wollten einige der Konzepte von Umschlagbudgetierung nachbilden. Es gibt verschiedene Möglichkeiten, in Beancount zu budgetieren, aber am einfachsten ist die Nutzung von Favas Budget-Anweisungen. Unser Enthusiast fügt dem Hauptbuch budget-Einträge 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 in der Weboberfläche Budget-gegen-Ist-Balken an, die dem Benutzer beispielsweise zeigen, dass er diesen Monat 480 USD für Lebensmittel von den gebudgeteten 500 ausgegeben hat und vielleicht 220 für Restaurants (über dem Budget). Der Enthusiast überprüft regelmäßig Favas Gewinn- und Verlustrechnung und Ausgaben-Berichte, die sowohl monatliche Gesamtsummen als auch die Budgetziele anzeigen. Fava fasst die täglichen/wöchentlichen Budgets bequem zu den entsprechenden Zeiträumen zusammen. Durch die Verwendung der Fava-Benutzeroberfläche hierfür benötigt der Benutzer keine separate Tabellenkalkulation für das Budget; alles ist integriert. (Sie haben auch mit einem automatisierteren „Umschlag“-System experimentiert, indem sie zu Beginn jedes Monats Gelder auf Dummy-Konten verschoben, wie im Forum vorgeschlagen, fanden aber die benutzerdefinierten Budgetanweisungen einfacher zu pflegen.)

Für die Prognose über Budgets hinaus behalten sie kommende Rechnungen im Blick. Einige Community-Mitglieder haben Plugins zur Erstellung zukünftiger Transaktionen für Abonnements oder Tilgungspläne von Darlehen entwickelt, aber dieser Benutzer entschied sich für einen einfacheren Ansatz: Sie führen einen separaten Abschnitt im Ledger mit zukunftsdatieren Transaktionen für bekannte Posten (wie die Miete nächsten Monats oder eine bevorstehende 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 der tatsächlichen Belastung zu entsprechen). Es ist ein kleiner Trick, funktioniert aber für die Prognose des Cashflows ohne komplexe Werkzeuge.

Investment-Tracking und Multi-Währungsbuchhaltung: Als Finanz-Enthusiast verwendet dieser Nutzer Beancount außerdem, um Investitionskonten – Aktien, Investmentfonds und Krypto – neben den Barkonten zu konsolidieren. Sie haben Brokerage-Konten, deren Bestände (z. B. Aktien von AAPL, GOOG usw.) in Beancount als Rohstoffe erfasst werden. Zum Beispiel wäre der Kauf von 10 Apple-Aktien ein Eintrag, der das Brokerage-Bargeld gutschreibt und ein Aktivkonto mit 10 AAPL als Rohstoffmenge belastet. Beancounts Fähigkeit, beliebige Rohstoffe zu verwalten, 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 Nutzer hervorhob, was eine große Verbesserung gegenüber persönlichen Finanzapps darstellt, die oft Aktienpositionen nicht gut unterstützen. Unser Enthusiast nutzt einen nächtlichen Cron-Job, um die neuesten Marktpreise für alle seine Wertpapiere und ausländischen Währungen abzurufen. Jeden Abend um 4 Uhr morgens holt ein Skript Preise (von Yahoo Finance oder einer anderen Quelle) und fügt Preisdaten zum Tagesbuch hinzu. So können sie beim nächsten Öffnen von Fava oder dem Erstellen eines Berichts aktuelle Portfoliowerte und sogar die Investment-Performance über die Zeit sehen. Das gesamte Vermögen, über Bankkonten, Rentenfonds und Krypto-Wallets hinweg, ist in einer einheitlichen Ansicht verfügbar. Dies ist ein Traum für einen datengetriebenen Investor: kein Einloggen auf mehreren Plattformen, um das Gesamtbild zu sehen. Sie haben im Grunde ein persönliches Finanz-Dashboard aufgebaut, das von Beancount angetrieben wird.

Analyse und Integration: Was diesen Power-User im Bereich der persönlichen Finanzen wirklich auszeichnet, ist, wie er die Daten analysiert, sobald sie in Beancount sind. Da alle Transaktionen in einer SQLite-Datenbank liegen (Beancount kann Daten über seine eingebaute Abfragesprache, die SQL-ähnlich ist, abfragen), kann der Nutzer maßgeschneiderte Analysen durchführen. Er schrieb Python-Skripte, um Fragen zu beantworten wie „Wie ist der 3-Monats-Durchschnitt meiner Ausgaben für Lebensmittel?“ oder „Wie vergleicht sich der diesjährige Verbrauch bei Versorgungsleistungen mit dem letzten Jahr?“ Ein Skript fragt das Hauptbuch nach bestimmten Tags ab und gibt die Ergebnisse in einem Pandas-Dataframe für weitere Berechnungen aus. Da das Hauptbuch Klartext ist, verwenden sie auch Jupyter-Notebooks, um mit verschiedenen Visualisierungen zu experimentieren (über das hinaus, was Fava anbietet). Zum Beispiel erstellten sie ein benutzerdefiniertes Balkendiagramm der monatlichen Sparquote mit Matplotlib, indem sie Beancount-Daten in Python aggregierten. Diese Art der Ad-hoc-Analyse ist nur möglich, weil Beancount die Daten zugänglich und maschinenlesbar hält. Wie ein Nutzer es ausdrückte: Daten extrahieren ist trivial – „Ich habe ein Python-Skript, das Daten mit der Abfragesprache aus Beancount zieht, und dann verwende ich einen pandas-Dataframe, um die Daten für einen Bericht aufzubereiten“. Unser Enthusiast hat ein Repository mit solchen kleinen Skripten, die er für seine jährliche Finanzübersicht ausführt.

Natürlich erfordert nicht alles Programmierung – oft verlassen sie sich auf die integrierten Diagramme von Fava. Fava bietet eine Nettovermögens-Liniendiagramm, Trends bei Einnahmen vs. Ausgaben und sogar eine Treemap-Aufschlüsselung (wie zuvor gezeigt), die alle mit einem Klick erreichbar sind. Der Nutzer schätzt, dass die gesamte Historie ihrer Finanzen seit 2018 abfragbar und prü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 oder einen Filter in Fava schreiben, um die Antwort zu erhalten, anstatt Belege durchzusehen. Diese Befähigung ist genau das, was sie zu Beancount gezogen hat: volle Datenhoheit und unbegrenzte Flexibilität bei der Analyse. Zusätzlich ist das Klartext-Hauptbuch zukunftssicher – es kann versioniert, migriert oder bei Bedarf von anderen Tools geparst werden. Im Gegensatz zu einer Closed-Source-App besteht kein Risiko, den Zugriff auf die finanzielle Historie zu verlieren.

Wesentliche Praktiken im persönlichen Setup: Nutzung von mobilen und Desktop-Tools für eine bequeme Dateneingabe, Verwendung von Tags und benutzerdefinierten Metadaten zur Verfolgung von Lebensereignissen und bereichsübergreifenden Gruppierungen, Umsetzung von Budgets durch Favas budget-Direktiven für laufende Ausgaben-Ziele, Verfolgung von Investitionen und mehreren Währungen im gleichen Ledger (mit automatischen Preisaktualisierungen) sowie Durchführung von benutzerdefinierten Analysen durch direkte Abfragen der Ledger-Daten. Dieses Beispiel zeigt, dass mit etwas Einrichtung selbst persönliche Finanzenthusiasten ein Maß an Einblick und Kontrolle erreichen können, das typischerweise Unternehmen vorbehalten ist – und das alles, während es für einen technikaffinen Nutzer spaßig und ansprechend bleibt.

Fazit

In all diesen Community-Beispielen zeigt sich ein klares Thema: Beancounts Flexibilität ermöglicht ein hochgradig personalisiertes Buchhaltungssystem. Power-User aus der Community haben einfache Textdateien genutzt, um Lösungen zu bauen, die mit kommerzieller Software in ihrer Leistungsfähigkeit mithalten können, dabei aber maßgeschneidert auf ihre Arbeitsabläufe sind. Freelancer taggen und verknüpfen Einträge zur einfachen Verwaltung von Kundenprojekten und Rechnungen. Kleinunternehmer automatisieren mühsame Buchhaltungsaufgaben mit Skripten und integrieren Beancount in moderne Infrastrukturen für stets aktuelle Finanzdaten. Persönliche Finanzenthusiasten verwenden das Ledger als einzige zuverlässige Datenquelle für Budgetierung, Investitionen und Entscheidungen und ergänzen es mit Tags und Tools, um praktisch jede Frage zu ihrem Geld zu beantworten. All dies gelingt, während die wesentlichen Vorteile der reinen Textbuchhaltung erhalten bleiben: Transparenz, Prüfbarkeit und Kontrolle über die eigenen Daten.

Die Beancount-Community hat auch ein reichhaltiges Ökosystem von Plugins und Integrationen hervorgebracht. Von Editor-Modi und mobilen Apps für die Eingabe, über die Fava-Weboberfläche zur Visualisierung, bis hin zu unzähligen Importern und Hilfsprogrammen auf GitHub gibt es Ressourcen, die nahezu jeden Bedarf abdecken. Nutzer teilen häufig ihre Ledger-Setups in Foren und Blogs, damit andere lernen und bewährte Praktiken übernehmen können. Wichtig ist, dass sensible Informationen aufgrund des menschenlesbaren Formats privat gehalten (oder für die Weitergabe leicht redigiert) werden können – wie wir es in dieser Ausstellung gemacht haben. Die oben genannten Beispiele zeigen, dass Sie, egal ob freiberuflicher Entwickler, Startup-Gründer oder persönlicher Finanzenthusiast, Beancount nach Ihren Wünschen anpassen können. Indem Sie Tagging und Metadaten kreativ nutzen, automatisieren, wo möglich, mit Multi-Währungs-Transaktionen umgehen, mit Budgets planen und über Plugins erweitern, treibt die Community die Grenzen des Möglichen im Plain Text weiter voran. Das Ergebnis sind professionelle Buchhaltungsbücher, die zudem spannend zu pflegen sind und den Nutzern sowohl Klarheit als auch Kontrolle über ihre Finanzen bieten.

Quelle: https://beancount.io/de/docs/community-showcase