Use Fava for Reporting

Fava provides a web interface for browsing and querying Beancount data. Install it with pip:

pip install fava

Start the server:

fava ledger.beancount

This opens a web interface (default: http://localhost:5000) with several views:

  • Income Statement: Shows revenue and expenses for a selected period — the same as an income statement in traditional accounting.
  • Balance Sheet: Shows assets, liabilities, and equity at a point in time — equivalent to the balance sheet.
  • Trial Balance: Lists all accounts with their balances — the trial balance that confirms debits equal credits.
  • Journal: Chronological list of all transactions, filterable by account, payee, or tag.
  • Account pages: Click any account to see its transaction history and balance over time.
  • Query: Write BQL (Beancount Query Language) queries — a SQL-like language for custom reports:
    SELECT account, sum(position) WHERE account ~ "Expenses" GROUP BY account ORDER BY sum(position) DESC

Fava reloads the Beancount file on each page load, so edits to the text file appear immediately in the web interface. For day-to-day use, keep Fava running in a terminal while editing the Beancount file in a text editor — the workflow is edit, save, refresh browser.