Skip to main content

Finanzen im Griff mit Ledger (1) - Grundlagen

Finanzverwaltung auf der Kommandozeile. Oder komfortabel in Emacs mit dem Ledger mode

Wer von uns kennt das nicht. Am Ende des Geldes ist noch eine ganze Menge Monat übrig, und die Zeit nutzen dann das Gaswerk und der Goldfischzüchterverein, Ihren Jahresbeitrag (inklusive der Preiserhöhung) vom Konto einzuziehen.

Ich hatte auch mal eine Zeit, in der ich nur mit einer Menge Finanzjonglage von Monat zu Monat kam, obwohl ich genau so viel Geld zur Verfügung hatte wie heute. Ich hatte es nur nicht so gut unter Kontrolle. Das Kernproblem war eigentlich, das ich fast nie wusste, wie viel von dem Geld, das auf meinem Konto war nun wirklich zu meiner freien Verfügung stand, und welche Rechnungen in der nächsten Zeit auf mich zu kommen sollten.

Und dann habe ich mich irgendwann hingesetzt und beschlossen das zu ändern. Zunächst mit Bleistift und Papier, später dann mit Unterstützung des PCs. Dabei habe ich diverse Systeme versucht, Hängengeblieben bin ich schlussendlich bei Ledger. Im vergangenen Jahr habe ich immer mal wieder kleine Tests gemacht, wie ich meinen Umgang mit Geld damit abbilden kann, und da es dabei keine größeren Schwierigkeiten gab, habe ich zum Jahresbeginn 2019 komplett auf Ledger umgestellt.

Was kann Ledger (Buchungen & Transaktionen))

Eigentlich kann ledger nur sehr wenige Dinge, aber bei denen ist es sehr flexibel, so dass sich eine Menge Anwendungsfälle damit abdecken lassen.

  1. Es liest eine oder mehrere Textdateien mit Buchungen
  2. Es summiert diese Buchungen (und unterscheidet dabei die Konten auf denen gebucht wird)
  3. Es gibt entweder den Buchungsverlauf, oder die Summen auf dem Bildschirm aus

Vor allem fällt auf, das Ledger auf keinen Fall in den Buchungen in meinen Dateien rumschreibt. Ich schreibe meine Buchungen, und Ledger wertet sie lediglich aus. Darin ist es sehr schnell und präzise.

Mal ein Beispiel:

2019-03-10  Tankstelle
   Benzin        50.00 
   Girokonto   -50.00

Was wir hier sehen, ist eine Transaktion. Das ist der Baustein, mit dem wir in Ledger am häufigsten zu tun haben. Er besteht aus dem Kopf, der angibt, wann die Transaktion stattgefunden hat und wer der Partner dabei war (hier die Tankstelle), sowie aus einer Anzahl Buchungen (diese sind jeweils etwas eingerückt). Buchungen sind der kleinste Baustein, mit dem wir in Ledger zu tun haben. Eine Buchung nennt ein Konto, und einen Betrag, der dem Konto hinzugefügt (oder abgezogen falls der Betrag negativ ist) wird . Mehrere dieser Buchungen bilden eine Transaktion.

Das wesentliche Merkmal einer Transaktion ist, dass sich die Buchungen IMMER auf 0 aufsummieren müssen. Andernfalls ist die Transaktion nicht gültig, und erzeugt einen Abbruch mit einem Fehler in Ledger.

In der Konsequenz bedeutet dass, dass es zu jeder Buchung mindestens eine Gegenbuchung geben muss. Eine Transaktion besteht also aus immer mindestens zwei Buchungen, und wird daher landläufig auch "doppelte Buchführung " genannt. Jeder Euro, der von einem Konto kommt, muss auf einem anderen Konto landen.

Wenn ich Ledger das obige Beispiel auswerte und mir die Summen anzeigen lasse sagt es mir beipielsweise, das sich auf dem Konto Benzin nun 50.00 befinden, und mein Girokonto nun mit 50.00 in den Miesen ist.

Konten

"Ist doch super", wirst du nun sagen, "wenn ich die 50.00 Euro noch mal brauche, dann buche ich sie einfach vom Benzinkonto wieder ab, und…". Aber so funktioniert das offensichtlich nicht. Die Tankstelle wird es nicht mögen wenn du bei Ihr wieder abbuchst. Auch wenn du das von der reinen Buchhaltung her einfach machen könntest.

