Skip to main content
Working Ledger Examples

Working Ledger Examples

Copy five live, validated Beancount ledger patterns for household finances, envelope budgeting, freelance invoicing, rental property, and investment cost basis.

Copy a proven account structure from one of these five live Beancount ledgers, then rename the accounts and replace the fictional amounts with your own. Every embedded ledger is public, versioned in Git, and validated with bean-check.

Everyday personal finance

Use one asset account per bank, one liability per credit card, and expense accounts for the questions you want your reports to answer. The full example also shows payroll, benefits, transfers, balance assertions, and investment holdings.

Copy this structure when you want one set of books for cash, cards, income, and ordinary spending:

option "operating_currency" "USD"
 
2026-01-01 open Assets:Bank:Checking USD
2026-01-01 open Liabilities:CreditCard USD
2026-01-01 open Equity:Opening-Balances USD
2026-01-01 open Expenses:Food:Groceries USD
 
2026-01-01 * "Opening balance"
  Assets:Bank:Checking          3,000.00 USD
  Equity:Opening-Balances      -3,000.00 USD
 
2026-01-18 * "Corner Market" "Weekly groceries"
  Liabilities:CreditCard          -71.90 USD
  Expenses:Food:Groceries          71.90 USD
 
2026-01-25 * "Credit card" "Statement payment"
  Liabilities:CreditCard           71.90 USD
  Assets:Bank:Checking            -71.90 USD

The credit-card account keeps the purchase date separate from the cash-payment date. Add a monthly balance assertion to each real-world account so an import error cannot hide.

Envelope budgeting that rolls over

Model each envelope as an equity subaccount layered over the real bank account. Allocating a paycheck moves value inside equity, while a purchase records both the cash movement and the budget decision.

Copy the Equity:Budget tree and keep the plan separate from the money:

option "operating_currency" "USD"
 
2026-01-01 open Assets:Bank:Checking USD
2026-01-01 open Income:Salary USD
2026-01-01 open Expenses:Groceries USD
2026-01-01 open Equity:Budget:Unallocated USD
2026-01-01 open Equity:Budget:Groceries USD
 
2026-01-05 * "Acme Corp" "January salary"
  Assets:Bank:Checking          4,100.00 USD
  Income:Salary                -4,100.00 USD
 
2026-01-05 * "Budget" "Fund groceries"
  Equity:Budget:Unallocated      -550.00 USD
  Equity:Budget:Groceries         550.00 USD
 
2026-01-08 * "Whole Foods" "Weekly shop"
  Assets:Bank:Checking           -128.44 USD
  Expenses:Groceries              128.44 USD
  Equity:Budget:Groceries        -128.44 USD
  Equity:Budget:Unallocated       128.44 USD

The two pairs in the purchase balance independently. That separation lets you reset or reassign an envelope without changing the reconciled bank balance. For Fava's target-versus-actual display, use the simpler budget directives instead.

Freelancer invoicing and receivables

Record an invoice when you earn the revenue, then clear the receivable when the client pays. A separate receivable account per client makes unpaid and partially paid invoices visible as ordinary balances.

Copy the receivable tree and put the invoice number on both events:

option "operating_currency" "USD"
 
2026-01-01 open Assets:Bank:Business USD
2026-01-01 open Assets:Receivable:Northwind USD
2026-01-01 open Income:Consulting USD
 
2026-01-09 * "Northwind Traders" "January retainer"
  invoice: "2026-001"
  due: 2026-02-08
  Assets:Receivable:Northwind    6,000.00 USD
  Income:Consulting             -6,000.00 USD
 
2026-02-05 * "Northwind Traders" "Payment — invoice 2026-001"
  invoice: "2026-001"
  Assets:Bank:Business           6,000.00 USD
  Assets:Receivable:Northwind   -6,000.00 USD

Add sales tax to a liability, not income, and move estimated-tax cash to a reserve asset before paying it. The live ledger shows both patterns, partial payments, rebilled costs, and a bad-debt write-off.

Rental property and mortgage principal

Treat the property as an asset, the mortgage as a liability, and a tenant's security deposit as money you owe back. Split each mortgage payment among interest, principal, and escrow so the balance sheet and income statement tell different truths.

Copy the property, debt, and operating account groups before adding monthly activity:

option "operating_currency" "USD"
 
1970-01-01 commodity PROP123MAIN
2024-01-01 open Assets:RealEstate:Property PROP123MAIN
2024-01-01 open Assets:Bank:Checking USD
2024-01-01 open Assets:Bank:EscrowImpound USD
2024-01-01 open Liabilities:Mortgage USD
2024-01-01 open Income:RealEstate:Rent USD
2024-01-01 open Expenses:RealEstate:MortgageInterest USD
 
2024-03-15 * "Escrow" "Buy rental property"
  Assets:RealEstate:Property       1 PROP123MAIN {400,000.00 USD}
  Assets:Bank:Checking                       -80,000.00 USD
  Liabilities:Mortgage                      -320,000.00 USD
 
2024-04-01 * "Bank" "Mortgage payment"
  Expenses:RealEstate:MortgageInterest         1,866.67 USD
  Liabilities:Mortgage                           262.39 USD
  Assets:Bank:EscrowImpound                      566.67 USD
  Assets:Bank:Checking                        -2,695.73 USD

Keep land, depreciable building value, capital improvements, accumulated depreciation, and escrow activity distinct. The rental-property guide explains how those balances feed reports.

Crypto lots and cost basis

Give every purchase a cost in braces and identify the same lot when you sell. Beancount then carries acquisition date and basis through wallets, exchanges, and taxable disposals instead of reducing an investment to one blended balance.

Copy the commodity, exchange accounts, and explicit realized-gain posting:

option "operating_currency" "USD"
 
1970-01-01 commodity BTC
2024-01-01 open Assets:Crypto:Coinbase:BTC BTC
2024-01-01 open Assets:Crypto:Coinbase:USD USD
2024-01-01 open Expenses:Crypto:Fees:Trading USD
2024-01-01 open Income:Crypto:CapitalGains:ShortTerm USD
 
2024-02-15 * "Coinbase" "Buy 0.10 BTC"
  Assets:Crypto:Coinbase:BTC     0.10 BTC {43,800.00 USD, 2024-02-15}
  Assets:Crypto:Coinbase:USD   -4,380.00 USD
 
2024-08-20 * "Coinbase" "Sell the February lot"
  Assets:Crypto:Coinbase:BTC    -0.10 BTC {43,800.00 USD, 2024-02-15}
  Assets:Crypto:Coinbase:USD    5,900.00 USD
  Expenses:Crypto:Fees:Trading      8.85 USD
  Assets:Crypto:Coinbase:USD       -8.85 USD
  Income:Crypto:CapitalGains:ShortTerm -1,520.00 USD

Transfers between your own wallets preserve the lot instead of creating income. The live ledger continues through staking, mining, decentralized finance, and NFTs; the inventory guide explains booking methods and lot reduction.