Skip to main content

45 posts tagged with "accounting"

View All Tags

Understanding Amortization in Beancount

· 2 min read
Mike Thrift
Mike Thrift
Marketing Manager

Amortization spreads out payments to many installments over time. In beancount.io, you can use the plugin fava.plugins.amortize_over to achieve so.

2021-01-09-amortize

Without amortization, if you want to insure your car for 6 months with costs of $600. You have to record this as a one-time expense for a particular date.

2017-06-01 open Assets:Bank:Checking
2017-06-01 open Assets:Prepaid-Expenses
2017-06-01 open Expenses:Insurance:Auto


2017-06-01 * "Pay car insurance"
Assets:Bank:Checking -600.00 USD
Assets:Prepaid-Expenses

However, with amortization, you could allocate the expense over six months by putting plugin "fava.plugins.amortize_over" to the top of the file and using amortize_months: 6 for the transaction

plugin "fava.plugins.amortize_over"

2020-06-01 open Assets:Bank:Checking
2020-06-01 open Assets:Prepaid-Expenses
2020-06-01 open Expenses:Insurance:Auto

2020-06-01 * "Amortize car insurance over six months"
amortize_months: 6
Assets:Prepaid-Expenses -600.00 USD
Expenses:Insurance:Auto

And then in Journal, you will see the transaction is split into 6 postings.

2020-11-01 * Amortize car insurance over six months (6/6) am
2020-10-01 * Amortize car insurance over six months (5/6) am
2020-09-01 * Amortize car insurance over six months (4/6) am
2020-08-01 * Amortize car insurance over six months (3/6) am
2020-07-01 * Amortize car insurance over six months (2/6) am
2020-06-01 * Amortize car insurance over six months (1/6) am

Amortization transaction screenshot

Introducing the Beancount Mobile Apps for iOS and Android

· 2 min read
Mike Thrift
Mike Thrift
Marketing Manager

We're excited to announce a major milestone in Beancount's evolution: the launch of our dedicated mobile apps for both iOS and Android platforms! This release directly addresses one of the most frequent requests from our community – the ability to manage your ledger efficiently on mobile devices.

Beancount iOS App

Key Features

  • Quick Transaction Entry: Seamlessly add new transactions on the go
  • Mobile Financial Reports: Access your financial insights anywhere, anytime
  • Direct Ledger Editing: Full access to your ledger file through an optimized web view
  • Cross-Platform Sync: Keep your financial data consistent across all your devices

2020-08-19-beancount-mobile-app

Community-Driven Development

This release marks just the beginning of our mobile journey. We're committed to evolving these apps based on your needs and feedback. Join our vibrant community on Telegram at https://t.me/beancount to discuss Beancount, share your experience, and help shape future features.

Our Vision

At Beancount, our mission is to empower everyone to achieve better financial control and understanding. These mobile apps represent a significant step toward that goal, with many more exciting features and tools on our roadmap.

download from App Storedownload from Play Store

Net Income 101 — and How to Track It in Beancount

· 5 min read
Mike Thrift
Mike Thrift
Marketing Manager

Of all the numbers that describe a business, one stands above the rest: net income. It’s the ultimate measure of profitability, the famous "bottom line." But what does it really mean, and how can you track it with precision using a plain-text accounting system like Beancount?

Let's break it down.

2020-03-12-net-income-101-how-to-track-it-in-beancount

What Net Income Really Means

At its core, net income is the money left over after you’ve paid for absolutely everything required to run your business. This includes the cost of goods sold (COGS), all operating expenses, interest on debt, and taxes.

It’s the clearest single indicator of a company’s financial health. It’s a critical figure for everyone:

  • Lenders look at it to gauge your ability to repay loans.
  • Investors see it as the source of potential dividends or the capital available for growth.
  • Founders rely on it to understand their financial runway and make strategic reinvestment plans.

A positive net income means you’re profitable. A negative one means you’re losing money. It’s that simple.

The Core Formula (Pick the Detail Level You Need)

You can calculate net income with varying degrees of granularity. The choice depends on how detailed an analysis you need.

  • Full Formula: Revenue – COGS – Operating Expenses – Interest – Taxes = Net Income
  • Standard Formula: Revenue – COGS – Expenses = Net Income
  • Quick & Dirty Formula: Total Revenues – Total Expenses = Net Income

