Zum Hauptinhalt springen

59 Beiträge mit „Beancount“ markiert

Alle Tags anzeigen

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

Ihre Beancount-Erfahrung mit benutzerdefinierten Links und Abfragen optimieren

· 3 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Beancount, das System der doppelten Buchführung, das von Entwicklern und Finanz-Enthusiasten gleichermaßen geschätzt wird, ist in seiner Einfachheit leistungsstark. Doch für diejenigen, die mehr Kontrolle und eine schnellere Navigation innerhalb von Fava, der Weboberfläche von Beancount, wünschen, können benutzerdefinierte Seitenleisten-Links und SQL-Abfragen Ihren Workflow auf die nächste Stufe heben.

In diesem Leitfaden zeigen wir Ihnen, wie Sie:

  • Schnellzugriffs-Links zur Fava-Seitenleiste hinzufügen
  • SQL-Abfragen für erweiterte Filterung und Analyse verwenden
  • Ihren Workflow für monatliche Überprüfungen oder Anomalieerkennung anpassen

Warum Fava anpassen?

Fava ist bereits eine schöne Oberfläche zur Ansicht Ihres Beancount-Hauptbuchs, aber wenn Ihr Journal wächst, steigt auch der Bedarf an besseren Verknüpfungen und intelligenteren Abfragen.

Herausforderungen, die dies löst:

  • Wiederholtes Navigieren durch Zeitbereiche
  • Filtern von Transaktionen über verschachtelte Konten hinweg
  • Schnelleres Erkennen negativer Salden oder Anomalien

Beginnen wir mit der Verbesserung Ihres täglichen Workflows durch einfache Seitenleisten-Verknüpfungen. Diese Links erscheinen in Favas linker Seitenleiste und können Sie direkt zu gefilterten Ansichten führen, wie z. B. den Transaktionen dieses Monats oder den Einnahmen des letzten Monats.

Fügen Sie diese Zeilen zu Ihrer Beancount-Datei hinzu:

2021-01-01 custom "fava-sidebar-link" "Aktueller Monat" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Letzter Monat" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Alle löschen" "/jump?account=&time=&filter="

Was sie tun:

  • Aktueller Monat: Öffnet die Transaktionsansicht, gefiltert auf den aktuellen Monat.
  • Letzter Monat: Springt sofort zum Vormonat – ideal für Monatsendprüfungen.
  • Alle löschen: Setzt Filter zurück und zeigt wieder alle Einträge an.

Diese Verknüpfungen eliminieren die manuelle Zeiteingabe und lassen Ihre Fava-Erfahrung flüssiger und personalisierter wirken.

🔍 Benutzerdefinierte SQL-Abfragen

Für tiefere Einblicke ist Favas SQL-Schnittstelle unglaublich leistungsstark. Hier ist eine Abfrage, die alle negativen Salden in Konten findet, die einem Muster entsprechen – perfekt zum Kennzeichnen ungewöhnlicher oder problematischer Transaktionen.

SELECT account, units(sum(position)), sum(position)
WHERE number(units(position)) < 0
AND account ~ '.*:BCM:.*'
AND date >= DATE(2021,12,9)
AND date < DATE(2022,1,9)

Aufschlüsselung:

  • account ~ '.*:BCM:.*': Filtert Konten, die :BCM: in ihrem Namen enthalten.
  • number(units(position)) < 0: Kennzeichnet negative Salden (z. B. überzogene Budgets).
  • Datumsfilter grenzen das Ergebnis auf ein bestimmtes 1-Monats-Fenster ein.

Anwendungsfälle:

  • Fehler wie doppelte Ausgaben oder falsche Buchungen erkennen
  • Einen bestimmten Lieferanten oder eine Kategorie prüfen
  • Schnell umsetzbare Erkenntnisse für die Budgetierung gewinnen

Obwohl Fava keine direkten Links zu benutzerdefinierten Abfragen zulässt, können Sie eine monatliche Überprüfungsgewohnheit schaffen, indem Sie:

  • Den Link „Aktueller Monat“ verwenden, um Ihre Überprüfung zu starten
  • Ihre Registerkarte für gespeicherte Abfragen in einem anderen Fenster öffnen
  • Beides gleichzeitig überprüfen – zuerst filtern, dann tiefer graben

Diese Kombination hilft Ihnen, Anomalien zu erkennen, bevor sie sich ausbreiten, und sicherzustellen, dass Ihr Hauptbuch sauber bleibt.

Abschließende Gedanken

Beancount ist minimalistisch im Design, aber kleine Verbesserungen wie diese bringen enorme Effizienzgewinne. Egal, ob Sie Ihr Budget überprüfen, ungewöhnliche Salden beheben oder einfach nur Klicks sparen, benutzerdefinierte Links und SQL-Abfragen geben Ihnen mehr Leistung und weniger Reibung.

Bonus: Wenn Sie Favas benutzerdefinierte Berichte verwenden, können Sie sogar vollständige Dashboards erstellen, die auf Ihre persönlichen Finanzrituale zugeschnitten sind.

Bereit, die Kontrolle zu übernehmen?

Fangen Sie klein an: Fügen Sie den Link „Aktueller Monat“ hinzu. Dann erstellen Sie Ihre eigenen Abfragen. Ihr zukünftiges Ich wird es Ihnen danken.

Möchten Sie weitere Tipps wie diesen? Abonnieren Sie unseren Newsletter oder entdecken Sie weitere Beancount-Rezepte auf Beancount.io.

Prognose zukünftiger Transaktionen in Beancount

· Eine Minute Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Es gibt ein Plugin für Beancount, um zukünftige wiederkehrende Transaktionen zu prognostizieren. Wie wendet man es in beancount.io an? Fügen Sie den folgenden Inhalt in Ihre Ledger-Datei ein.

; import the plugin
plugin "fava.plugins.forecast"

; add a monthly HOA fee
2022-05-30 # "HOA fee [MONTHLY]"
Expenses:Hoa 1024.00 USD
Assets:Checking -1024.00 USD

Screenshot des Prognose-Plugins

2022-05-30-forecast-plugin

Danach sehen Sie die Prognose im Nettogewinn-Diagramm.

Prognose-Plugin

Der Tag [MONTHLY] oben bedeutet, dass es auf unbestimmte Zeit wiederkehren wird. Wenn Sie weitere Bedingungen anwenden möchten, versuchen Sie [MONTHLY UNTIL 2022-06-01], [MONTHLY REPEAT 5 TIMES], [YEARLY REPEAT 5 TIMES] oder [WEEKLY SKIP 1 TIME REPEAT 5 TIMES].

Rechnungen mit Beancount erstellen und verfolgen

· 6 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Eine Plain-Text-Vorlage, ein wiederholbarer Workflow und eine einzige Abfrage für „Wer schuldet mir noch Geld?“


2022-02-12-crafting-tracking-invoices-with-beancount

Die Rechnungsstellung kann sich wie eine lästige Pflicht anfühlen, eingeklemmt zwischen der erledigten Arbeit und der erwarteten Zahlung. Aber ein guter Rechnungsprozess ist das Rückgrat eines gesunden Cashflows. Er erfüllt eine doppelte Funktion: Er teilt Ihren Kunden klar mit, was sie schulden und wann, und er liefert Ihrem Buchhaltungssystem die unbestreitbaren Fakten, die es benötigt.

Während dedizierte SaaS-Apps elegante, automatisierte PDFs senden können, sind sie oft mit monatlichen Gebühren verbunden und speichern Ihre Daten in einem proprietären Silo. Ein schlanker Plain-Text-Ansatz mit Beancount bietet eine leistungsstarke Alternative. Sie können jede Rechnung in einen klaren Satz von Buchungseinträgen umwandeln und so alle Vorteile der Versionskontrolle, aussagekräftiger Metadaten und sofortiger Abfragen nutzen – ganz ohne Abonnement.


Die minimalistische Rechnung (Felder, die Sie niemals auslassen sollten)

Bevor Sie Ihr Hauptbuch anfassen, benötigen Sie eine professionelle Rechnung. Das Format kann einfach sein, aber der Inhalt muss präzise sein. Diese Felder, die der bewährten Praxis kleiner Unternehmen entlehnt sind, sind nicht verhandelbar.

  • Verkäuferdaten: Ihr Firmenname und Ihre physische Adresse.
  • Kundendaten: Name und (idealerweise) Adresse Ihres Kunden.
  • Rechnungsnummer: Eine eindeutige, fortlaufende ID, die niemals wiederverwendet wird. INV-045 folgt auf INV-044.
  • Ausstellungs- & Fälligkeitsdatum: Geben Sie deutlich an, wann die Rechnung ausgestellt wurde und wann die Zahlung erwartet wird.
  • Einzelposten: Eine klare Beschreibung der Dienstleistungen oder Produkte, zusammen mit Menge, Preis und der Zeilensumme.
  • Zwischensumme, Steuern und Gesamtbetrag: Zeigen Sie die Berechnung an, damit der Kunde ihr leicht folgen kann.
  • Optionale Hinweise: Ein Platz für ein Dankeschön, Überweisungsanweisungen oder eine vom Kunden angegebene Bestellnummer.

Um Ihnen den Einstieg zu erleichtern, haben wir eine Reihe von bearbeitbaren Vorlagen erstellt, die alle diese Felder enthalten. Die Tabellenkalkulationsversionen berechnen sogar die Summen für Sie vor.

Holen Sie sich unsere Vorlagen hier: beancount.io/invoice‑templates (Verfügbar in den Formaten Google Docs, Word, Sheets, Excel und PDF)


Erfassen Sie die Rechnung in Ihrem Hauptbuch

Sobald Sie die PDF-Rechnung an Ihren Kunden gesendet haben, müssen Sie sie in Beancount erfassen. Dies ist ein entscheidender Schritt, der die Einnahmen zum Zeitpunkt des Entstehens und nicht erst zum Zeitpunkt der Zahlung erfasst. Der Prozess umfasst zwei verschiedene Transaktionen.

1. Wenn Sie die Rechnung ausstellen:

Sie erstellen eine Transaktion, die den Gesamtbetrag von Ihrem Income-Konto auf Assets:AccountsReceivable überträgt. Dadurch wird ein digitaler Schuldschein in Ihren Büchern erstellt.

; 2025‑07‑21 Rechnung #045  Webdesign-Sprint für Acme Corp.
2025-07-21 * "Acme Corp" "INV-045 Webdesign-Sprint"
Assets:AccountsReceivable 3500.00 USD ; due:2025-08-04
Income:Design:Web
invoice_id: "INV-045"
contact_email: "ap@acme.example"
link: "docs/invoices/2025-07-21_Acme_INV-045.pdf"