In der Realitat benutzt man daher ein paar Kategorien von Konten, die man dann im Verlauf nur für bestimmte Arten von Buchungen benutzt. Das nennt sich dann Kontenrahmen, und kann theoretisch von jedem so gemacht werden, wie er Lust und Laune hat. In der Praxis haben sich aber eine Handvoll Kontenrahmen bewährt, die sogar teilweise soweit standardisiert wurden, das unterschiedliche Firmen mit gleichen Kontenrahmen arbeiten.

Fur mich als Privatanwender hat sich ein Kontenrahmen bewährt, der aus 6 Kategorien besteht

Einnahmen

Irgendwoher muss das Geld ja kommen, und hier finden sich alle Konten wieder, auf denen das Geld quasi " entsteht". Wir erinnern uns: Wenn mein Gehalt auf meinem Girokonto ankommt braucht es ja eine entsprechende Gegenbuchung.

Daher sieht die Buchung dann so aus

2019-03-01 Firma Baumeister
   Einnahmen:Gehalt   -2000.00
   Haben:Girokonto  2000.00

Während mein Girokonto immer voller wird laufen die Einnahmekonten immer mehr ins negative. Was ja auch der Realität entspricht. Wenn ich Gehalt bekomme, wird meine Firma etwas ärmer.

Ausgaben

Das Gegenteil ist der Fall wenn ich Geld ausgebe

2019-03-10  Tankstelle
   Ausgaben:Benzin    50.00 
   Haben:Girokonto   -50.00

Wenn ich von meinem Girokonto eine Rechnung bezahle, dann muss das Geld ja irgendwo "verschwinden", und das tut es ausschliesslich auf Konten der Kategorie "Ausgaben". In Ledger sprich man eigentlich nicht von Kategorien, sondern nur von Konten. Konten können auch Unterkonten enthalten (z.B.) Ausgaben:Nebenkosten:Gas und Ausgaben:Nebenkosten:Wasser. Wenn ich mit diesen Konten nun so etwas buche:

2019-03-09 Stadtwerke
   Haben: Girokonto  -100.00
   Ausgaben:Nebenkosten:Gas  50.00
   Ausgaben:Nebenkosten:Wasser 40.00
   Ausgaben:Nebenkosten: 10.00

Dann sieht man das hier vom Girokonto eine Rechnung von 100 Euro der Stadtwerke bezahlt wurden, die komplett auf dem Konto Nebenkosten gelandet sind. Davon 50.00 auf dem Konto für Gas und 40.00 auf dem Konto für Wasser. Ausserdem hat die Stadtwerke mir noch eine Allgemeine Gebühr von 10.00 berechnet, die ich nicht direkt dem Gas oder Wasser zuordnen kann, die aber doch zu den Nebenkosten gehören. Hier sieht man auch, das eine Transaktion mindestens zwei Buchungen enthalten muss, es dürfen aber auch mehr sein. Sie müssen sich nur zu 0 summieren.

Haben

Ist eigentlich ganz einfach. Hierunter fallen alle Konten auf denen sich üblicherweise Geld befindet, also das Girokonto,das Sparbuch, das Portemonaie. Es ist Geld (oder Werte) das ich habe. Wenn mir ein Konto Zinsen abwirft, handelt es sich sehr wahrscheinlich um ein Haben-Konto

Soll

Das sind quasi Schulden die ich irgendwo habe. In der Regel erkenne ich Soll-Konten daran, das ich Zinsen dafür zahle, denn irgendjemand hat mir hier Geld zur Verfügung gestellt. Typischerweise sind das Baukredite oder die Kreditkarte.

Ausgleich