A Quick Tip on Costs: What's the difference between COGS and operating expenses? COGS (Cost of Goods Sold) covers direct costs tied to producing your goods or services (e.g., raw materials, direct labor). Operating Expenses cover everything else that keeps the lights on—salaries, rent, software subscriptions, insurance, etc.

A Mini Example

Let's make this tangible. Imagine a small coffee roasting business had the following results last month.

ItemAmountExample Ledger Account
Sales Revenue$60,000Income:Sales
COGS (Green coffee beans)$20,000Expenses:COGS
Operating Expenses$18,000Expenses:Ops:*
Interest (On equipment loan)$1,000Expenses:Interest
Taxes$1,000Expenses:Taxes

Using the full formula, the calculation is straightforward:

Net;Income=Net;Income = 60,000 - 20,00020,000 - 18,000 - 1,0001,000 - 1,000 = 20,00020,000

The business generated a true profit of $20,000 for the month.

How to Capture It in Beancount

Beancount’s structure is perfect for this. By organizing your accounts logically, calculating net income becomes an automatic byproduct of good bookkeeping.

  • Tag all revenue under a parent Income account, like Income:Sales or Income:Services.
  • Split your expenses to distinguish between direct and indirect costs. Use Expenses:COGS for direct costs and sub-accounts like Expenses:Ops:Salaries or Expenses:Ops:Software for everything else.
  • Post interest and taxes to their own accounts (Expenses:Interest, Expenses:Taxes). This makes future analysis, especially for tax preparation, much simpler.
  • Balance your books regularly. The fundamental accounting equation, Assets = Liabilities + Equity, must always hold true.

At the end of a period (e.g., a month), you can use balance assertions to confirm the state of your accounts. These entries don't move money; they declare what the balance should be, and bean-check will report an error if it isn't.

; 2025-07-31 Coffee Roaster Enterprises — July close
2025-07-31 balance Assets:Bank:Operating 42000.00 USD
2025-07-31 balance Expenses:COGS 20000.00 USD
2025-07-31 balance Expenses:Ops 18000.00 USD
2025-07-31 balance Expenses:Interest 1000.00 USD
2025-07-31 balance Expenses:Taxes 1000.00 USD
2025-07-31 balance Income:Sales -60000.00 USD

One-Line Net Income Query

This is where the magic happens. With a well-structured ledger, you can calculate your net income for any period with a single command.

bean-query books.beancount \
"SELECT period, sum(number) WHERE account =~ '^(Income|Expenses)' \
AND year = 2025 GROUP BY month"

This query sums up all values in your Income and Expenses accounts for 2025 and groups them by month. In Beancount, income is represented by negative numbers and expenses by positive ones, so the result will be the negative of your net income.

Even better, you don't even have to run this query manually. Fava, the web interface for Beancount, will plot this automatically for you in its Reports → Income Statement view.

Fast Insights You Can Automate

Because your ledger is just a text file, you can build powerful automated workflows around it.

  • Monthly E-mail Digest: Set up a cron job to run bean-report books.beancount income_statement > net-income.txt and then email the resulting text file to yourself on the first of every month.
  • Profitability Alert: Use a Git pre-commit hook that runs a query to check month-to-date profitability. You can program it to refuse the commit if net income is negative, forcing you to acknowledge a losing month.
  • Scenario Modeling: Want to stress-test your business? Just copy books.beancount to scenarios/recession.bean, reduce your Income entries by 20%, and rerun your net income query to see the impact instantly.

Key Takeaways

  • Net income is your true bottom line. The goal is to keep it positive and understand its trend over time.
  • Beancount makes the underlying math explicit, searchable, and version-controlled. There are no hidden formulas.
  • With a disciplined account structure and a single query, you’ll always know whether your business is truly making money.

Introduction to Beancount.io

· 5 min read
Mike Thrift
Mike Thrift
Marketing Manager

Why Modern Bookkeeping Matters