Hier belasten Sie AccountsReceivable und kreditieren Ihr Income-Konto. Beachten Sie die umfangreichen Metadaten: das Fälligkeitsdatum, eine eindeutige invoice_id und sogar einen direkten link: zur PDF-Datei, die Sie gesendet haben.

2. Wenn der Kunde bezahlt:

Wenn das Geld auf Ihrem Bankkonto eingeht, erfassen Sie eine zweite Transaktion, um den Schuldschein „abzuschließen“. Dadurch wird der Saldo von AccountsReceivable auf Ihr Girokonto übertragen.

2025-08-01 * "Acme Corp" "Zahlung INV-045"
Assets:Bank:Checking 3500.00 USD
Assets:AccountsReceivable
invoice_id: "INV-045"

Der Saldo für INV-045 in Assets:AccountsReceivable ist nun null, und Ihre Bücher sind perfekt ausgeglichen.

PDF anhängen: Der Metadatenschlüssel link: ist besonders leistungsstark, wenn er mit Fava, der Webschnittstelle von Beancount, verwendet wird. Fava rendert einen anklickbaren Link direkt in der Transaktionsansicht, sodass das Quelldokument nie mehr als einen Klick entfernt ist. Dieser Workflow wurde bereits 2016 in einer Feature-Anfrage (GitHub) ins Auge gefasst.


Eine Abfrage, um alle offenen Rechnungen aufzulisten

Wer schuldet Ihnen also noch Geld? Mit diesem System müssen Sie nicht in E-Mails oder Tabellenkalkulationen suchen. Sie benötigen nur eine einfache Abfrage.

Speichern Sie Folgendes als Datei mit dem Namen open-invoices.sql:

SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS outstanding
WHERE
account = "Assets:AccountsReceivable"
AND balance != 0
ORDER BY
date;

Führen Sie sie nun von Ihrer Kommandozeile aus:

bean-query books.beancount open-invoices.sql

Innerhalb von Sekunden erhalten Sie einen übersichtlichen, aktuellen Bericht über alle ausstehenden Rechnungen mit der Rechnungs-ID, dem Kunden, dem Ausstellungsdatum und dem geschuldeten Betrag. Keine zusätzliche Software erforderlich.


Automatisieren Sie die Routinearbeit

Das Schöne an Plain Text ist die Skripterstellung. Sie können die mühsamen Teile dieses Workflows automatisieren.

  • Vorlage + Pandoc = PDF: Pflegen Sie Ihre Rechnungsvorlage in Markdown. Ein kleines Python-Skript kann die Variablen (Kundenname, Einzelposten, Rechnungsnummer) ausfüllen, und das Kommandozeilen-Tool Pandoc kann sie sofort in ein professionelles PDF konvertieren.
  • Git Pre-Commit-Hook: Wenn Sie Ihr Hauptbuch in Git speichern, kann ein einfacher Pre-Commit-Hook Prüfungen durchführen, bevor Sie Ihre Arbeit speichern. Er kann überprüfen, ob jede neue invoice_id eindeutig ist, ob die Buchungssätze der Transaktion auf null saldieren und ob die im Metadaten-link: referenzierte Datei tatsächlich existiert.
  • Cron-Job: Richten Sie eine geplante Aufgabe (einen Cron-Job) ein, um Ihre open-invoices.sql-Abfrage jede Nacht auszuführen und Ihnen die Zusammenfassung per E-Mail zu senden. Sie beginnen jeden Tag mit dem Wissen, wer eine freundliche Erinnerung benötigt.

Ein realistischer Vorbehalt

Beancount ist ein Buchhaltungstool, kein Rechnungsstellungs-Service. Es sendet nicht automatisch Zahlungserinnerungen an Ihre Kunden oder verarbeitet deren Kreditkartenzahlungen. Der Workflow ist wie folgt: Sie erstellen und senden die Rechnung mit der von Ihnen gewählten Methode (z. B. mit den obigen Vorlagen) und buchen dann die Buchungseinträge in Ihrem Hauptbuch.

Für die meisten Freiberufler und kleinen Unternehmen ist dieser manuelle Schritt ein geringer Preis für ein kugelsicheres, prüfbares und kostenloses Buchhaltungssystem, das Sie vollständig besitzen und kontrollieren (beancount.io).


Nächste Schritte

Sind Sie bereit, die Kontrolle über Ihre Rechnungsstellung zu übernehmen? Hier erfahren Sie, wie Sie beginnen können.

  1. Laden Sie eine Vorlage herunter und verwenden Sie sie, um Ihre nächste echte Rechnung zu erstellen. Stellen Sie sicher, dass Sie eine fortlaufende Rechnungsnummer verwenden.
  2. Speichern Sie Ihre gesendeten PDFs in einem dedizierten Ordner wie docs/invoices/ und verwenden Sie den Metadatenschlüssel link: in Ihrer Beancount-Transaktion, um auf sie zu verweisen.
  3. Speichern Sie die Abfrage open-invoices.sql und machen Sie die Ausführung zu einem Teil Ihrer wöchentlichen Finanzprüfung.

Plain-Text-Buchhaltung bedeutet nicht, auf Eleganz oder Kontrolle zu verzichten – es bedeutet nur, dass die Datenbank grep-fähig ist. Mit einer einfachen Vorlage und den obigen Snippets werden Sie schneller bezahlt und halten Ihre Bücher makellos.

Korrekturbuchungen in Beancount: Ihr Monatsabschluss

· 5 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Buchhaltung ist nicht abgeschlossen, wenn der letzte Umsatz auf dem Konto eingegangen ist. Um ein wahrheitsgetreues Bild von der Gesundheit Ihres Unternehmens zu erhalten, müssen Sie einen Monatsabschluss durchführen. Bei jedem Periodenabschluss nehmen Sie Korrekturbuchungen vor – Anpassungen im Journal, die Erträge und Aufwendungen korrekt im richtigen Zeitfenster platzieren und Ihre Bilanz korrekt halten.

In einem Beancount-Ledger im Klartextformat sind diese wichtigen Einträge transparent, versionskontrolliert und leicht zu prüfen, wodurch eine mühsame Aufgabe in einen klaren und wiederholbaren Prozess verwandelt wird.

2022-01-25-korrekturbuchungen-in-beancount-ihr-monatsabschluss


Warum Korrekturbuchungen wichtig sind

Diese Anpassungen sind grundlegend für eine solide Buchhaltung. Sie stellen sicher, dass Ihre Abschlüsse korrekt und zuverlässig sind.

  • Genauigkeit der Periodenabgrenzung: Korrekturbuchungen sind der Motor der Periodenabgrenzung. Sie verschieben Einnahmen und Kosten in die Periode, in der sie tatsächlich verdient oder angefallen sind, unabhängig davon, wann der Zahlungsverkehr stattgefunden hat. Dies erfüllt die zentralen Grundsätze der Umsatzrealisierung und des Matching-Prinzips, die die Grundlage der modernen Rechnungslegung bilden (AccountingCoach.com).

  • Zuverlässige KPIs: Key Performance Indicators sind nur so gut wie die Daten, die ihnen zugrunde liegen. Kennzahlen wie Bruttomarge, Nettoergebnis und Cashflow-Prognosen geben erst dann die Wahrheit wieder, wenn Rückstellungen, Abgrenzungen und Schätzungen korrekt verbucht sind (Corporate Finance Institute).

  • Sauberer Audit-Trail: Explizite Monatsabschlussanpassungen schaffen eine klare Aufzeichnung Ihrer finanziellen Argumentation. Dies hilft Wirtschaftsprüfern (und Ihrem zukünftigen Ich) leicht nachzuvollziehen, was sich geändert hat und warum, und schafft Vertrauen in Ihre Zahlen (Accountingverse).


Sechs häufige Kategorien (mit Beancount-Snippets)

Hier sind die sechs häufigsten Arten von Korrekturbuchungen, mit Beispielen, wie Sie sie in Ihrem Beancount-Ledger erfassen können. Beachten Sie die Verwendung von Metadaten wie adj:"abgrenzung" , um diese Einträge später leicht finden und analysieren zu können.

1. Erträge abgrenzen

Dies gilt für Erträge, die Sie verdient, aber noch nicht in Rechnung gestellt oder erhalten haben.

2025-07-31 * "Beratung – Juli Stunden"
Assets:Forderungen 12000.00 USD
Income:Beratung
; adj:"abgrenzung" period:"Jul-25"

2. Kosten abgrenzen

Eine Ausgabe, die Sie getätigt haben, aber noch nicht bezahlt haben, wie z. B. eine Stromrechnung, die nächsten Monat eintrifft.

2025-07-31 * "Anwalt – Juli Honorar"
Expenses:Rechtskosten 2500.00 USD
Liabilities:Rueckstellungen
; adj:"abgrenzung"

3. Ertrag rückstellen (passive Rechnungsabgrenzung)

Dies trifft zu, wenn ein Kunde Sie im Voraus bezahlt. Sie realisieren einen Teil dieses Ertrags, sobald er im Laufe der Zeit verdient wird.

2025-07-31 * "Jährliche SaaS-Vorauszahlung (1/12 realisieren)"
Liabilities:PassiveRechnungsabgrenzung 833.33 USD
Income:SaaS
; adj:"rueckstellung"

4. Kosten rückstellen (aktive Rechnungsabgrenzung)

Wenn Sie eine Ausgabe im Voraus bezahlen (z. B. eine jährliche Versicherungspolice), schreiben Sie jeden Monat einen Teil davon ab.

2025-07-31 * "Versicherung – 1 Monat Aufwand aus Vorauszahlung"
Expenses:Versicherung 400.00 USD
Assets:AktiveRechnungsabgrenzung
; adj:"rueckstellung"

5. Abschreibungen

Dieser Eintrag verteilt die Kosten eines langfristigen Vermögenswerts (wie eines Computers oder Fahrzeugs) über seine Nutzungsdauer.

2025-07-31 * "Mac Studio Abschreibung"
Expenses:Abschreibungen 1250.00 USD
Assets:Computer:Abschreibungen
; asset_id:"MAC-03" adj:"schaetzung"

6. Wertberichtigung auf Forderungen

Eine Schätzung der Forderungen, die Sie voraussichtlich nicht eintreiben werden, die als Aufwand für uneinbringliche Forderungen verbucht wird.

2025-07-31 * "Wertberichtigung (2% der Forderungen)"
Expenses:UneinbringlicheForderungen 700.00 USD
Assets:Wertberichtigung
; basis:"Forderungen" rate:0.02 adj:"schaetzung"

Ein wiederholbarer Workflow

