External Publication
Visit Post

PTPL 206 · Plain Text Accounting: Envelope Budgeting in Beancount

Welcome - Ellane W [Unofficial] May 3, 2026
Source

How a phantom currency keeps bank account reports clean

Envelope budgeting is the practice of planning ahead for known expenses by regularly putting money into pre-determined categories, or envelopes. As the name suggests, it is often done with real cash placed into real envelopes.

Envelope budgeting can be done in digital banking with a series of separate accounts, but that can be limiting. Unless your bank allows a single account to be split into multiple categories (like UP Bank- Australia-only referral link), you will need to track things carefully on a spreadsheet.

Or you can enter the satisfying world of plain text accounting, where you can create as many virtual categories as you need while still easily keeping track of real-life bank transactions and balances.

Envelope budgeting in plain text accounting

I began with plain text accounting from a position of profound financial and technical ignorance, so it feels incredible to finally be able to say I am now confidently using plain text to run an envelope budgeting system!

There’s a lot more to learn and I’m sure over time parts of the process will change, but that’s the beauty — and flexibility — of using plain text. Things are working and that’s enough for me right now.

This system is helping a family member keep on top of their spending, and also to save up for bills and holidays. It’s been life changing for them, and I’m both surprised and grateful to be part of the process. Instead of seeing a bulk amount in a single bank account, they can now see exactly how much is available for discretionary spending as distinct from money set aside for future expenses.

What comes next assumes you are familiar with the basics of Beancount and double-entry accounting.

I have created my ‘envelopes’ with a new currency called BGT (budget). There are other ways to do envelope budgeting without creating a virtual currency, but using the budget envelopes separate to the regular currency keeps reporting on the actual balance of the real-life bank account, clean; uncluttered by extra accounts that appear to but don’t actually exist.

AUD = Australian dollars, the currency of my bank account.

Beancount examples

It’s vital to ensure that assets, income, and expense accounts can use both currencies:

2020-05-01 open Assets:Bank:Saver                   AUD, BGT
2020-05-01 open Assets:Cash                         AUD, USD, NZD, XPF
2020-05-01 open Expenses:Food:Groceries             AUD, BGT
2020-05-01 open Expenses:Food:Eating-out            AUD, BGT
2020-05-01 open Expenses:Utilities:Electricity      AUD, BGT
2020-05-01 open Income:Salary                       AUD, BGT
2020-05-01 open Income:Freelance                    AUD, BGT
2020-05-01 open Equity:Opening-balances

Then you’ll need to open virtual accounts for each of your budget categories. Call them what you want, just make it clear they aren’t regular real-life assets. Include a reference to the real-life bank account that contains the funds.

2020-05-01 open Assets:BUD:Saver:Misc               BGT
2020-05-01 open Assets:BUD:Saver:Travel             BGT
2020-05-01 open Assets:BUD:Saver:Food               BGT
2020-05-01 open Assets:BUD:Saver:Donations          BGT
2020-05-01 open Assets:BUD:Saver:Christmas          BGT
2020-05-01 open Assets:BUD:Saver:Health             BGT
2020-05-01 open Assets:BUD:Saver:Utilities          BGT

On pay day, you’ll record the new BGT currency alongside the real currency you receive. Leaving the amount blank on the Income:Salary line allows Beancount to assign that as the source for both sets of currencies.

2026-05-04 * "Pay Day" "Company A"
    Assets:Bank:Saver                          1000.00 AUD
    Assets:BUD:Saver:Misc                      1000.00 BGT
    Income:Salary

Next you’ll split the BGT amount into your budget categories. Make as many of these as you like! In this example, $100 of this week’s funds remains in the Miscellaneous budget category for unforeseen expenses:

2026-05-04 * "Pay Day" ""
    Assets:Bank:Saver                          1000.00 AUD
    Assets:BUD:Saver:Misc                      1000.00 BGT
    Income:Salary

