Ledger ist ein leistungsstarkes Befehlszeilen-Tool für die doppelte Buchführung im Klartextformat. Durch die Erfassung Ihrer Finanzen in menschenlesbaren Textdateien ermöglicht Ledger die Berechnung von Salden, die Erstellung von Registern, die Budgetverfolgung und detaillierte Finanzberichte.
Grundkonzepte & Erste Schritte
Die Grundgleichung der doppelten Buchführung
In Ledger besteht jede Transaktion aus zwei oder mehr Buchungen, deren Summe strikt zu Null ausgleichen muss:
$$\text{Assets} + \text{Expenses} = \text{Liabilities} + \text{Equity} + \text{Income}$$
Assets:Checking -$600.00 ; Asset decreases (credit)
Expenses:Rent $600.00 ; Expense increases (debit)
---------------------------------
Nettosaldo = $0.00
Übersicht der Kernbefehle
| Befehl | Vollständige Form | Beschreibung |
|---|---|---|
ledger bal |
ledger balance |
Berechnet und zeigt aktuelle Salden aller Konten an |
ledger reg |
ledger register |
Listet Transaktionsbuchungen chronologisch mit laufendem Saldo auf |
ledger print |
ledger print |
Formatiert und gibt Journal-Einträge aus |
ledger csv |
ledger csv |
Exportiert gefilterte Transaktionen als Standard-CSV |
ledger payees |
ledger payees |
Listet alle eindeutigen Zahlungsempfänger im Journal auf |
ledger accounts |
ledger accounts |
Listet alle definierten Kontonamen und Hierarchien auf |
Journal-Syntax-Spezifikation
Grundlegende Transaktionsstruktur
2024/01/03 * (CODE#001) Landlord John ; tag:rent
Expenses:Rent:Apartment $600.00
Assets:Checking:MainBank
- Aufbau der Kopfzeile::
2024/01/03 * (CODE#001) Landlord John ; tag:rent
^ ^ ^ ^ ^
Date State Code/Check# Payee/Description Comment & Tags
- Automatische Betragsermittlung: Ledger kann den Betrag einer Buchung automatisch ergänzen, damit die Buchung ausgeglichen ist.
Transaktions-Status-Flags
| Flag | Status | Beschreibung & Typische Verwendung |
|---|---|---|
| (None) | Ungeklärt | Neue Transaktionen, die noch nicht mit Kontoauszügen abgeglichen wurden |
! |
Ausstehend | Ausstehende Buchungen, die noch nicht abgerechnet sind (z. B. Kreditkartenreservierungen) |
* |
Abgeglichen | Vollständig abgeglichene und verbuchte Transaktionen |
Hilfsdaten (Auxiliary Dates)
Mit dem Gleichheitszeichen kann das Buchungsdatum vom tatsächlichen Wertstellungsdatum getrennt werden:
; Format: EventDate=SettlementDate
2024/01/01=2024/01/15 Consulting Client A
Assets:AccountsReceivable $1,000.00
Income:Consulting
Saldenbehauptungen & Zuweisungen
- Saldenbehauptung (= $VALUE): Prüft, ob der Gesamtsaldo nach dieser Buchung dem Wert entspricht.
- Saldenzuweisung (= $VALUE): Berechnet die Differenz, um das Konto auf den angegebenen Wert zu bringen.
; 1. Balance Assertion
2024/01/01 * Restaurant
Expenses:Food:Dinner $20.00
Assets:Cash -$20.00 = $500.00
; 2. Balance Assignment
2024/01/01 * Opening Balance
Assets:Cash = $500.00
Equity:OpeningBalances
Account Declarations & Validation
account Expenses:Food
note Dining and grocery expenses
alias food
payee ^(KFC|McDonalds|Starbucks)$
check commodity == "$"
assert commodity == "$"
default
account Assets:Cash
alias cash
Commodities & Currencies
; 1. Per-unit cost (@ symbol)
2024/05/31 * Farmers Market
Expenses:Food:Apples 10 APPLE @ $1.50
Assets:Checking -$15.00
; 2. Total cost (@@ symbol)
2024/06/01 * Brokerage
Assets:Investments:AAPL 5 AAPL @@ $950.00
Assets:Checking -$950.00
; 3. Explicit currency price history
P 2024/06/01 00:00:00 EUR $1.0850
Directives
; Global default currency
D $1,000.00
; Set default year
Y2024
Including Sub-Journals
include accounts.journal
include 2023.journal
include 2024.journal
account Business
include company_expenses.journal
end
Budgeting
~ Monthly
Expenses:Rent $600.00
Expenses:Food $400.00
Expenses:Utilities $100.00
Expenses $100.00
Assets
~ Yearly
Expenses:Insurance $1,200.00
Assets
ledger bal --budget Expensesledger bal --unbudgeted Expenses
Periodenausdrücke
Ledger bietet zeitliche Filterung in natürlicher Sprache über die Option -p oder --period.
Syntax Structure
[INTERVAL] [BEGIN] [END]
Intervalle
| Intervall | Bedeutung |
|---|---|
every day / daily |
Daily |
every week / weekly |
Weekly |
biweekly |
Every two weeks |
every month / monthly |
Monthly |
every quarter / quarterly |
Quarterly |
every year / yearly |
Yearly |
every N days/weeks/months |
Custom interval |
Period Filtering Examples
ledger reg -p "since last month"
ledger reg Expenses -p "every month from 2024 to 2024/12/31" -M
ledger bal -p "from 2024/01/01 until this month"
ledger bal Expenses:Food -p "last quarter"
Abfrageausdrücke & Filterung
| Syntax | Ziel | Beispiel | Beschreibung |
|---|---|---|---|
Account |
Account name | ledger bal Assets |
Substring/regex match |
^Account |
Root account | ledger bal ^Expenses |
Accounts starting with Expenses |
@Payee |
Payee name | ledger reg @Starbucks |
Match payee field |
%Tag |
Tag presence | ledger reg %reimburse |
Match tagged transactions |
%Tag=Value |
Tag value | ledger reg %project=alpha |
Match tag key-value pairs |
=Note |
Memo note | ledger reg =taxi |
Match memo text |
#Code |
Transaction code | ledger reg #1042 |
Match check or order number |
Boolesche Logik
ledger reg Expenses:Food and @Starbucks and not dining
ledger bal Rent or Transportation
ledger bal Expenses and not \( Drinks or Food \)
Häufige Filter-Optionen
| Flag | Option | Beschreibung |
|---|---|---|
-b DATE |
--begin DATE |
Filter transactions on or after date |
-e DATE |
--end DATE |
Filter transactions before date |
-C |
--cleared |
Only cleared transactions (*) |
-U |
--uncleared |
Only uncleared transactions |
--pending |
--pending |
Only pending transactions (!) |
-R |
--real |
Exclude virtual postings |
-r |
--related |
Show the offsetting balancing postings |
Berichte & Datenexport
-s, --subtotal # Calculate subtotals for grouped postings
-n, --collapse # Collapse multi-line postings into one line
--flat # Render account tree as a flat list
--tail N # Limit output to last N lines
--invert # Invert numerical signs (display expenses as positive)
-X CUR, --exchange CUR # Convert foreign holdings to specified currency at latest rate
# Export all entries to CSV
ledger csv > report.csv
# Export this month's dining expenses
ledger csv Expenses:Food -p "this month"
Praktische Beispiele
# Current assets vs liabilities
ledger bal ^Assets ^Liabilities
# Net revenue this month with positive expenses
ledger bal ^Expenses ^Income -p "this month" --invert
# Top 10 largest expenses
ledger reg Expenses -S amount --tail 10
# Monthly average daily expenses
ledger reg Expenses -M -n --average