Skip to main content

Beancount Journal Entries: How-To, Definitions, and Examples

· 4 min read
Mike Thrift
Mike Thrift
Marketing Manager

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:

2025-06-27-journal-entries

  • 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:* and Expenses:* 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.