Um Ihren Monatsabschluss effizient und fehlerfrei zu halten, sollten Sie einen konsistenten Workflow verwenden.

  • Verwenden Sie eine separate Datei. Bewahren Sie alle Anpassungen für einen Zeitraum an einem Ort auf, z. B. korrekturen-2025-07.bean. Verwenden Sie in Ihrer Haupt-Ledger-Datei eine include-Direktive, um sie zuletzt zu importieren. Dadurch wird sichergestellt, dass Anpassungen unmittelbar vor der Erstellung der endgültigen Berichte angewendet werden.

  • Standardisieren Sie Ihre Metadaten. Verwenden Sie immer konsistente Metadatenschlüssel und -werte, wie z. B. adj:"abgrenzung|rueckstellung|schaetzung" und period:"Jul-25". Dies macht das Abfragen und Überprüfen bestimmter Arten von Anpassungen zum Kinderspiel.

  • Führen Sie eine Vorprüfung durch. Bevor Sie Ihre Änderungen an Git übertragen, führen Sie bean-check für Ihre Anpassungsdatei aus, um Tippfehler oder unausgeglichene Buchungen zu erkennen.

  • Führen Sie eine einzeilige Plausibilitätsprüfung durch. Diese Abfrage bestätigt, dass alle Ihre Anpassungen für den Zeitraum ausgeglichen sind, was Ihnen die Gewissheit gibt, dass Sie keine Fehler eingeführt haben.

    bean-query main.bean "SELECT account, SUM(number) WHERE meta('adj') AND meta('period') = 'Jul-25' GROUP BY account"

Schnelle Tipps zur Fehlerbehebung 🤔

  • Steigt Ihr Saldo Liabilities:PassiveRechnungsabgrenzung? Überprüfen Sie Ihre Vertragsmeilensteine. Möglicherweise realisieren Sie Erträge zu langsam im Vergleich zu der Arbeit, die Sie leisten.

  • Ist Ihr Saldo Assets:AktiveRechnungsabgrenzung negativ? Sie schreiben ihn wahrscheinlich schneller ab, als der Plan des Vermögenswerts zulässt. Überprüfen Sie Ihren Abschreibungsplan.

  • Verschlechtert sich Ihre Debitorenlaufzeit (DSO) nach Abgrenzungen? Ihre abgegrenzten Erträge könnten zugrunde liegende Inkassoprobleme verschleiern. Kombinieren Sie diesen KPI mit einem Bericht über das Alter der Forderungen, um säumige Kunden zu erkennen, bevor es zu einem Cashflow-Problem wird.


Schlussgedanken

Korrekturbuchungen können sich mühsam anfühlen, aber ihr Wert wird kristallklar, wenn Sie Ihre Gewinn- und Verlustrechnungen "vorher" und "nachher" vergleichen – der Unterschied ist oft wesentlich. Mit Beancount werden diese Anpassungen zu kleinen, durchsuchbaren Patches, die Sie wie Code automatisieren und überprüfen können.

Gewöhnen Sie sich an den Monatsabschluss, und Ihre Zahlen bleiben so genau wie Ihre Technik.

Viel Spaß beim Bilanzieren!

Revolutionierung des persönlichen Finanzmanagements mit Beancount.io

· 3 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Beancounter nutzen traditionell Befehlszeilentools oder hosten Server in privaten Netzwerken selbst, wo sie über einen Computer oder einen allgemeinen Texteditor auf mobilen Geräten arbeiten müssen. Beancount.io reduziert den Aufwand, indem es quelloffene Android- und iOS-Mobil-Apps sowie eine gesicherte Cloud bereitstellt, sodass Ihr Hauptbuch nun nur wenige Fingertipps von Ihrem Fingerabdruck entfernt ist.

Beancount ist eine Computersprache, die die doppelte Buchführung in Textdateien ermöglicht. Sobald Sie Finanztransaktionen in der Datei definieren, werden verschiedene Berichte generiert. Martin Blais, der Entwickler dieser Sprache, argumentiert, dass die Befehlszeilen-Buchführung viele Vorteile hat – sie ist schnell, portabel, offen und anpassbar.

Wir stimmen diesem Argument voll und ganz zu und teilen das Gefühl der Ermächtigung, das die Beancount-Sprache mit sich bringt. Und wir wollten mehr tun – die Technologie mehr Menschen zugänglich machen. Das bedeutet, dass wir die Benutzerfreundlichkeit verbessern und sie einem breiteren Publikum zugänglicher machen müssen.

2022-01-08-instant-access-to-your-beancount-cloud-ledger-anytime-anywhere

Nicht jeder ist ein Befehlszeilen-Enthusiast, und deshalb haben wir Beancount.io entwickelt – den persönlichen Finanzmanager für jedermann. So funktioniert es:

Für anspruchsvolle Aufgaben können Beancounter weiterhin ihre Computer nutzen, um das Hauptbuch mit ihren Browsern unter https://beancount.io zu bearbeiten oder anzuzeigen oder mit Dropbox zu synchronisieren. Dies bewahrt die Flexibilität der Befehlszeilentools, ohne den geräteübergreifenden Zugriff der Cloud-basierten Lösung zu verlieren.

Für leichte tägliche Vorgänge, wie das sofortige Hinzufügen eines Eintrags, können Beancounter die mobile App verwenden, um sich mit der gesicherten Cloud zu verbinden.

Mike Thrift, ein Backend-Entwickler, der an diesem Produkt arbeitet, sagt:

Früher habe ich mir jeden Tag eine Erinnerung eingerichtet, meinen Laptop zu öffnen und Einträge in meine Beancount-Dateien einzugeben. Mit Beancount.io ist es jetzt viel einfacher für mich, mein Hauptbuch zu ändern, wann immer ich es brauche, selbst wenn ich unterwegs etwas im Laden kaufe.

Zhi Li, ein Software-Ingenieur von Facebook, erzählt uns:

Ich habe alle meine Beancount-Dateien zu Beancount.io migriert, und jetzt funktioniert es perfekt für meinen täglichen Gebrauch. Ich habe für Pro-Funktionen wie die automatische Datensicherung bezahlt, aber ich denke, ihr könntet noch mehr tun, um den Dienst zu verbessern.

Sie können sich jetzt unter https://beancount.io/sign-up/ anmelden oder die iOS- oder Android-App herunterladen. Wir haben die Registrierung optimiert, um so wenig Informationen wie möglich von Ihnen zu sammeln, um den Dienst zu starten. Dann erhalten Sie ein voreingestelltes leeres Hauptbuch, das sofort bereit ist, damit Sie einen Eintrag hinzufügen können.

FAQs

Würde beancount.io meine Hauptbuchdaten an Dritte verkaufen?

  • Nein. Wir verpflichten uns, Ihre Daten sicher und privat zu halten, und wir werden Ihre Hauptbuchdaten niemals verkaufen.

Sind meine Daten gesichert?

  • Ja. Wir schützen Ihre E-Mail und Ihr Hauptbuch mit AES256, Ihr Passwort mit BCrypt und Ihre Netzwerkanfragen mit SSL.

Sind meine Hauptbuchdaten Ende-zu-Ende verschlüsselt?

  • Nein. Aufgrund technischer Einschränkungen müssen wir Ihre Daten immer noch im Speicher entschlüsseln, wenn die Hauptbuchdatei auf den Produktionsservern indiziert wird. Daher beschränken wir den direkten Zugriff unserer Teammitglieder. Leider können wir dies aufgrund hoher Kosten nicht in Intels SGX oder einem Sicherheitstresor tun.

Ist dies ein zuverlässiger Dienst, dem ich für die nächsten Jahre vertrauen kann?

  • Ja. Wir haben Beancount.io ursprünglich am 4. Juli 2019 gestartet, und seit mehr als zwei Jahren betreiben wir den Dienst sicher und zuverlässig. Daher haben wir keinen Grund, den Dienst in Zukunft nicht fortzusetzen.

Kann ich neue Funktionen anfragen und das Projekt sponsern?

Leitfaden für die Migration von QuickBooks zu Beancount

· 30 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Phase 1: Datenexport aus QuickBooks

Die Migration von fünf Jahren Daten beginnt damit, alle QuickBooks-Datensätze in einem nutzbaren Format zu extrahieren. QuickBooks Desktop und QuickBooks Online haben unterschiedliche Exportoptionen:

2021-12-01-from-quickbooks-to-plain-text-a-migration-playbook

1.1 QuickBooks Desktop – Exportoptionen

IIF (Intuit Interchange Format): QuickBooks Desktop kann Listen (wie Kontenplan, Kunden, Lieferanten) in .IIF-Textdateien exportieren. Gehen Sie in QuickBooks Desktop zu Datei → Dienstprogramme → Exportieren → Listen in IIF-Dateien, und wählen Sie dann die benötigten Listen aus (z. B. Kontenplan, Kunden, Lieferanten). Dies erzeugt eine Textdatei, die Kontonamen, -typen und Listendaten enthält. IIF ist ein proprietäres, aber reines Textformat, das relativ einfach zu parsen ist. Nutzen Sie es, um Ihren Kontenplan und Ihre Kontaktlisten als Referenz in Beancount zu erfassen.

Hauptbuch/Journal via CSV: Für Transaktionsdaten bietet QuickBooks Desktop keinen Ein-Klick-Voll-Export, aber Sie können Berichte verwenden. Die empfohlene Methode ist der Export des Journals (alle Buchungen) über den gewünschten Zeitraum. Öffnen Sie in QuickBooks Desktop Berichte → Buchhalter & Steuern → Journal, stellen Sie die Daten vom frühesten Vorgang bis heute ein und klicken Sie auf Exportieren → Excel. Speichern Sie das Ergebnis als CSV, nachdem Sie alle Berichtskopf-/Fußzeilen und leeren Spalten entfernt haben. Stellen Sie sicher, dass die numerischen Daten sauber sind: Geben Sie Cents an (z. B. 3.00, nicht 3), keine zusätzlichen Anführungszeichen und keine Währungssymbole oder doppelten Negativzeichen in der CSV-Datei. Die CSV-Datei sollte Spalten wie Datum, Transaktions-Nr., Name, Konto, Memo, Soll, Haben, Saldo enthalten (oder eine einzelne Betragsspalte, je nach Berichtsformat).

Tipp: QuickBooks Desktop 2015+ kann Transaktionen auch über den Suchen-Dialog exportieren. Verwenden Sie Bearbeiten → Suchen → Erweitert, stellen Sie den Datumsbereich auf fünf Jahre ein und exportieren Sie die Ergebnisse dann als CSV. Warnung: Einige Versionen begrenzen den Export auf 32.768 Zeilen. Wenn Sie sehr große Datenmengen haben, exportieren Sie jahrweise (oder in kleineren Blöcken), um eine Kürzung zu vermeiden, und führen Sie sie später zusammen. Stellen Sie sicher, dass sich die Datumsbereiche nicht überschneiden, um Duplikate zu vermeiden.

