{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreif3mn33fp7tx4tenslllk3yerskvykep7zgwrn6evrvk5xtnlpnia",
"uri": "at://did:plc:ircis5cmp6zyi7m3h45h6rfq/app.bsky.feed.post/3mkyg2c6ufjc2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreibae7r7ivxtfxdcrnxm5ujhxnc7ff4zich6utcxvlfn7tlvv6ekua"
},
"mimeType": "image/png",
"size": 425699
},
"path": "/2026/05/04/ptpl-206-beancount-envelope-budgeting",
"publishedAt": "2026-05-03T23:00:00.000Z",
"site": "https://ellanew.com",
"tags": [
"UP Bank",
"plain text accounting",
"Beancount",
"double-entry 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",
"beancount.io",
"Mastodon",
"Bluesky",
"https://ellanew.com/feed.rss",
"sign up"
],
"textContent": "## How a phantom currency keeps bank account reports clean\n\nEnvelope 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.\n\nEnvelope 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.\n\nOr 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.\n\n### Envelope budgeting in plain text accounting\n\nI 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!\n\nThere’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.\n\nThis 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.\n\nWhat comes next assumes you are familiar with the basics of Beancount and double-entry accounting.\n\nI 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.\n\nAUD = Australian dollars, the currency of my bank account.\n\n### Beancount examples\n\nIt’s vital to ensure that assets, income, and expense accounts can use both currencies:\n\n\n 2020-05-01 open Assets:Bank:Saver AUD, BGT\n 2020-05-01 open Assets:Cash AUD, USD, NZD, XPF\n 2020-05-01 open Expenses:Food:Groceries AUD, BGT\n 2020-05-01 open Expenses:Food:Eating-out AUD, BGT\n 2020-05-01 open Expenses:Utilities:Electricity AUD, BGT\n 2020-05-01 open Income:Salary AUD, BGT\n 2020-05-01 open Income:Freelance AUD, BGT\n 2020-05-01 open Equity:Opening-balances\n\nThen 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.\n\n\n 2020-05-01 open Assets:BUD:Saver:Misc BGT\n 2020-05-01 open Assets:BUD:Saver:Travel BGT\n 2020-05-01 open Assets:BUD:Saver:Food BGT\n 2020-05-01 open Assets:BUD:Saver:Donations BGT\n 2020-05-01 open Assets:BUD:Saver:Christmas BGT\n 2020-05-01 open Assets:BUD:Saver:Health BGT\n 2020-05-01 open Assets:BUD:Saver:Utilities BGT\n\nOn 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.\n\n\n 2026-05-04 * \"Pay Day\" \"Company A\"\n Assets:Bank:Saver 1000.00 AUD\n Assets:BUD:Saver:Misc 1000.00 BGT\n Income:Salary\n\n\nNext 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:\n\n\n 2026-05-04 * \"Pay Day\" \"\"\n Assets:Bank:Saver 1000.00 AUD\n Assets:BUD:Saver:Misc 1000.00 BGT\n Income:Salary\n\n 2026-05-04 * \"Budgeting\" \"week 19\"\n Assets:BUD:Saver:Misc -900.00 BGT\n Assets:BUD:Saver:Travel 250.00 BGT\n Assets:BUD:Saver:Donations 100.00 BGT\n Assets:BUD:Saver:Christmas 50.00 BGT\n Assets:BUD:Saver:Health 150.00 BGT\n Assets:BUD:Saver:Utilities 350.00 BGT\n\nWhen entering transactions, you’ll subtract the same amount from both the real and the virtual budget currencies:\n\n\n 2026-05-04 * \"Origin Energy\" \"electricity bill\"\n Assets:Bank:Saver -245.00 AUD\n Assets:BUD:Saver:Utilities -245.00 BGT\n Expenses:Utilities:Electricity\n\n 2026-05-05 * \"Blind Society\" \"annual donation\"\n Assets:Bank:Saver -50.00 AUD\n Assets:BUD:Saver:Donations -50.00 BGT\n Expenses:Donations\n\n 2026-05-05 * \"Origin Energy\" \"electricity rebate\"\n Assets:Bank:Saver 10.73 AUD\n Assets:BUD:Saver:Utilities 10.73 BGT\n Expenses:Utilities:Electricity\n\n 2026-05-06 * \"Grill'd\" \"Tuggerah\"\n Assets:Bank:Saver -48.56 AUD\n Assets:BUD:Saver:Food -48.56 BGT\n Expenses:Food:Eating-out\n\n\nBeancount 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:\n\n\n 2026-05-02 pad Assets:Bank:Saver Equity:Opening-balances\n 2026-05-03 balance Assets:Bank:Saver 2,374.00 AUD\n\n 2026-05-03 balance Assets:BUD:Saver:Misc 324.00 BGT\n 2026-05-03 balance Assets:BUD:Saver:Travel 500.00 BGT\n 2026-05-03 balance Assets:BUD:Saver:Food 200.00 BGT\n 2026-05-03 balance Assets:BUD:Saver:Donations 150.00 BGT\n 2026-05-03 balance Assets:BUD:Saver:Christmas 200.00 BGT\n 2026-05-03 balance Assets:BUD:Saver:Health 450.00 BGT\n 2026-05-03 balance Assets:BUD:Saver:Utilities 550.00 BGT\n\nOne 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:\n\n\n 2026-05-03 balance Assets:BUD:Travel:Misc 100.00 BGT\n 2026-05-03 balance Assets:BUD:Travel:Fares 950.00 BGT\n 2026-05-03 balance Assets:BUD:Travel:Rooms 1500.00 BGT\n 2026-05-03 balance Assets:BUD:Travel:Car 870.00 BGT\n 2026-05-03 balance Assets:BUD:Travel:Eating-out 450.00 BGT\n\n\nDoes 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.\n\n### More on plain text accounting\n\n * Beancount Manual\n * 2024-08-05 Plain Text Accounting Level 1, Complete!\n * 2024-10-07 Choosing Between Digital and Analog, and a Plain Text Accounting Update\n * 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!\n * 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(!)\n\n\n\n### Next week\n\nNext week 🤞 I’ll explain how to use the todo.txt format to create a functional plain text calendar.\n\n* * *\n\n_💬 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._\n\nIf 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.",
"title": "PTPL 206 · Plain Text Accounting: Envelope Budgeting in Beancount"
}