Beancount Journal Entries: How-To, Definitions, and Examples
Every financial transaction your business makes needs to be recorded—and in the world of plain-text accounting, this starts with journal entries. If you're using Beancount, understanding journal entries is key to building accurate, auditable, and clean financial records.
This guide will walk you through:
- What a journal entry is
- Why journal entries matter
- How to write them in Beancount syntax
- How to use them effectively
- Examples of real-world transactions (client payments, purchases, loans, etc.)
🧾 What is a Journal Entry in Beancount?
In Beancount, a journal entry is a dated transaction written in a human-readable plain-text format. Each entry follows the principles of double-entry accounting—you record where money comes from (credit) and where it goes (debit), ensuring your books always balance.
Example:
2024-06-01 * "Client payment for invoice #123"
Assets:Bank:Checking 600.00 USD
Income:Sales
- The
*
indicates a cleared transaction. - The description shows context for the entry.
Assets:Bank:Checking
is debited.Income:Sales
is credited (value implied).
Every entry lives inside a .beancount
file—just a text file you can version, back up, and even edit in Vim or VSCode.
📒 Why Journal Entries Matter
Journal entries are the atomic unit of your ledger.
They:
- Feed into your General Ledger and Account Balances
- Drive all reports: Income Statements, Balance Sheets, Cash Flows
- Let you trace every dollar, line by line, to its source
With the right tools, you'll see these transactions rendered in a UI—categorized, searchable, and filterable. But it all starts with that simple plain-text entry.
📚 How Double-Entry Works in Beancount
Beancount enforces double-entry accounting. Every transaction must be balanced: total debits = total credits.
Quick rule:
- Debit assets and expenses (you gain cash or incur a cost)
- Credit income and liabilities (you earn money or take on debt)
Example – Office Supplies Purchase:
2024-06-02 * "Bought printer ink"
Expenses:OfficeSupplies 100.00 USD
Assets:Bank:Checking
🧠 Visualizing Entries
Once you save, on the left side navigation of https://beancount.io/ledger/0/income_statement/ you will see ...
- Journal View: See transactions with search, tags, and filtering
- Account Filter Dropdown: See running balances and per-account entries
- Income Statement: Sum of your
Income:*
andExpenses:*
accounts - Balance Sheet: Your assets minus liabilities
Fava helps turn your raw Beancount entries into actionable reports—with zero database setup.
💡 Common Journal Entry Examples
✅ You get paid by a client
2024-06-05 * "Payment for invoice #456"
Assets:Bank:Checking 1,200.00 USD
Income:Consulting
Optional: If you use Accounts Receivable:
2024-05-20 * "Invoice #456 sent"
Assets:AccountsReceivable 1,200.00 USD
Income:Consulting
2024-06-05 * "Payment for invoice #456"
Assets:Bank:Checking 1,200.00 USD
Assets:AccountsReceivable -1,200.00 USD
🖨️ You buy office supplies
2024-06-07 * "Staples run"
Expenses:OfficeSupplies 85.00 USD
Assets:Bank:Checking