Andere Formate (QBO/QFX/QIF): QuickBooks Desktop kann Banktransaktionen über .QBO (Web Connect) oder .QFX/.OFX-Dateien importieren, aber für den Export aus QuickBooks sind diese nicht typisch. Wenn Ihr Ziel darin besteht, nur Banktransaktionen zu extrahieren, haben Sie diese möglicherweise bereits im QBO/OFX-Format von Ihrer Bank. Für einen vollständigen Hauptbuchexport bleiben Sie jedoch bei IIF und CSV. QuickBooks Desktop kann ohne Drittanbieter-Tools nicht direkt in QIF (Quicken Interchange Format) exportieren. Wenn Sie einen Weg finden, QIF zu erhalten, beachten Sie, dass einige Ledger-Tools (ältere Ledger 2.x) QIF lesen konnten, es aber besser ist, in unserer Pipeline mit CSV zu arbeiten.

1.2 QuickBooks Online – Exportoptionen

Integrierter Excel/CSV-Export: QuickBooks Online (QBO) bietet ein Daten exportieren-Tool. Gehen Sie zu Einstellungen ⚙ → Tools → Daten exportieren. Im Exportdialog verwenden Sie den Tab Berichte, um Daten auszuwählen (z. B. Hauptbuch oder Transaktionsliste) und den Tab Listen für Listen (Kontenplan usw.), wählen Sie Alle Daten und exportieren Sie nach Excel. QuickBooks Online lädt eine ZIP-Datei herunter, die mehrere Excel-Dateien für die ausgewählten Berichte und Listen enthält (z. B. Gewinn- und Verlustrechnung, Bilanz, Hauptbuch, Kunden, Lieferanten, Kontenplan usw.). Sie können diese Excel-Dateien dann zur Verarbeitung in CSV konvertieren.

Transaktionsdetailbericht: Wenn der Standard-Export von QBO keine einzelne Hauptbuchdatei enthält, können Sie manuell einen detaillierten Bericht erstellen:

  1. Navigieren Sie zu Berichte und suchen Sie Buchungsdetails nach Konto (oder Hauptbuch in einigen QBO-Versionen).
  2. Stellen Sie den Berichtszeitraum auf den gesamten Fünfjahreszeitraum ein.
  3. Setzen Sie unter den Berichtsoptionen Gruppieren nach = Keine (um einzelne Transaktionen ohne Zwischensummen aufzulisten).
  4. Passen Sie die Spalten an, um mindestens Folgendes einzuschließen: Datum, Transaktionstyp, Nummer, Name (Zahlungsempfänger/Kunde), Memo/Beschreibung, Konto, Soll, Haben (oder eine einzelne Betragsspalte) und Saldo. Fügen Sie Klasse oder Standort hinzu, falls verwendet.
  5. Führen Sie den Bericht aus und exportieren Sie ihn nach Excel.

Dies liefert ein detailliertes Hauptbuch aller Transaktionen. Speichern Sie es als CSV. Jede Zeile repräsentiert einen Buchungssatz (Split) einer Transaktion. Sie müssen später die Zeilen nach Transaktionen gruppieren, um sie zu konvertieren.

Kontenplan und andere Listen: QuickBooks Online kann den Kontenplan über Buchhaltung → Kontenplan → Stapelaktionen → Nach Excel exportieren exportieren. Tun Sie dies, um Kontonamen und -typen zu erhalten. Exportieren Sie ebenfalls Kunden, Lieferanten usw., wenn Sie die Namen für Metadaten übernehmen möchten.

QuickBooks Online API (Optional): Für einen programmatischen Ansatz bietet Intuit eine REST-API für QBO-Daten. Fortgeschrittene Benutzer können eine QuickBooks Online-App erstellen (erfordert ein Entwicklerkonto) und die API verwenden, um Daten im JSON-Format abzurufen. Zum Beispiel könnten Sie den Account-Endpunkt für den Kontenplan und die JournalEntry- oder GeneralLedger-Berichtsendpunkte für Transaktionen abfragen. Es gibt Python-SDKs wie python-quickbooks, die die API umschließen. Die Verwendung der API erfordert jedoch eine OAuth-Authentifizierung und ist für eine einmalige Migration übertrieben, es sei denn, Sie bevorzugen die Automatisierung. In den meisten Fällen ist der manuelle Export nach CSV/Excel einfacher und weniger fehleranfällig.


Phase 2: Transformation und Bereinigung der Daten

Sobald Sie QuickBooks-Daten im CSV- (und/oder IIF-)Format haben, besteht der nächste Schritt darin, sie in das reine Textformat von Beancount zu konvertieren. Dies umfasst das Parsen der Exporte, das Zuordnen von QuickBooks-Konten zu einem Beancount-Kontenplan und das Formatieren von Transaktionen in der Beancount-Syntax.

2.1 Parsen von QuickBooks-Exporten mit Python

Die Verwendung von Python gewährleistet Genauigkeit und Reproduzierbarkeit bei der Transformation. Wir skizzieren Skripte für zwei Hauptaufgaben: Importieren des Kontenplans und Konvertieren von Transaktionen.

Kontenimport und -zuordnung: Es ist entscheidend, Ihre Konten in Beancount einzurichten, bevor Sie Transaktionen hinzufügen. QuickBooks-Konten haben Typen (Bank, Forderungen, Aufwand usw.), die wir den Hierarchien von Beancount (Assets, Liabilities, Income, Expenses usw.) zuordnen werden. Zum Beispiel können wir eine Zuordnung wie diese verwenden:

# Zuordnung von QuickBooks-Kontotyp zu Beancount-Stammkategorie
AccountTypeMap = {
'BANK': 'Assets',
'CCARD': 'Liabilities',
'AR': 'Assets', # Forderungen als Aktivkonto
'AP': 'Liabilities', # Verbindlichkeiten als Passivkonto
'FIXASSET': 'Assets',
'OASSET': 'Assets', # Sonstige Vermögensgegenstände
'OCASSET': 'Assets', # Sonstiges Umlaufvermögen
'LTLIAB': 'Liabilities', # Langfristige Verbindlichkeiten
'OCLIAB': 'Liabilities', # Sonstige kurzfristige Verbindlichkeiten
'EQUITY': 'Equity',
'INC': 'Income',
'EXP': 'Expenses',
'EXINC': 'Income', # Sonstige Erträge
'EXEXP': 'Expenses', # Sonstige Aufwendungen
}

Mithilfe des IIF-Exports von QuickBooks Desktop oder der Kontenlisten-CSV von QBO rufen wir den Namen und Typ jedes Kontos ab. Dann:

  • Beancount-Kontonamen erstellen: QuickBooks verwendet manchmal Doppelpunkte (:) in Kontonamen, um Unterkonten zu kennzeichnen (z. B. "Umlaufvermögen:Girokonto"). Beancount verwendet dieselbe Doppelpunktnotation für die Hierarchie. Sie können den Namen oft direkt wiederverwenden. Wenn die QuickBooks-Kontonamen nicht mit einer Kategorie beginnen, stellen Sie die zugeordnete Kategorie voran. Zum Beispiel wird ein QuickBooks-Konto vom Typ BANK mit dem Namen "Girokonto" in Beancount zu Assets:Girokonto. Ein EXP-Konto (Aufwand) "Bewirtung" wird zu Expenses:Bewirtung, usw.

  • Gültige Benennung sicherstellen: Entfernen oder ersetzen Sie alle Zeichen, die Beancount verwirren könnten. QuickBooks erlaubt Zeichen wie & oder / in Namen. Es ist ratsam, Sonderzeichen zu entfernen oder zu ersetzen (z. B. & durch und ersetzen, Schrägstriche oder Leerzeichen entfernen). Stellen Sie außerdem sicher, dass alle Kontonamen nach der Transformation eindeutig sind – QuickBooks hat möglicherweise denselben Unterkontonamen unter verschiedenen übergeordneten Konten zugelassen, was in Ordnung ist, aber in Beancount muss der vollständige Name (mit übergeordneten Konten) eindeutig sein. Benennen Sie sie bei Bedarf um oder fügen Sie eine Kennzeichnung hinzu, um sie zu unterscheiden.

  • Kontoeröffnungen ausgeben: In Beancount muss jedes verwendete Konto mit einer open-Direktive eröffnet werden. Sie können ein Datum vor Ihrer ersten Transaktion wählen (z. B. bei der Migration von Daten aus 2019–2023 verwenden Sie 2018-12-31 oder ein noch früheres Datum für alle Eröffnungen). Das Skript schreibt dann Zeilen wie: 2018-12-31 open Assets:Girokonto USD 2018-12-31 open Expenses:Bewirtung USD für jedes Konto (angenommen, USD ist die Hauptwährung). Verwenden Sie die entsprechende Währung für jedes Konto (siehe Hinweise zu mehreren Währungen unten).

Transaktionskonvertierung: Die Hauptherausforderung besteht darin, den QuickBooks-Transaktionsexport (CSV) in Beancount-Einträge zu konvertieren. Jede QuickBooks-Transaktion (Rechnung, Beleg, Scheck, Journaleintrag usw.) kann mehrere Buchungssätze (Zeilen) haben, die zu einer einzigen Beancount-Transaktion zusammengefasst werden müssen.

Wir verwenden den CSV-Leser von Python, um die exportierten Zeilen zu durchlaufen und die Buchungssätze zu sammeln:

import csv
from collections import defaultdict

