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 USDThe 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 USDThe 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 USDAdd 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 USDKeep 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 USDTransfers 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.