2026-05-04 * "Budgeting" "week 19"
    Assets:BUD:Saver:Misc                      -900.00 BGT
    Assets:BUD:Saver:Travel                     250.00 BGT
    Assets:BUD:Saver:Donations                  100.00 BGT
    Assets:BUD:Saver:Christmas                   50.00 BGT
    Assets:BUD:Saver:Health                     150.00 BGT
    Assets:BUD:Saver:Utilities                  350.00 BGT

When entering transactions, you’ll subtract the same amount from both the real and the virtual budget currencies:

2026-05-04 * "Origin Energy" "electricity bill"
    Assets:Bank:Saver                          -245.00 AUD
    Assets:BUD:Saver:Utilities                 -245.00 BGT
    Expenses:Utilities:Electricity

2026-05-05 * "Blind Society" "annual donation"
    Assets:Bank:Saver                           -50.00 AUD
    Assets:BUD:Saver:Donations                  -50.00 BGT
    Expenses:Donations

2026-05-05 * "Origin Energy" "electricity rebate"
    Assets:Bank:Saver                            10.73 AUD
    Assets:BUD:Saver:Utilities                   10.73 BGT
    Expenses:Utilities:Electricity

2026-05-06 * "Grill'd" "Tuggerah"
    Assets:Bank:Saver                           -48.56 AUD
    Assets:BUD:Saver:Food                       -48.56 BGT
    Expenses:Food:Eating-out

Beancount now has all it needs to show you how much has been spent in each budget category, and how much remains. To keep things accurate, remember to regularly insert asset account balances, padding where necessary so they match your actual bank balance:

2026-05-02 pad Assets:Bank:Saver Equity:Opening-balances
2026-05-03 balance Assets:Bank:Saver            2,374.00 AUD

2026-05-03 balance Assets:BUD:Saver:Misc          324.00 BGT
2026-05-03 balance Assets:BUD:Saver:Travel        500.00 BGT
2026-05-03 balance Assets:BUD:Saver:Food          200.00 BGT
2026-05-03 balance Assets:BUD:Saver:Donations     150.00 BGT
2026-05-03 balance Assets:BUD:Saver:Christmas     200.00 BGT
2026-05-03 balance Assets:BUD:Saver:Health        450.00 BGT
2026-05-03 balance Assets:BUD:Saver:Utilities     550.00 BGT

One example of how my family member uses envelope budgeting is to track how much they have saved up for a holiday they’ll be taking in September. The Travel category is broken down into specific sub-categories, making it easy to see that every aspect is covered:

2026-05-03 balance Assets:BUD:Travel:Misc         100.00 BGT
2026-05-03 balance Assets:BUD:Travel:Fares        950.00 BGT
2026-05-03 balance Assets:BUD:Travel:Rooms       1500.00 BGT
2026-05-03 balance Assets:BUD:Travel:Car          870.00 BGT
2026-05-03 balance Assets:BUD:Travel:Eating-out   450.00 BGT

Does anything about doing envelope budgeting this way feel confusing? Please let me know (see below) and I’ll do my best to make it clearer.

More on plain text accounting

  • Beancount Manual
  • 2024-08-05 Plain Text Accounting Level 1, Complete!
  • 2024-10-07 Choosing Between Digital and Analog, and a Plain Text Accounting Update
  • NOTE: beancount.io with its slick AI promo video is not an official website. You do not need to pay to use Beancount, and you certainly don’t need to sign up for a subscription!
  • I started my plain text accounting journey with hledger. It’s great for those who gel with it and don’t care that the amounts in the right hand column aren’t auto aligned and has a supportive community around it. Beancount wins out for me because I don’t enjoy working in the terminal. The fava interface is fantastic, and visual alignment of input is more important to me than it possibly should be(!)

Next week

Next week 🤞 I’ll explain how to use the todo.txt format to create a functional plain text calendar.


💬 I love to hear from readers! email hello at ellanew dot com or message me on Mastodon or Bluesky. Follow my RSS feed (https://ellanew.com/feed.rss), or sign up to receive a weekly plain text themed email.

If you’ve found value here, I invite you to share this post with someone you think will appreciate it or make a contribution to my support jar.

Discussion in the ATmosphere

Loading comments...