Ausgleichskonten sind Konten, die es in einer perfekten Buchhaltungswelt eigentlich nicht geben sollte. Leider ist die Welt aber nicht perfekt, Und daher habe ich mir zwei Unterkonten fur Ausgleichsbuchungen angwöhnt

  1. Ausgleich:Einstandsbuchung

    Dieses Konto benutze ich genau 1 mal am Anfang der Buchführung, und danach nie wieder. Wenn ich irgendwann heute mit der Buchführung anfange, dann ist ja auf meinem Girokonto bereits Geld, und meine Kreditkarte ist bereits im Minus. Ich buche also auf mein Girokonto das Geld drauf, das heute drauf sein soll, und die Gegenbuchung geht dann halt gegen das Konto Einstandsbuchung.

    Hier wird also tatsächlich Geld aus sehr dünner Luft erzeugt. Damit das nicht zum schummeln benutzt wird, Habe ich genau eine Buchung ganz am Anfang, und danach nie wieder.

  2. Ausgleich:Ausgleichskonto.

    Da ich auch mein Bargeld (also das Portemonaie) mitverwalte kann es natürlich auch mal passieren, dass ich einfach weniger Geld im Portemonaie habe, als eigentlich laut meiner Buchhaltung drin sein sollte. Mal verliere ich Geld in der Waschmaschine, oder sonstwo, Manchmal taucht Geld unverhofft im Flusensieb wieder auf.

    Für all sowas gibt es dieses Konto als Gegenkonto zum Portemonaie. Das Konto sollte so selten wie möglich verwendet werden, und es sollte möglichst wenig von 0 abweichen. Wenn das nicht mehr gewährleistet ist, ist das ein sicheres Zeichen für ein generelles Problem mit der Disziplin beim Buchen, oder beim Ausgeben von Bargeld.

    Wenn ich z.B weiss, das ich am Abend vorher 50.00 bei einem feuchtfröhlichen Zug durch die Gemeinde ausgegeben habe, und das auch so buche, mir aber irgendwie 51.00 in meinem Portemonaie fehlen, dann buche ich einfach 51.00 Euro auf das Freizeitkonto, und benutze für den verschwundenen Euro nicht extra das Ausgleichskonto. Erst wenn ich mir das Verschwinden absolut nicht mehr sinnvoll erklären kann, ist das ein Fall fur dieses Konto.

Budget

Eigentlich bringt Ledger von Hause aus eine Funktionalität mit, mit der ich Budgets (also Geld, das für bestimmte Ausgaben reserviert ist) verwalten kann. Leider ist diese etwas beschränkt, was die Flexibilität angeht. Ich simuliere also mittels des Kontos Budget und seiner Unterkonten ein Verfahren, das sich schon bei meiner Großmutter bewährt hat, um Geld fur später an die Seite zu legen: Briefumschläge.

Immer wenn mein Gehalt kommt packe ich In jeden dieser Briefumschläge ein wenig Geld. Und wenn dann die Autoversicherung abbucht, mache ich diesen Umschlag auf, und er enthält genau die Summe, die ich erwartungsgemäss zu zahlen habe. Natürlich fülle ich diese Umschläge nicht wörtlich. Sie existieren nicht einmal. Sie sind lediglich virtuelle Briefumschläge, und das Konto Budget ist ein Unterkonto meines Girokontos. Die Bank kennt dieses Unterkonto nicht. Aus Sicht der Bank habe ich 300 Euro auf meinem Girokonto. Ledger kann mir aber auf diese Art anzeigen, das von diesen 300 Euro sich bereits 180 in einem virtuellen Briefumschlag mit der Aufschrift Autoversicherung befinden, und mir daher nur noch 120 Euro zur freien Verfügung stehen

Die dadurch notwendigen Buchungssätze einer Transaktion können manchmal schon sehr verwirrend wirken, aber mit etwas Übung ist das machbar. Ich werde darauf noch ausführlich eingehen.

Arbeitserleichterungen

Wie schon zu Anfang erwähnt liest Ledger die Dateien lediglich, und wertet sie aus. Zu keiner Zeit schreibt Ledger in eine der Dateien irgendetwas hinein (es gibt eine kleine Ausnahme, die man explizit anfordern muß, und die man fast nie braucht)

Das bedeutet aber auch, dass ich die kompletten Buchungen selbst mit der Hand tippen muss, inklusiver der passenden Gegenbuchungen. die Kontonamen dürfen keine Tippfehler enthalten (was bei Namen wie Ausgaben:Haushalt:Lebensmittel:Biokiste schon mal spannend werden kann) Wenn ich ein Konto einmal Abwassergebühr und einmal Schmutzwassergebühr nenne, dann sind das für Ledger zwei komplett verschiedene Konten, die es dann jeweils einzeln aufsummiert, und niemals zusammenführt