Still managing your investments with spreadsheets? While spreadsheets are versatile, they can become cumbersome and error-prone as your investment portfolio grows. Enter Beancount.io – a sophisticated yet user-friendly investment tracking platform designed specifically for managing stock and cryptocurrency portfolios. Built with engineers and financial minimalists in mind, Beancount.io combines powerful features with an intuitive interface to streamline your investment tracking experience.

2019-09-07-introduction-to-beancount

Expenses

Income Statement

Balance Sheet

Double-entry Bookkeeping: The Foundation of Accuracy

Beancount.io is built on the principles of double-entry accounting – a time-tested methodology used by financial institutions worldwide. This system ensures mathematical accuracy through a simple yet powerful concept: every financial transaction must balance perfectly.

In double-entry bookkeeping, each transaction requires at least two entries – a debit (+) and a credit (-) – across different accounts. This built-in verification system makes it virtually impossible to record unbalanced transactions, ensuring your financial records remain accurate and reliable.

1970-01-01 open Income:BeancountCorp
1970-01-01 open Assets:Cash
1970-01-01 open Expenses:Food
1970-01-01 open Assets:Receivables:Alice
1970-01-01 open Assets:Receivables:Bob
1970-01-01 open Assets:Receivables:Charlie
1970-01-01 open Liabilities:CreditCard

2019-05-31 * "BeancountCorp" "Salary of May 15th to May 31st"
Income:BeancountCorp -888 USD
Assets:Cash 888 USD

2019-07-12 * "Popeyes chicken sandwiches" "dinner with Alice, Bob, and Charlie"
Expenses:Food 20 USD
Assets:Receivables:Alice 20 USD
Assets:Receivables:Bob 20 USD
Assets:Receivables:Charlie 20 USD
Liabilities:CreditCard -80 USD

As you can see in the two examples above, every transaction must fulfill the accounting equation.

Assets = Liabilities + Equity(aka Net Assets)

We used the Beancount syntax by Martin Blais and the web project Fava by Jakob Schnitzer to build this website. And it will alert you if any transaction has any legs not summing to zero.

Error Alert

Now you understand how we enforce the correctness of the ledger. But you may ask what are those "accounts"?

Understanding Accounts: The Water Bucket Analogy

Think of your financial accounts as a system of interconnected water buckets, where money flows like water between them. This analogy makes double-entry bookkeeping intuitive: when you transfer money from one account to another, it's like pouring water from one bucket to another – the total amount of water (money) in the system remains constant.

Beancount.io introduces five kinds of accounts.

  1. Income — Its amount is always negative or in debit. This is because you are making money, and then the money is debiting from "Income" account and crediting to your "Assets."
  2. Expenses — Its amount is always positive or in credit. This is because you are spending money, and the money is flowing from the "Assets" or "Liabilities" to the "Expenses."
  3. Liabilities — Its amount is positive or zero. Your credit card liabilities are a good example, which rises and falls in cycles.
  4. Assets — Its amount is positive or zero. Your cash or houses are always worth some prices.
  5. Equity — Your net assets. The system will calculate automatically for you. Equity = Assets - Liabilities and it reflects how wealthy you are.

Now you can open your customized accounts with those keywords above:

1970-01-01 open Assets:Cash
1970-01-01 open Assets:Stock:Robinhood
1970-01-01 open Assets:Crypto:Coinbase
1970-01-01 open Expenses:Transportation:Taxi
1970-01-01 open Equity:OpeningBalance

Advanced Investment Tracking with Commodities

Beancount.io excels at tracking diverse investments, from stocks to cryptocurrencies. Let's explore how it handles complex investment scenarios. For example, here's how you would record purchasing 10 Bitcoins at $100 each in 2014:

2014-08-08 * "Buy 10 Bitcoin"
Assets:Trade:Cash -1000.00 USD
Assets:Trade:Positions 10 BTC {100.00 USD}

And then three years later, you sell them (originally with costs of $100 per unit annotated with {100.00 USD}) at the price of $10,000 per unit annotated with @ 10,000.00 USD.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @ 10,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Or the same transaction with @@ 20,000.00 USD means that at the price of $20,000 in total.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @@ 20,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

The sum of all legs of the transaction, including -2 BTC {100.00 USD}, are still, as always, zero.

