Skip to main content

Budget Tracking: Set a Number, Watch Your Spending

· 5 min read
Mike Thrift
Mike Thrift
Marketing Manager

Most accounting tools tell you what you spent. Fewer help you decide what you should spend. And almost none let you track that target alongside your actual books in a transparent, version-controlled plain-text format.

Budget Tracking in Beancount.io closes that gap.

Budget Tracking for Beancount.io

What it does

Budget Tracking lets you set spending limits for any expense account in your ledger — monthly groceries, quarterly software subscriptions, yearly travel — and see a visual comparison of your budget against actual spending over time. All budget data is stored as standard Beancount custom directives in your ledger file, so it's version-controlled and fully portable.

How it works

1. Add a budget

Click Add Budget and fill in three things: the account you want to track (e.g. Expenses:Food:Groceries), the interval (daily, weekly, monthly, quarterly, or yearly), and the target amount with currency.

The budget is written to your ledger as a standard Beancount directive:

2026-03-01 custom "budget" "Expenses:Food:Groceries" "monthly" 500.00 USD

It lives in your ledger file alongside your transactions — no separate database, no proprietary format.

2. See spending vs. budget at a glance

Each budget account gets a chart card showing bar columns for actual spending alongside a dashed budget line. Hover any bar to see the exact amount for that period. When spending approaches or exceeds the budget line, it's immediately visible.

The chart automatically uses the correct interval grouping — a monthly budget shows monthly bars; a weekly budget shows weekly bars.

3. Revise budgets without losing history

Circumstances change. When your grocery budget needs to increase, you add a new entry with a new date — the old entry stays in place. The chart reflects each budget revision as a stepped line, so you can see what the target was at any point in time.

The history table below each chart shows every budget entry with its date and amount, giving you a full audit trail of how your targets have evolved.

4. Remove entries you no longer need

Each history row has a delete button. Removing a budget entry revises the ledger file directly and updates the chart immediately.

Why we built it this way

Budgets belong in your ledger. Storing budgets as custom directives keeps everything in one place. Your budget history is version-controlled alongside your transactions in Gitea, which means you can diff, revert, or audit budget changes the same way you would any other ledger entry.

Intervals match how you actually budget. A monthly cap on dining out is different from a yearly cap on conferences. You can set both, and each is charted at the right granularity.

Historical budgets are preserved. Rather than overwriting a budget when you revise it, each change is a new dated entry. The chart renders these as a stepped line, so you can see that you raised your grocery budget in February and judge whether it was the right call.

No sync required. Because budgets are stored in your ledger file, they sync automatically through Gitea — the same Git server that version-controls all your accounting data. There's nothing extra to configure.

Who it's useful for

  • Anyone with recurring expense categories who wants to know if they're on track before the month ends, not after
  • Freelancers and contractors managing irregular income who want hard caps on variable spending
  • Households tracking shared expenses across multiple categories with different cycle lengths
  • People migrating from tools like YNAB or Mint who want budget-style guardrails without leaving plain-text accounting

Get started

Budget Tracking is available now for all Beancount.io users.

  1. Log in to your ledger.
  2. Navigate to Budget in the sidebar.
  3. Click Add Budget, pick an account, interval, and amount.

Set your first budget


FAQ

How are budgets stored? As standard Beancount custom "budget" directives in your ledger file. They're plain text, version-controlled, and fully portable — you can open them in any text editor.

What intervals are supported? Daily, weekly, monthly, quarterly, and yearly.

Can I track budgets in currencies other than USD? Yes. When adding a budget, you select both the amount and the currency from your ledger's existing currencies.

What happens when I update a budget? A new dated entry is added to your ledger. The old entry is preserved. The chart shows both as a stepped budget line so you have a complete history of your targets.

Can I track income targets, or only expenses? The account picker defaults to Expenses accounts, which is the common case. Any account in your ledger can be used, but budget comparisons are most meaningful for expense accounts where you're trying to stay under a limit.

Is this available on mobile? The Budget page is part of the Beancount.io web dashboard. The underlying ledger data (the custom "budget" directives) is accessible anywhere you can read your ledger file.