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
🏦 You make a loan payment
Let’s say you pay $1,000, with $200 in interest and $800 toward principal:
2024-06-10 * "Loan repayment"
Liabilities:Loan -800.00 USD
Expenses:LoanInterest 200.00 USD
Assets:Bank:Checking -1,000.00 USD
🔒 Closing Entries at Year-End
To “close the books,” you typically transfer all Income
and Expenses
accounts into Equity
.
2024-12-31 close Income:*
2024-12-31 close Expenses:*
Or, manually:
2024-12-31 * "Close books"
Equity:RetainedEarnings 45,000.00 USD
Income:Consulting -45,000.00 USD
🛠️ Adjusting Entries
If you're doing accrual accounting, you’ll want to add adjusting entries—for prepaid expenses, accrued revenue, etc.
Example: $100 monthly software subscription paid annually
2024-01-01 * "Annual software payment"
Assets:Prepaid 1,200.00 USD
Assets:Bank:Checking -1,200.00 USD
2024-01-31 * "Monthly amortization"
Expenses:Software 100.00 USD
Assets:Prepaid -100.00 USD
Automate with scripts or available Beancount tools.
🧰 Beancount: Lightweight, Auditable, Powerful
Beancount isn't just an accounting tool—it's an idea: transparent, plaintext financial truth. It's a modern ledgering system that's:
- Easy to version-control (Git!)
- Fully portable (no proprietary database)
- Great for devs, freelancers, and small businesses
Ready to Start?
Start your Beancount file with:
option "title" "My Business Ledger"
option "operating_currency" "USD"
2024-01-01 open Assets:Bank:Checking USD
2024-01-01 open Income:Sales USD
2024-01-01 open Expenses:OfficeSupplies USD
2024-01-01 open Equity:OpeningBalances USD
2024-01-01 * "Initial balance"
Assets:Bank:Checking 10,000.00 USD
Equity:OpeningBalances
Then load your file with your preferred visualization tool to see the magic.
Want an easier start? Try templates, importers, or community tools like bean-extract
.
With Beancount, your books are finally your own—simple, scriptable, and audit-proof.
Let me know if you’d like a downloadable PDF version or small business–specific variations of the examples.