The costs {100.00 USD} tag is important because you might have bought the same commodity at different costs.

100 BTC {10.00 USD, 2012-08-08}
10 BTC {100.00 USD, 2014-08-08}

If you want to simplify the process, you can set up the account at the beginning with FIFO or LIFO. FIFO stands for first in, first out, while LIFO stands for last in, first out. In the US, IRS uses FIFO to calculate your PnL and tax accordingly.

1970-01-01 open Assets:Trade:Positions "FIFO"

And then when you sell it in shorthand like -2 BTC {}, beancount will apply FIFO strategy automatically and sell the oldest commodity.

Getting Started with Beancount.io

Beancount.io is a modern cloud-based financial management platform that transforms your text-based transaction records into comprehensive financial statements, including income statements, balance sheets, and trial balances. By combining the reliability of plain text files with powerful visualization tools, Beancount.io helps you maintain precise control over your financial life while gaining valuable insights into your investment performance.

Start your financial journey with Beancount.io - Free during our promotional period!

Bookkeeping Basics with Beancount: A Plain-Text Path to Clean Books

· 7 min read
Mike Thrift
Mike Thrift
Marketing Manager

You can’t steer a business if you don’t know where the money goes. Accurate books turn guesswork into insight. (Investopedia)

Every business owner, freelancer, or startup founder eventually faces the same reality: financial chaos is a growth killer. Without a clear picture of your cash flow, you're flying blind. But what if you could manage your finances with the same precision and control you apply to your code? Enter Beancount, a powerful, open-source accounting system that runs on plain-text files.

2019-03-24-bookkeeping-basics

This guide will walk you through the fundamentals of bookkeeping and show you how to build a robust, lightweight, and transparent financial workflow using Beancount.

What Is Bookkeeping?

At its core, bookkeeping is the systematic and continuous recording of every financial transaction a business makes. It’s the daily discipline of tracking revenue, expenses, assets (what you own), and liabilities (what you owe).

In the world of Beancount, these records aren't locked away in proprietary software. They live in simple, human-readable plain-text files. This approach allows you to version-control your financial history with tools like Git, just as you would with a software project. Every entry is governed by the double-entry balancing rule, an elegant system that automatically checks your work and ensures your books are always correct. (beancount)

Why It Matters

Meticulous bookkeeping isn't just about administrative tidiness; it's a strategic advantage.

  • Tax confidence: When tax season rolls around, clean records are your best friend. The IRS requires clear documentation for income and deductions. A well-maintained ledger means you can file with confidence and dramatically shorten any potential audits. (IRS)
  • Sharper decisions: Are your prices high enough? Is a specific service contract actually profitable? Are subscription costs spiraling out of control? Financial statements like the income statement and balance sheet reveal pricing leaks, runaway costs, and cash-flow potholes, giving managers and investors the data they need to make smart choices. (Investopedia)
  • Easier funding: Lenders and investors don't make decisions based on gut feelings. Before wiring funds, they will ask for financial statements. Good books allow you to generate a balance sheet or income statement in seconds, demonstrating professionalism and financial health. (Investopedia)
  • Fraud and error alerts: Routine reconciliation of your books against bank statements is your first line of defense against mistakes. This simple habit helps you catch duplicate charges, bank errors, or fraudulent activity quickly, before they become significant problems. (IRS)

A Seven-Step Plain-Text Blueprint

Ready to get started? Here’s how to build your Beancount-powered bookkeeping system from the ground up.

1. Separate Business and Personal Accounts

This is the non-negotiable first step. Open a dedicated business checking account and, if needed, a business credit card. Commingling funds creates a nightmare for accounting and can blur the liability lines between you and your business. Clean separation is essential for accurate deductions and legal protection. (Small Business Administration)

In Beancount, you declare the existence of these accounts with an open directive:

; Opening balances for your accounts
2025-07-22 open Assets:Bank:Business USD
2025-07-22 open Assets:Bank:Personal USD

2. Pick a Bookkeeping System

Beancount uses the double-entry method, the gold standard of accounting for centuries. The principle is simple: every transaction affects at least two accounts. For every debit from one account, there must be a corresponding credit to another. The magic of this system is that the sum of all your accounts must always balance to zero. Beancount enforces this rule automatically, meaning a typo or logical error will immediately raise a flag. You literally can't have unbalanced books. (beancount)