# Alle Zeilen aus der QuickBooks-Journal-CSV lesen
rows = []
with open('quickbooks_exported_journal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# Zeilen nach Transaktion gruppieren (angenommen, 'Transaktions-Nr.' identifiziert Transaktionen)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

Jetzt ist transactions ein Wörterbuch, bei dem jeder Schlüssel eine Transaktions-ID/Nummer und der Wert die Liste der Buchungssätze für diese Transaktion ist. Als Nächstes konvertieren wir jede Gruppe in Beancount:

def format_date(qb_date):
# QuickBooks-Datumsangaben könnten wie "12/31/2019" aussehen
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# Buchungssätze bei Bedarf nach Zeilenreihenfolge sortieren (sie kommen normalerweise in der richtigen Reihenfolge)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# Transaktionskopf
output_lines.append(f"{date} * \"{payee}\" \"{memo}\"")
if first.get('Num'): # Referenznummer einfügen, falls verfügbar
output_lines.append(f" number: \"{first['Num']}\"")
# Durch jeden Buchungssatz/Posten iterieren
for split in splits:
acct_name = split['Account'].strip()
# QuickBooks-Kontoname dem Beancount-Konto zuordnen (mithilfe der früheren Zuordnung)
beancount_acct = account_map.get(acct_name, acct_name)
# Betrag mit Vorzeichen bestimmen:
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# Einige Exporte haben eine einzelne Betragsspalte (negativ für Haben-Buchungen)
amt_str = amount
else:
# Bei getrennten Soll-/Haben-Spalten
amt_str = debit if debit else f"-{credit}"
# Kommas in Zahlen zur Sicherheit entfernen
amt_str = amt_str.replace(",", "")
# Währung anhängen
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# Memo/Beschreibung für den Buchungssatz
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# Ende der Transaktion – Leerzeile
output_lines.append("")

Diese Skriptlogik tut Folgendes:

  • Formatiert das Datum in YYYY-MM-DD für Beancount.
  • Verwendet den Zahlungsempfänger (Name) und das Memo für den Buchungstext. Zum Beispiel: 2020-05-01 * "ACME Corp" "Rechnungszahlung" (Wenn kein Zahlungsempfänger vorhanden ist, können Sie den QuickBooks-Transaktionstyp verwenden oder den Zahlungsempfänger leer lassen).
  • Fügt number-Metadaten hinzu, wenn eine Referenznummer vorhanden ist (Scheck-Nr., Rechnungs-Nr. usw.).
  • Iteriert durch jede Buchungszeile:
    • Ordnet den QuickBooks-Kontonamen dem Beancount-Konto mithilfe eines Wörterbuchs account_map zu (das aus dem Kontenplan-Schritt gefüllt wurde).
    • Bestimmt den Betrag. Je nach Export haben Sie möglicherweise eine einzelne Amount-Spalte (mit positiven/negativen Werten) oder separate Soll- und Haben-Spalten. Der obige Code behandelt beide Fälle. Er stellt sicher, dass Haben-Buchungen als negative Beträge dargestellt werden (da in Beancount eine einzelne Zahl mit Vorzeichen pro Posten verwendet wird).
    • Hängt die Währung an (angenommen USD, es sei denn, eine andere Währungsspalte ist vorhanden).
    • Schreibt die Beancount-Buchungszeile mit dem Konto, dem Betrag und einem Kommentar mit dem Zeilen-Memo. Zum Beispiel: Assets:Girokonto 500.00 USD ; Einzahlung Income:Umsatzerloese -500.00 USD ; Einzahlung Dies spiegelt eine Einzahlung von $500 wider (von Umsatzerlösen auf das Girokonto).
  • Nach der Auflistung aller Buchungssätze trennt eine Leerzeile die Transaktion.

Umgang mit mehreren Währungen: Wenn Ihre QuickBooks-Daten mehrere Währungen beinhalten, fügen Sie den Währungscode zu jeder Buchung hinzu (wie oben gezeigt). Stellen Sie sicher, dass Konten in Fremdwährungen mit dieser Währung eröffnet werden. Wenn Sie zum Beispiel ein Bankkonto in EUR haben, würden Sie open Assets:Bank:Girokonto EUR ausgeben, und die Transaktionen auf diesem Konto verwenden EUR. Beancount unterstützt Hauptbücher mit mehreren Währungen und verfolgt implizite Umrechnungen, aber Sie müssen möglicherweise Preiseinträge für Wechselkurse hinzufügen, wenn Sie eine Umrechnung in eine Basiswährung in Berichten wünschen. Es wird auch empfohlen, Ihre Hauptbetriebswährung am Anfang der Beancount-Datei zu deklarieren (z. B. option "operating_currency" "USD").

Ausführen der Konvertierung: Speichern Sie das Python-Skript (z. B. als qb_to_beancount.py) und führen Sie es auf Ihren exportierten Dateien aus. Es sollte eine .beancount-Datei erzeugen, die alle Konten und Transaktionen enthält.

2.2 Umgang mit Randfällen und Datenbereinigung

Achten Sie bei der Transformation auf diese häufigen Fallstricke und wie Sie sie beheben können:

  • Nicht übereinstimmende Kontonamen: QuickBooks könnte Kontonamen haben, die mit den hierarchischen Namen von Beancount kollidieren. Zum Beispiel könnte QuickBooks zwei verschiedene übergeordnete Konten haben, die jeweils ein Unterkonto namens "Versicherung" haben. In Beancount muss Expenses:Versicherung eindeutig sein. Lösen Sie dieses Problem, indem Sie eines umbenennen (z. B. "Versicherung-Fahrzeug" vs. "Versicherung-Gesundheit") vor dem Export oder sie in Ihrem Skript eindeutigen Beancount-Konten zuordnen. Konsistente Namenskonventionen (keine Sonderzeichen und Verwendung von Hierarchien) sparen Kopfschmerzen. Verwenden Sie bei Bedarf den Ansatz einer Remapping-Datei: Pflegen Sie eine CSV-Datei oder ein Wörterbuch mit altem Namen → neuem Beancount-Namen und wenden Sie es während der Konvertierung an (unser Beispielcode verwendet eine account_map und könnte Überschreibungen aus einer Datei laden).

  • Daten und Formate: Stellen Sie sicher, dass alle Datumsangaben konsistent formatiert sind. Das obige Skript normalisiert M/D/Y in das ISO-Format. Achten Sie auch auf Probleme mit Geschäftsjahren im Vergleich zu Kalenderjahren, wenn Ihr Fünfjahreszeitraum einen Jahreswechsel überschreitet. Beancount kümmert sich nicht um Geschäftsjahresgrenzen, aber Sie möchten möglicherweise später Dateien zur besseren Übersichtlichkeit nach Jahren aufteilen.

  • Numerische Präzision: QuickBooks behandelt Währungen mit Cents, daher ist das Arbeiten in Cents normalerweise in Ordnung. Alle Beträge sollten idealerweise zwei Dezimalstellen in der CSV haben. Wenn Beträge in ganze Zahlen umgewandelt wurden (keine Dezimalstellen) oder Kommas/Klammern (für negative Werte) enthalten, bereinigen Sie diese im Skript (Kommas entfernen, (100.00) in -100.00 umwandeln usw.). Der CSV-Export sollte bei korrekter Durchführung (gemäß Anleitung) diese Formatierungsprobleme bereits vermeiden.

  • Negative Beträge und Vorzeichen: QuickBooks-Berichte zeigen negative Werte manchmal als -100.00 oder als (100.00) oder in bestimmten Excel-Exporten sogar als --100.00. Der Bereinigungsschritt sollte dies behandeln. Stellen Sie sicher, dass die Soll- und Haben-Beträge jeder Transaktion auf Null aufgehen. Beancount wird dies erzwingen (wenn es nicht ausgeglichen ist, wird beim Import ein Fehler ausgegeben).

  • Transaktionsduplikate: Wenn Sie Transaktionen in Stapeln exportieren mussten (z. B. jahrweise oder kontenweise), seien Sie vorsichtig beim Zusammenführen ohne Überlappung. Überprüfen Sie, ob die erste Transaktion eines Jahres nicht auch die letzte des vorherigen Stapels ist usw. Es ist leicht, versehentlich einige Transaktionen an den Grenzen zu duplizieren. Wenn Sie Duplikate vermuten, können Sie die endgültigen Beancount-Einträge nach Datum sortieren und nach identischen Einträgen suchen oder die eindeutigen Transaktions-Tags von Beancount verwenden, um sie zu finden. Eine Strategie besteht darin, QuickBooks-Transaktionsnummern als Metadaten einzufügen (z. B. die Transaktions-Nr. oder Rechnungsnummer als txn-Tag oder quickbooks_id-Metadaten verwenden) und dann sicherzustellen, dass keine Duplikate dieser IDs vorhanden sind.

  • Unausgeglichene Buchungssätze / Verrechnungskonten: QuickBooks könnte seltsame Fälle haben, wie eine Transaktion mit einer Differenz, die QuickBooks automatisch auf ein "Eröffnungsbilanz-Eigenkapital"- oder "Gewinnrücklagen"-Konto gebucht hat. Zum Beispiel, wenn anfängliche Kontensalden eingerichtet werden, bucht QuickBooks oft Differenzen auf ein Eigenkapitalkonto. Diese werden in den exportierten Transaktionen erscheinen. Beancount erfordert einen expliziten Ausgleich. Möglicherweise müssen Sie ein Eigenkapitalkonto für Eröffnungsbilanzwerte einführen (üblicherweise Equity:Opening-Balances), um QuickBooks zu spiegeln. Es ist eine gute Praxis, am ersten Tag Ihres Hauptbuchs einen Eröffnungsbilanzeintrag zu haben, der die Anfangssalden aller Konten festlegt (siehe Phase 5).

  • Randfälle bei mehreren Währungen: Bei Verwendung mehrerer Währungen könnte der Export von QuickBooks alle Beträge in der Heimatwährung oder in ihrer nativen Währung auflisten. Idealerweise erhalten Sie die Daten in der nativen Währung für jedes Konto (die Berichte von QuickBooks Online tun dies normalerweise). In Beancount trägt jede Buchung eine Währung. Wenn QuickBooks Wechselkurse oder eine Umrechnung in die Heimatwährung bereitgestellt hat, können Sie diese ignorieren und sich auf die Preiseinträge von Beancount verlassen. Wenn QuickBooks keine Wechselkurse exportiert hat, möchten Sie möglicherweise manuell Preiseinträge (z. B. mit der price-Direktive von Beancount) für wichtige Daten hinzufügen, um die Bewertung abzugleichen. Für die grundlegende Integrität des Hauptbuchs reicht es jedoch aus, dass die Transaktionen in ihren ursprünglichen Währungen ausgeglichen sind – nicht realisierte Gewinne/Verluste müssen nicht explizit erfasst werden, es sei denn, Sie möchten dieselben Berichte.

  • Forderungen / Verbindlichkeiten: QuickBooks verfolgt Rechnungs- und Belegdetails (Fälligkeitsdaten, Zahlungsstatus usw.), die in einem reinen Hauptbuch nicht vollständig übertragen werden. Sie erhalten die Forderungs- und Verbindlichkeitstransaktionen (Rechnungen erhöhen Forderungen, Zahlungen verringern Forderungen usw.), aber nicht die Rechnungsdokumente oder Kundensalden pro Rechnung. Daher sollten Sie nach der Migration überprüfen, ob Ihre Forderungs- und Verbindlichkeitssalden in Beancount den offenen Salden von Kunden/Lieferanten in QuickBooks entsprechen. Wenn Sie Rechnungen verfolgen müssen, können Sie die Metadaten von Beancount verwenden (z. B. ein invoice-Tag oder einen Link einfügen). Die QuickBooks-Rechnungsnummern sollten in den Feldern Num oder Memo enthalten sein – unser Skript behält die Num als number: "..." in den Transaktionsmetadaten bei.

  • Inaktive oder geschlossene Konten: Der IIF-Export kann inaktive Konten enthalten (wenn Sie diese Option gewählt haben). Es ist in Ordnung, sie zu importieren (sie werden nur keine Transaktionen und einen Nullsaldo haben, wenn sie wirklich inaktiv sind). Sie können sie in Beancount nach dem Datum der letzten Transaktion mit einer close-Direktive als geschlossen markieren. Dies hält Ihr Hauptbuch sauber. Zum Beispiel: 2023-12-31 close Expenses:AltesKonto ; nach Migration geschlossen Dies ist optional und dient hauptsächlich der Sauberkeit.

Durch sorgfältige Bereinigung und Zuordnung der Daten wie oben beschrieben erhalten Sie eine Beancount-Hauptbuchdatei, die Ihre QuickBooks-Daten strukturell widerspiegelt. Der nächste Schritt besteht darin, zu überprüfen, ob sie auch numerisch QuickBooks widerspiegelt.


Phase 3: Datenvalidierung und Abgleich

Die Validierung ist eine kritische Phase bei einer Buchhaltungsdatenmigration. Wir müssen sicherstellen, dass das Beancount-Hauptbuch auf den Cent genau mit den QuickBooks-Büchern übereinstimmt. Es können verschiedene Strategien und Werkzeuge verwendet werden:

3.1 Abgleich der Saldenbilanz

Ein Saldenbilanz-Bericht listet die Endsalden aller Konten auf (mit Soll und Haben oder positiv/negativ angegeben) und sollte sich zu Null summieren. Das Ausführen einer Saldenbilanz in beiden Systemen für dasselbe Datum ist der schnellste Weg, um die allgemeine Genauigkeit zu bestätigen.

  • In QuickBooks: Führen Sie einen Saldenbilanz-Bericht für den letzten Tag des letzten Jahres aus (z. B. 31. Dezember 2023). Dieser Bericht zeigt den Saldo jedes Kontos. Exportieren Sie ihn oder notieren Sie sich die wichtigsten Zahlen.

  • In Beancount: Verwenden Sie die Berichtsfunktionen von Beancount, um eine Saldenbilanz zu erstellen. Eine einfache Methode ist die Kommandozeile:

    bean-report migriert.beancount balances

    Der balances-Bericht ist eine Saldenbilanz, die alle Konten und ihre Salden auflistet. Sie können die Datei auch in Fava (der Web-UI von Beancount) öffnen und den Abschnitt Salden oder Bilanz ansehen. Jeder Kontostand in Beancount sollte mit der QuickBooks-Saldenbilanz übereinstimmen. Wenn QuickBooks zum Beispiel *Forderungen = 5.000anzeigt,solltedasKontoAssets:ForderungeninBeancountinsgesamt5.000* anzeigt, sollte das Konto Assets:Forderungen in Beancount insgesamt 5.000 (Soll) betragen. Wenn *Umsatzerlöse = 200.000,solltedasKontoIncome:UmsatzerloeseinBeancount200.000*, sollte das Konto Income:Umsatzerloese in Beancount 200.000 (Haben, was als -200.000 angezeigt werden könnte, wenn eine Saldenbilanz verwendet wird, die Haben-Salden als negativ darstellt) aufweisen.

Wenn es Diskrepanzen gibt, lokalisieren Sie diese:

  • Prüfen Sie, ob ein ganzes Konto fehlt oder zusätzlich vorhanden ist (haben wir ein Konto vergessen oder eines eingeschlossen, das bereits vor dem Migrationszeitraum geschlossen wurde?).
  • Wenn ein Saldo falsch ist, gehen Sie ins Detail: QuickBooks kann einen Konto-Schnellbericht oder einen Kontodetailbericht für dieses Konto ausführen, und Sie können dies mit dem Register von Beancount für dieses Konto vergleichen (bean-report migriert.beancount register -a Kontoname). Manchmal stammen Unterschiede von einer fehlenden oder doppelten Transaktion.

Überprüfen Sie auch, ob die Summe aller Konten in der Saldenbilanz von Beancount Null ist (es wird eine Gesamtsumme gedruckt, die Null oder sehr nahe an Null sein sollte). Beancount erzwingt die doppelte Buchführung, also wenn Sie eine Nicht-Null-Differenz haben, bedeutet dies, dass Aktiva minus Passiva-Eigenkapital nicht auf Null aufgegangen sind, was auf ein Problem hindeutet (was QuickBooks normalerweise auch nicht zulassen würde, aber passieren könnte, wenn einige Daten verloren gingen).

3.2 Vergleich der Kontensalden

Über die Saldenbilanz hinaus können Sie bestimmte Finanzberichte vergleichen:

  • Bilanz: Führen Sie eine QuickBooks-Bilanz für das Enddatum und eine Beancount-Bilanz (bean-report migriert.beancount balsheet) aus. Dies ist ähnlich wie die Saldenbilanz, aber nach Aktiva, Passiva und Eigenkapital geordnet. Die Zahlen sollten kategorieweise übereinstimmen. Für eine detailliertere Prüfung vergleichen Sie die Summen der Hauptkonten: Bargeld, Forderungen, Anlagevermögen, Verbindlichkeiten, Eigenkapital usw.

  • Gewinn- und Verlustrechnung (GuV): Führen Sie eine GuV für den Fünfjahreszeitraum (oder jahrweise) in QuickBooks und in Beancount aus (bean-report migriert.beancount income für eine GuV des gesamten Zeitraums). Der Jahresüberschuss aus Beancount sollte für jeden Zeitraum dem von QuickBooks entsprechen. Wenn Sie alle fünf Jahre migriert haben, sollte der kumulierte Jahresüberschuss übereinstimmen. Sie können auch einzelne Umsatz- und Aufwandssummen vergleichen, um sicherzustellen, dass keine Kategorie übersehen oder verdoppelt wurde.

  • Stichprobenartige Transaktionsprüfung: Wählen Sie einige zufällige Transaktionen aus (insbesondere aus jedem Jahr und jedem Hauptkonto) und überprüfen Sie, ob sie korrekt migriert wurden. Suchen Sie zum Beispiel eine Rechnung von vor 3 Jahren in QuickBooks und suchen Sie dann nach ihrem Betrag oder Memo in der Beancount-Datei (da alle Transaktionen Text sind, können Sie die .beancount-Datei in einem Texteditor öffnen oder Suchwerkzeuge verwenden). Überprüfen Sie, ob Datum, Beträge und Konten übereinstimmen. Dies hilft, Datumsformatierungsprobleme oder falsch zugeordnete Konten zu finden.

3.3 Automatisierte Integritätsprüfungen

Nutzen Sie die eigenen Validierungswerkzeuge von Beancount:

  • bean-check: Führen Sie bean-check migriert.beancount aus. Dies wird die Datei parsen und alle Fehler in der Syntax oder beim Ausgleich melden. Wenn das Skript etwas übersehen hat, wie ein nicht eröffnetes Konto oder eine nicht ausgeglichene Transaktion, wird bean-check dies kennzeichnen. Ein sauberer Durchlauf (keine Ausgabe) bedeutet, dass die Datei zumindest intern konsistent ist.

  • Saldo-Zusicherungen: Sie können explizite Saldo-Zusicherungen (balance assertions) im Hauptbuch für wichtige Konten als zusätzliche Prüfung hinzufügen. Wenn Sie zum Beispiel den Kontostand eines Bankkontos an einem bestimmten Datum kennen, fügen Sie eine Zeile hinzu: 2023-12-31 balance Assets:Bank:Girokonto 10000.00 USD Dann wird bean-check sicherstellen, dass im Hauptbuch zu diesem Datum der Saldo tatsächlich $10.000 beträgt. Dies ist optional, kann aber für sehr wichtige Konten nützlich sein. Sie könnten Endsalden aus QuickBooks übernehmen (z. B. am Ende jedes Jahres) und sie in der Beancount-Datei zusichern. Wenn eine Zusicherung fehlschlägt, meldet Beancount eine Differenz.

  • Saldenbilanz-Fortschreibung: Wenn Sie es vorziehen, können Sie eine periodenweise Überprüfung durchführen. Vergleichen Sie für jedes Jahr die Nettoveränderung. Zum Beispiel den Jahresüberschuss in QuickBooks 2020 im Vergleich zu Beancount 2020 usw., um sicherzustellen, dass jedes Jahr ordnungsgemäß ins Eigenkapital abgeschlossen wurde (QuickBooks überträgt den Jahresüberschuss automatisch in die Gewinnrücklagen jedes neuen Jahres; in Beancount sehen Sie nur das kumulierte Eigenkapital). Wenn Sie Unterschiede sehen, könnte dies auf ein Problem in den Daten eines bestimmten Jahres hindeuten.

  • Anzahl der Transaktionen und Duplikate: Zählen Sie die Anzahl der Transaktionen in QuickBooks im Vergleich zu Beancount. QuickBooks zeigt nicht einfach eine direkte Anzahl an, aber Sie können dies abschätzen, indem Sie Zeilen in der CSV-Datei zählen (jeder Transaktionskopf vs. Buchungssätze). In Beancount ist ein schneller Weg, das Vorkommen von txn oder * " in der Datei zu zählen. Sie sollten gleich oder etwas höher sein als in QuickBooks (wenn Sie Eröffnungsbilanztransaktionen oder Anpassungen hinzugefügt haben). Eine signifikante Abweichung bedeutet, dass etwas ausgelassen oder dupliziert worden sein könnte. Unsere Verwendung von eindeutigen IDs in den Metadaten kann helfen: Wenn Sie Duplikate vermuten, suchen Sie in der Beancount-Datei nach derselben Scheck- oder Rechnungsnummer, die zweimal erscheint, obwohl sie es nicht sollte.

  • Abstimmungsstatus: Wir haben in unserem Skript Metadaten wie rec: "y" oder "n" basierend auf dem abgestimmten Status in QuickBooks eingefügt (als rec im Beispiel). Dies ist keine Standardfunktion von Beancount (Beancount verfolgt den Status "ausgeglichen/ausstehend" nicht auf die gleiche Weise wie Ledger), aber es können hilfreiche Metadaten sein. Sie könnten überprüfen, ob alle in QuickBooks abgestimmten Transaktionen vorhanden sind. Letztendlich könnte die erneute Abstimmung der Bankkonten in Beancount (mithilfe Ihrer Kontoauszüge) der endgültige Beweis sein, dass nichts fehlt.

Durch diese Validierungen schaffen Sie Vertrauen, dass die Migration die Daten erhalten hat. Nehmen Sie sich für diese Phase Zeit – es ist einfacher, Anomalien jetzt zu beheben als Monate später, wenn man sich möglicherweise auf die Bücher verlässt. Häufige Probleme bei fehlgeschlagener Validierung sind: ein fehlender Eröffnungssaldo eines Kontos, eine Transaktion mit einem Datum außerhalb des Bereichs oder eine Vorzeichenumkehr bei einem Eintrag. Alle sind behebbar, sobald sie identifiziert wurden.


Phase 4: Übernahme in das Beancount-Hauptbuch

Nach der Bereinigung und Validierung ist es an der Zeit, die Daten in Ihrer Beancount-Hauptbuchstruktur zu formalisieren. "Übernahme" bedeutet hier sowohl die Finalisierung der Hauptbuchdateien als auch deren potenzielle Eincheckung in ein Versionskontrollsystem zur Nachvollziehbarkeit.

4.1 Organisation der Hauptbuchdateien und Konfiguration

Entscheiden Sie, wie Sie die Beancount-Hauptbuchdateien strukturieren. Für fünf Jahre Daten können Sie alles in einer Datei behalten oder nach Jahr oder Kategorie aufteilen. Eine übliche, klare Struktur ist:

  • Haupt-Hauptbuchdatei: z.B. ledger.beancount – Dies ist der Einstiegspunkt, der andere Dateien include-n kann. Sie könnte globale Optionen enthalten und dann die jährlichen Dateien einbinden.
  • Kontendatei: Definieren Sie den Kontenplan und die Eröffnungssalden. Zum Beispiel accounts.beancount mit allen open-Direktiven (wie vom Skript generiert). Sie könnten hier auch Waren (Währungen) auflisten.
  • Transaktionsdateien: Eine pro Jahr, z.B. 2019.beancount, 2020.beancount, usw., die die Transaktionen für dieses Jahr enthalten. Dies hält jede Datei überschaubar und ermöglicht es Ihnen, sich bei Bedarf auf ein Jahr zu konzentrieren. Alternativ können Sie nach Entität oder Konto aufteilen, aber die zeitbasierte Aufteilung ist für Finanzdaten unkompliziert.

Beispiel für eine Hauptdatei:

option "title" "Mein Geschäfts-Hauptbuch"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

Auf diese Weise werden alle Daten aggregiert, wenn Sie Berichte ausführen, aber Sie behalten die Ordnung bei.

Beancount erfordert nicht mehrere Dateien – Sie könnten eine große Datei haben – aber die obige Struktur verbessert die Klarheit und die Versionskontrolle. Gemäß den Best Practices von Beancount ist es gut, klare Abschnittsüberschriften zu verwenden und zusammengehörige Einträge logisch zu gruppieren.

4.2 Festlegen von Eröffnungssalden und Eigenkapital

Wenn Ihre Migration nicht bei absolut Null beginnt, müssen Sie Eröffnungssalden behandeln. Zwei Szenarien:

  • Bücher beginnen von Grund auf: Wenn der Fünfjahreszeitraum mit der Gründung des Unternehmens beginnt (z. B. Sie haben im Januar 2019 mit QuickBooks begonnen, wobei alle Konten auf Null standen, außer dem anfänglichen Eigenkapital), benötigen Sie möglicherweise keine separate Eröffnungssaldo-Transaktion. Die ersten Transaktionen im Jahr 2019 (wie die anfängliche Finanzierung eines Bankkontos) werden natürlich die Anfangssalden festlegen. Stellen Sie nur sicher, dass jegliches Anfangskapital oder vorherige Gewinnrücklagen über Eigenkapitaltransaktionen verbucht werden.

  • Bücher mittendrin (teilweise Historie): Wenn Sie QuickBooks früher begonnen haben und 2019 ein Mittelpunkt ist, dann hatte jedes Konto zum 1. Januar 2019 einen vorgetragenen Saldo. QuickBooks hätte diese als Eröffnungssalden oder Gewinnrücklagen. In Beancount ist es üblich, einen Eröffnungsbilanzeintrag am Tag vor Ihrem Startdatum zu erstellen:

    • Verwenden Sie ein Eigenkapitalkonto namens Equity:Opening-Balances (oder ähnlich), um die Summe aller Eröffnungsbeträge auszugleichen.
    • Beispiel: Wenn am 31.12.2018 der Kassenbestand 10.000,dieForderungen10.000, die Forderungen 5.000 und die Verbindlichkeiten 3.000(Haben)betrugen,wu¨rdenSieeineTransaktionschreiben:20181231"Ero¨ffnungsbilanzwerte"Assets:Kasse10000.00USDAssets:Forderungen5000.00USDLiabilities:Verbindlichkeiten3000.00USDEquity:OpeningBalances12000.00USDDiesla¨sstOpeningBalancesmitdernegativenSumme(3.000 (Haben) betrugen, würden Sie eine Transaktion schreiben: `2018-12-31 * "Eröffnungsbilanzwerte"` ` Assets:Kasse 10000.00 USD ` ` Assets:Forderungen 5000.00 USD ` ` Liabilities:Verbindlichkeiten -3000.00 USD ` ` Equity:Opening-Balances -12000.00 USD ` Dies lässt Opening-Balances mit der negativen Summe (–12k) zurück, was den Eintrag ausgleicht. Jetzt beginnen alle Aktiv-/Passivkonten das Jahr 2019 mit korrekten Salden. Dies sollte alle "Gewinnrücklagen" oder Vortragssalden von QuickBooks widerspiegeln.
    • Alternativ verwenden Sie die pad- und balance-Direktiven von Beancount: Für jedes Konto können Sie es von Opening-Balances pad-den und den Saldo balance-n. Dies ist ein automatisierterer Weg. Zum Beispiel: 2018-12-31 pad Assets:Kasse Equity:Opening-Balances 2018-12-31 balance Assets:Kasse 10000.00 USD Dies weist Beancount an, den notwendigen Eintrag (auf Opening-Balances) einzufügen, damit der Kassenbestand an diesem Datum 10000 USD beträgt. Tun Sie dies für jedes Konto. Das Ergebnis ist ähnlich, aber das Schreiben einer expliziten Transaktion wie in der ersten Methode ist auch unkompliziert.
  • Gewinnrücklagen: QuickBooks exportiert nicht explizit eine "Gewinnrücklagen"-Transaktion – es berechnet sie nur. Nach der Migration stellen Sie möglicherweise fest, dass Equity:Gewinnrücklagen Null ist, wenn Sie es nicht erstellt haben. In Beancount sind Gewinnrücklagen einfach die Gewinne der Vorjahre. Sie können wählen, ein Gewinnrücklagenkonto zu erstellen und die Gewinne der Vorjahre am ersten Tag jedes neuen Jahres dorthin zu übertragen, oder einfach das Eigenkapital die Summe aller Erträge/Aufwendungen sein zu lassen (was im Eigenkapitalabschnitt in Berichten erscheint). Zur Transparenz buchen einige Benutzer jährlich Abschlussbuchungen. Dies ist optional und dient hauptsächlich der Darstellung. Da wir alle Transaktionen migriert haben, wird der Gewinn für jedes Jahr natürlich zusammengefasst, wenn Sie einen Bericht pro Jahr ausführen.

  • Vergleichende Prüfungen: Führen Sie nach dem Festlegen der Eröffnungssalden eine Bilanz zum Startdatum aus, um sicherzustellen, dass alles korrekt ist (sie sollte diese Eröffnungssalden im Vergleich zum Eröffnungskapital zeigen, die sich zu Null summieren).

4.3 Finalisierung und Versionskontrolle

Nachdem die Daten im Beancount-Format und strukturiert sind, ist es ratsam, die Dateien in ein Versionskontroll-Repository (z. B. Git) zu committen. Jede Änderung am Hauptbuch kann nachverfolgt werden, und Sie haben einen Prüfpfad aller Änderungen. Dies ist ein Hauptvorteil der Plain-Text-Buchhaltung. In QuickBooks sind Änderungen beispielsweise möglicherweise nicht leicht vergleichbar, aber in Beancount können Sie zeilenweise Unterschiede sehen. Wie einige Benutzer anmerken, erhalten Sie mit Beancount Transparenz und die Möglichkeit, Änderungen bei Bedarf rückgängig zu machen – jeder Eintrag kann mit einer Änderungshistorie verknüpft werden.

Erwägen Sie, den Commit dieser initialen Migration als v1.0 oder ähnlich zu taggen, damit Sie wissen, dass er den Zustand der Bücher darstellt, wie er aus QuickBooks importiert wurde. In Zukunft werden Sie neue Transaktionen direkt in Beancount eingeben (oder aus Bank-Feeds importieren usw.), und Sie können normale Softwareentwicklungspraktiken anwenden (monatliches oder tägliches Committen, Verwendung von Branches für Experimente usw.).

Einrichtung von Fava oder anderen Tools: Fava ist eine Webschnittstelle für Beancount, die es einfach macht, Berichte anzuzeigen. Führen Sie nach dem Commit fava ledger.beancount aus, um die Finanzberichte zu durchsuchen und sie ein letztes Mal mit Ihren QuickBooks-Berichten zu vergleichen. Sie könnten kleine Unterschiede in einer UI leichter erkennen (zum Beispiel zeigt ein Konto, das Null sein sollte, aber einen kleinen Saldo aufweist, einen fehlenden Abschlusseintrag oder eine verirrte Transaktion an).

Namenskonventionen und Konsistenz: Sie haben jetzt die volle Kontrolle, also stellen Sie Konsistenz sicher:

  • Alle Konten sollten klare Namen haben, die mit großgeschriebenen Kategorienamen beginnen (Assets, Liabilities usw.). Wenn einige seltsam aussehen (z. B. Assets:assets:EinKonto aufgrund eines Groß-/Kleinschreibungsfehlers aus QuickBooks), benennen Sie sie in der Kontendatei um und aktualisieren Sie die Transaktionen (ein schnelles Suchen/Ersetzen in der Datei kann dies tun, oder verwenden Sie bean-format von Beancount oder den Multi-Cursor des Editors).
  • Warensymbole (Währungscodes) sollten konsistent sein. Für USD verwenden Sie überall USD (nicht $ oder US$). Für andere verwenden Sie Standardcodes (EUR, GBP usw.). Diese Konsistenz ist wichtig für die Preissuche und Berichte von Beancount.
  • Entfernen Sie alle temporären oder Dummy-Konten, die möglicherweise erstellt wurden (wenn Sie zum Beispiel Expenses:Sonstiges für unbekannte Konten im Skript als Sammelkonto verwendet haben, versuchen Sie, diese durch korrekte Zuordnung aller Konten zu eliminieren).

Abschalten von QuickBooks: An diesem Punkt sollten Sie parallele Bücher in Beancount haben, die mit QuickBooks übereinstimmen. Einige entscheiden sich dafür, beide Systeme für eine kurze Zeit parallel zu betreiben, um sicherzustellen, dass nichts übersehen wurde. Aber wenn die Validierung solide ist, können Sie die QuickBooks-Bücher "schließen":

  • Wenn dies eine Unternehmensumgebung ist, erwägen Sie den Export aller QuickBooks-Quelldokumente (Rechnungen, Belege, Quittungen) für die Aufzeichnungen, da diese in Beancount nicht existieren werden, es sei denn, Sie hängen sie manuell an.
  • Bewahren Sie eine Sicherung der QuickBooks-Daten auf (sowohl die Firmendatei als auch die Exportdateien).
  • Führen Sie das Beancount-Hauptbuch zukünftig als primäres Aufzeichnungssystem.

Durch die Übernahme der Daten in das Beancount-Hauptbuch haben Sie die Migrationspipeline abgeschlossen. Der letzte Schritt besteht darin, eine Prüfung durchzuführen und die Konsistenz der Finanzberichte nachzuweisen, um sich selbst (und alle Stakeholder oder Prüfer) davon zu überzeugen, dass die Migration erfolgreich war.


Phase 5: Audit nach der Migration und Beispiele

Um den Erfolg der Migration zu veranschaulichen, bereiten Sie einen Vorher-Nachher-Vergleich der Finanzberichte und möglicherweise einen Diff der Transaktionen vor. Dies liefert den Beweis, dass die Bücher konsistent sind.

5.1 Überprüfung der Finanzberichte

Erstellen Sie wichtige Finanzberichte aus sowohl QuickBooks als auch Beancount für dieselben Daten und vergleichen Sie sie:

  • Bilanz zum 31. Dezember 2023: Vergleichen Sie die Summen von Aktiva, Passiva und Eigenkapital Zeile für Zeile. Sie sollten übereinstimmen. Wenn QuickBooks zum Beispiel Gesamtvermögen = 150.000undGesamtkapital=150.000** und **Gesamtkapital = 150.000 anzeigte, sollte die Beancount-Bilanz dieselben Summen zeigen. Wenn Sie Konten etwas anders strukturiert haben (z. B. einige Unterkonten zusammengelegt), passen Sie dies im Vergleich an oder gehen Sie eine Ebene tiefer, um sicherzustellen, dass die Summen gleich sind.

  • GuV 2019–2023: Stellen Sie sicher, dass die Gesamterträge, Gesamtaufwendungen und der Jahresüberschuss für jedes Jahr (oder den gesamten Bereich) identisch sind. Geringfügige Unterschiede könnten entstehen, wenn QuickBooks bei Berichten gerundet hat, aber Transaktionen führen normalerweise Cents exakt, sodass der Jahresüberschuss exakt sein sollte. Wenn der Gewinn eines Jahres abweicht, gehen Sie in die Daten dieses Jahres – oft ein Indikator für einen fehlenden oder doppelten Eintrag in diesem Zeitraum.

  • Differenzen in der Saldenbilanz: Erstellen Sie nach Möglichkeit eine Tabelle, in der Sie jedes Konto und den Saldo aus QuickBooks im Vergleich zu Beancount auflisten. Da wir erwarten, dass sie übereinstimmen, sollte dies eine Spalte mit lauter Nullen sein. Dies ist im Wesentlichen die Kreuzprüfung der Saldenbilanz, die wir besprochen haben, aber das Aufschreiben hilft bei der Dokumentation.

5.2 Beispielhafter Vergleich (Vorher vs. Nachher)

Unten ist ein Beispiel-Ausschnitt, der die Datenkonsistenz demonstriert. Nehmen wir an, unsere QuickBooks-Saldenbilanz für den 31. Dezember 2023 war:

KontoQuickBooks-Saldo (31. Dez. 2023)
Aktiva
  Assets:Bank:Girokonto$12.500,00 (Soll)
  Assets:Forderungen$3.200,00 (Soll)
Passiva
  Liabilities:Kreditkarte$-1.200,00 (Haben)
  Liabilities:Darlehen$-5.000,00 (Haben)
Eigenkapital
  Equity:Eröffnungsbilanz$-7.500,00 (Haben)
  Equity:Gewinnrücklagen$-2.000,00 (Haben)
  Equity:Laufender Gewinn$0,00

In Beancount, nach dem Import und der Buchung aller Transaktionen bis 2023, gibt ein bean-report balances (Saldenbilanz) aus:

KontoBeancount-Saldo (31. Dez. 2023)
Aktiva
  Assets:Bank:Girokonto12.500,00 USD (Soll)
  Assets:Forderungen3.200,00 USD (Soll)
Passiva
  Liabilities:Kreditkarte-1.200,00 USD (Haben)
  Liabilities:Darlehen-5.000,00 USD (Haben)
Eigenkapital
  Equity:Eröffnungsbilanz-7.500,00 USD (Haben)
  Equity:Gewinnrücklagen-2.000,00 USD (Haben)
  Equity:Gewinn (2019-2023)0,00 USD

(Hinweis: Die Eigenkapitalabschnitte können unterschiedlich strukturiert sein; der Schlüssel ist, dass die Summen übereinstimmen. Hier spielt "Gewinn (2019-2023)" in Beancount die Rolle des laufenden Jahresgewinns/der kombinierten Gewinnrücklagen und zeigt Null an, weil der Gewinn in die Gewinnrücklagen abgeschlossen wurde.)

Wie gezeigt, stimmt jedes Konto auf den Cent genau überein. Die Summe der Soll-Beträge entspricht der Summe der Haben-Beträge auf beiden Seiten.

Wenn wir zusätzlich eine GuV für 2023 ausführen:

  • QuickBooks: Erträge 50.000,Aufwendungen50.000, Aufwendungen 48.000, Jahresüberschuss $2.000.
  • Beancount: Erträge 50.000,Aufwendungen50.000, Aufwendungen 48.000, Jahresüberschuss $2.000 (der dann in die Gewinnrücklagen abgeschlossen wurde oder im Eigenkapital in der Jahresendbilanz erscheint).

Sie können bei Bedarf einen Diff der Transaktionen erstellen, aber da QuickBooks-Daten nicht in Hauptbuchform vorliegen, ist es effektiver, sich auf Berichte zu verlassen. Man könnte sowohl die QuickBooks-CSV als auch die Beancount-Transaktionen nach Datum sortieren und Schlüsselfelder als letzte Überprüfung vergleichen (dies kann in Excel oder mit einem Skript erfolgen). Da wir jedoch unserer früheren Validierung vertrauen, ist die Überprüfung der Finanzberichte normalerweise ausreichend.

5.3 Tipps für die Prüfung

  • Wenn ein Prüfer oder Stakeholder eine Bestätigung benötigt, präsentieren Sie die Vorher-Nachher-Finanzberichte nebeneinander. Die Transparenz von Beancount kann Audits tatsächlich vereinfachen, da Sie jede Zahl von einem Bericht schnell bis zum Quelldatensatz zurückverfolgen können (insbesondere mit der Drill-Down-Funktionalität von Fava).
  • Bewahren Sie die QuickBooks-Sicherung und die exportierten CSVs als Teil Ihres Prüfpfads auf. Dokumentieren Sie alle während der Migration vorgenommenen Anpassungen (z. B. "Konto X in Y umbenannt für Konsistenz" oder "Transaktion Z in zwei Einträge aufgeteilt für Klarheit", falls Sie solche Änderungen vorgenommen haben).
  • Implementieren Sie zukünftig regelmäßige Überprüfungen in Beancount. Zum Beispiel hilft die monatliche Abstimmung der Bankkonten und eine Zusicherung ihres Endbestands, Datenprobleme oder Eingabefehler zu erkennen. Die Migration bietet eine gute Ausgangsbasis; die Aufrechterhaltung der Disziplin im neuen System gewährleistet die fortlaufende Genauigkeit.

Schließlich feiern Sie den Abschluss der Migration: Sie haben fünf Jahre Buchhaltungsdaten erfolgreich von QuickBooks nach Beancount übertragen. Die Daten liegen nun in einem leichtgewichtigen, versionierbaren Textformat mit vollständiger doppelter Buchführungsintegrität vor. Sie haben die Daten exportiert, mit Python-Skripten transformiert, die Integrität durch Saldenbilanzen und Berichte validiert und sie in ein gut organisiertes Beancount-Hauptbuch übernommen. Dieser umfassende Prozess stellt sicher, dass das Beancount-Hauptbuch eine genaue, getreue Nachbildung Ihrer QuickBooks-Bücher über den Fünfjahreszeitraum ist und Sie für eine optimierte Buchhaltung in der Zukunft aufstellt.

Einführung der Multi-Datei-Unterstützung in Beancount

· 2 Minuten Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

Viele unserer Kunden haben uns seit Februar gefragt, wie man mehrere Dateien zu einem Ledger hinzufügen kann. Sie benötigen die Dateistruktur, um Transaktionen zu archivieren oder zu kategorisieren. Nach einigen Monaten Arbeit freuen wir uns, bekannt geben zu können, dass die Funktion kostenlos veröffentlicht wurde.

So nutzen Sie es:

Datei > Neue Datei erstellen

2021-09-24-multi-file-one-ledger

Gehen Sie zum Datei-Editor-Tab in der linken Navigationsleiste. Folgen Sie dann dem Dropdown-Menü "Datei" und klicken Sie auf "Neue Datei erstellen".

Datei > Neue Datei erstellen

Benennen Sie Ihre neue Datei

Geben Sie Ihrer Datei einen gültigen Dateinamen und speichern Sie sie. Alle Dateinamen müssen mit ".bean" enden.

Benennen Sie Ihre neue Datei

Datei einbinden

Dies ist ein entscheidender Schritt: Sie müssen die neu erstellte Datei in main.bean einbinden.

Wenn Sie beispielsweise stock.bean hinzugefügt haben, geben Sie include "stock.bean" in main.bean an.

Datei einbinden

Aktualisieren und zur Datei navigieren

Aktualisieren Sie die Seite, und Sie werden sehen, dass die Datei im Dropdown-Menü "Datei" erscheint.

Aktualisieren und zur Datei navigieren

Datei umbenennen oder löschen

Wenn Sie zur Datei navigiert sind, können Sie sie im Dropdown-Menü "Bearbeiten" umbenennen oder löschen.

Datei umbenennen oder löschen

Haben Sie Probleme?

Stellen Sie Fragen in https://t.me/beancount.

Fava Upgrade auf Version 1.19: Wichtige Änderungen und Verbesserungen

· Eine Minute Lesezeit
Mike Thrift
Mike Thrift
Marketing Manager

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

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

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

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

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