Gegen diese sehr aufwändige und fehleranfällige Tipparbeit hat Ledger nun einige Vereinfachungen auf Lager:

Der Kontenrahmen

Natürlich werde ich mich im Laufe der Zeit mal irgendwann bei einem Kontonamen vertippen. Und bevor ich dann Geld auf irgendwelche Konten namens Ausgaben:Atuovresicherung buche und mich wundere, das auf dem echten Konto keine Veränderung passiert, ist es doch besser, wenn Ledger das kontrolliert.

Ledger lässt sich so konfigurieren, das ich ihm einmal sage, welche Konten ich verwenden möchte, und wie der gesamte Kontenrahmen (also alle meine Konten und Unterkonten) aufgebaut ist. Danach kann ich nur noch diese Konten verwenden. Jeder Tippfehler wird gnadenlos angemeckert, und Ledger weigert sich so lange meine Buchungen auszuwerten, bis der Fehler behoben ist. Gott sei Dank sagt er mir sehr genau, wo das Problem liegt

Aliase

Ein Konto mit dem Namen Ausgaben:Haushalt:Lebensmittel:Biokiste kann beim Tippen schon sehr aufhalten, Daher bietet Ledger die Möglichkeit statt dieser Wortmonster kurze Aliasnamen zu vergeben. Ich muss dann z.B. nur noch "Bio" tippen, und Ledger weiss, das ich dieses Konto damit meine.

Die Leerbuchung

Auch bei Beträgen hat man sich schnell mal vertippt, oder verrechnet, welche Summe eine Gegenbuchung haben muss. Wenn die Stadtwerke von mir z.B. Nachzahlungen haben möchte kann ich einfach schreiben

2019-01-02 Stadtwerke
   Gas 12.34
   Wasser  56.78
   Girokonto

Wie man sieht fehlt beim Girokonto der Betrag, und wenn es bei einer Transaktion exakt ein Konto ohne Betrag gibt, dann nimmt Ledger an dieser Stelle einfach genau den Betrag an, der nötig ist, um die anderen Buchungen auszugleichen. In diesem Fall werden also -69.12 auf das Girokonto gebucht (also 69.12 abgebucht)

Das Standardkonto

Die meisten von uns haben genau ein Girokonto, und alle Bankbewegungen laufen über dieses eine Konto. Da kann es selbst wenn man als Alias etwas so kurzes wie "Giro" verwendet, schnell lästig sein, das zu jeder Transaktion immer wieder dazu zu schreiben. Ledger bietet allerdings die Möglichkeit exakt ein Konto zum Standardkonto zu machen, welches danach immer dann angenommen wird, wenn die Transaktion nicht ausgeglichen ist, und das Konto nicht bereits in der Transaktion verwendet wird.

2019-01-02 Stadtwerke
   Gas 12.34
   Wasser  56.78

ist also ein gültiger Buchungssatz, wenn vorher z.B. Girokonto als Standardkonto vereinbart wurde. In diesem Fall wird automatisch das Girokonto als Gegenkonto genommen, und der entsprechende Betrag, wie im Abschnitt Leerbuchung erklärt ermittelt. Auch

2019-01-02 Stadtwerke
   Gas 12.34

ist damit nun eine gültige Buchung, obwohl die Transaktion auf den ersten Blick die Regel verletzt, nach der eine Transaktion aus mindestens 2 Buchungen bestehen muss. Die 2. Buchung geht hierbei auf das vorher festgelegte Standardkonto

Der Ledger Mode

Wie man sieht hat Ledger schon von Hause aus eine Menge Möglichkeiten, die einem die Tipparbeit erleichtern. Für die Emacs Umgebung gibt es nun sogar den Ledger Mode, der einem die Eingabe noch weiter vereinfacht, indem er z.B. passende Buchungsdaten vorschlägt, oder immer wiederkehrende Buchungen schon nach ein paar getippten Buchstaben vorschlägt, oder gleich vollständig einfügt. Daneben bietet er noch recht komfortable Funktionen um Berichte zu erstellen, oder die gebuchten Daten regelmäßig mit der Realität abzugleichen. Der Ledger Mode wird aber mal einen eigenen Beitrag Wert sein.

2019-07-12