3. Decide on an Accounting Method

You have two main choices here:

  • Cash basis: You record income when you receive the money and expenses when you pay them. It’s simpler and reflects your cash flow directly.
  • Accrual basis: You record income when you earn it (e.g., when an invoice is sent) and expenses when you incur them (e.g., when you receive a bill). This method gives a truer picture of a company's financial health and performance, especially for growing firms. (Investopedia)

Here is an example of an accrual transaction in Beancount. You book the income when the invoice is sent, moving the value into Assets:AccountsReceivable. When the client pays, you move the cash from AccountsReceivable to your bank account.

; Accrual example: invoice issued, payment later
2025-07-22 * "Design invoice #101"
Assets:AccountsReceivable 3000.00 USD
Income:Design

2025-08-15 * "Client pays invoice #101"
Assets:Bank:Business 3000.00 USD
Assets:AccountsReceivable

4. Assemble Your Tool Stack

The beauty of Beancount is its minimalist, modular nature. Your core stack includes:

  • Editor + Git: Your favorite text editor for journaling transactions and Git for version control, giving you a complete, auditable history of every change.
  • bean-report / bean-balance / Fava: Command-line tools like bean-report and the stunning web interface Fava give you instant financial statements, dashboards, and powerful filtering capabilities.
  • Importers: A rich ecosystem of community-built importers can connect to your bank feeds via CSV, Plaid, or APIs for services like Stripe and PayPal, automating much of the data entry.

5. Categorize Every Transaction

A well-organized "chart of accounts" is the backbone of insightful reporting. Define categories that make sense for your business, using hierarchical accounts for granularity. Then, as you record transactions, categorize them meticulously.

2025-07-30 * "AWS monthly bill"
Expenses:Hosting:AWS 124.50 USD
Assets:Bank:Business
tag: "ops"

In this example, the expense is clearly filed under Expenses:Hosting:AWS. The use of tag: "ops" also allows for cross-cutting reports, like viewing all operational expenses regardless of their primary category. (IRS)

6. Store Source Documents Securely

The IRS happily accepts digital copies of receipts and invoices. Scan paper receipts or forward email invoices to a dedicated folder in cloud storage (like Google Drive or Dropbox). Then, link to the file directly in your Beancount entry using metadata. This creates an airtight, self-contained record.

; Receipt image linked as metadata
2025-07-18 * "Team lunch"
Expenses:Meals 85.10 USD
Assets:Bank:Business
receipt: "receipts/2025-07-18-team-lunch.jpg"

7. Make Bookkeeping a Habit

Consistency is key. Procrastination turns bookkeeping into a stressful, time-consuming chore. Set aside a recurring time block—a weekly or monthly “Bean-day”—to import transactions, reconcile accounts, and review your financial reports. This simple routine transforms bookkeeping from a quarterly scramble into a quick, empowering business health check. (IRS)

DIY vs Professional Help

  • DIY: For freelancers or small businesses with predictable transaction volume, a DIY approach with Beancount is incredibly effective. It's still wise to have a brief, one-time consultation with a CPA to validate your chart of accounts and ensure you're on the right track.
  • Professional review: As your business scales, transactions become more complex, or compliance risk rises, bringing in a professional bookkeeper or accountant for periodic reviews is invaluable. You can continue using Beancount as your primary source of truth and simply export the reports they need.

Quick-Start Checklist

  • Open separate business bank accounts.
  • Clone the Beancount starter repository and define your accounts in accounts.bean.
  • Choose cash or accrual and stick to it.
  • Set up importers to automate data entry from your bank (CSV), Stripe, PayPal, etc.
  • Tag and write clear narrations for every transaction.
  • Reconcile your ledger against bank statements weekly or monthly.
  • Generate monthly income, balance, and cash-flow reports using Fava or bean-report.
  • Back up your .bean files regularly (Git + off-site storage).

Further Reading

Ready to start? Install Beancount, commit your first entry, and trade spreadsheet fog for plain-text clarity. Happy bean-keeping!