Plaintext Accounting Crib Sheet
I recently watched, this video by Colin Dean which for the first time made plaintext accounting click.
This is a brief overview of what hledger
is used for and the key takeaways to stick with it.
Overview
hledger
is part of a family of programs focused on plaintext accounting. I've found myself hopping around many financial tracking applications and largely unhappy with all of them (especially when it comes to multi-currency accounts).
At the heart of hledger
lies the ledger file. This is a regular textfile usually with the extension .journal
.
The recommendation is to with something like this
; Declare top level accounts, setting their types and display order;
; Replace these account names with yours; it helps commands like bs and is detect them.
account Assets ; type:A, things I own
account Liabilities ; type:L, things I owe
account Equity ; type:E, net worth or "total investment"; equal to A - L
account Expenses ; type:X, outflow categories; part of E, separated for reporting
commodity 1,000.00 USD
commodity 1,000.00 GBP
- Assets include things like checking accounts, savings, investments, cash in your wallet or purse.
- Liabilities is anything you owe (mortgage, credit cards, etc.)
- Expenses is anything you pay for (coffee shop, groceries, software, etc.)
- Equity is...still something I don't understand.
Where in Mint or You Need a Budget like programs you might see a transaction like this
Jul 4, 2021 Brindisa, Spanish Foods ... $23.49
hledger
requires every transaction to be balanced (equaling 0)
2021-07-04 Brindisa, Spanish Foods
Expenses:Food 23.49 USD
Liabilities:CreditCards:American Express -23.49 USD
The is the double entry part of double entry bookkeeping.
With that background, here are some key points to make using hledger easier.
Start right now
Don't try to backfill information for this year. It will be a painfully tedious process and likely make you not want to continue.
When you're declaring balances of prior to tracking with hledger
, balance your transactions against Equity.
2021-12-24 Opening Balances
Assets:Checking 48.33 USD
Equity -48.33 USD
Don't use money signs
Always use USD in place of $
. The same for all currencies. Certain tools do not work with currency signs.
Commodities
Everything is a commodity. A US Dollar, British Pound, or a BTC. Their values is only derived based on what you define it as.
P 2021/12/25 12:00:00 AAPL @ 170.00 USD
It's only after adding a line like this in your ledger that the commodity "AAPL" has a value. It has no relation to the actual stock except for when you define a price at a given date/time.
Where do things go?
Starting
The most confusing part tutorials never explain is how to start a ledger when you already have money in your bank account. The answer? It comes from Equity.
More succinctly:
Opening Balances (+) Asset, (-) Equity
; Example
2021-12-25 Opening Balance
Assets:Checking 2000.00 USD
Equity -2000.00 USD
Paying
What about when you pay for things? Isn't it weird that Expenses would be positive? Since they're coming out of your bank account? This was the most confusing for me until I learned how this is used in querying your ledger.
But first, here's how you should record expenses
Paying for things are (+) Expenses, (-) Liability or Asset depending on credit/debit respectively
Once this is in place, you can query for your cash flow (Comparing what comes in vs goes out)
$ hledger bal ^Income ^Expenses
28.60 GBP Expenses:Food:Groceries
34.10 GBP Expenses:Shopping:Electronics & Software
-200.00 GBP Income:Paycheck
--------------------
-137.30 GBP
If your cashflow is positive that means your expenses are higher than income.
In the case where you pay with a credit card, these purchases would go against your liability.
Your net worth is the same comparison but between Assets and Liabilities
$ hledger bal ^Assets ^Liabilities
43.49 USD Assets:Checking
-20.56 USD Liabilities:CreditCards:Amex
--------------------
22.93 USD
(In this case, the goal is to have more than you owe! It's ok if you don't though. In 2014. ~50% of Americans had a net worth of 0)
With how much detail should I create accounts?
Assets
I label by kind (Checking, Savings, Wallet, Investment) and then the name of the company
i.e.
Assets:Checking:Bank of America
Assets:Investments:Charles Schwab
Assets:Cash:Wallet
Expenses
In general, keep things as simple as possible! But, if you need a reference Mint has a list of the categories they provide
The list as Ledger Account Names
Income:Paycheck
Income:Investment
Income:Returned Purchase
Income:Bonus
Income:Interest Income
Income:Reimbursement
Income:Rental Income
Assets:Miscellaneous:Cash & ATM
Assets:Miscellaneous:Check
Expense:Entertainment:Arts
Expense:Entertainment:Music
Expense:Entertainment:Movies & DVDs
Expense:Entertainment:Newspaper & Magazines
Expenses:Education:Tuition
Expenses:Education:Student Loan
Expenses:Education:Books & Supplies
Expenses:Shopping:Clothing
Expenses:Shopping:Books
Expenses:Shopping:Electronics & Software
Expenses:Shopping:Hobbies
Expenses:Shopping:Sporting Goods
Expenses:PersonalCare:Laundry
Expenses:PersonalCare:Hair
Expenses:PersonalCare:Spa & Massage
Expenses:Health:Dentist
Expenses:Health:Doctor
Expenses:Health:Eye Care
Expenses:Health:Pharmacy
Expenses:Health:Health Insurance
Expenses:Health:Gym
Expenses:Health:Sports
Expenses:Kids:Activities
Expenses:Kids:Allowance
Expenses:Kids:Baby Supplies
Expenses:Kids:Babysitter & Daycare
Expenses:Kids:Child Support
Expenses:Kids:Toys
Expenses:Food:Groceries
Expenses:Food:Coffee Shops
Expenses:Food:Fast Food
Expenses:Food:Restaurants
Expenses:Food:Alcohol
Expenses:GiftsDonations:Gift
Expenses:GiftsDonations:Charity
Expenses:Investments:Deposit
Expenses:Investments:Withdrawal
Expenses:Investments:Dividends & Cap Gains
Expenses:Investments:Buy
Expenses:Investments:Sell
Expenses:Utilities:Television
Expenses:Utilities:Home Phone
Expenses:Utilities:Internet
Expenses:Utilities:Mobile Phone
Expenses:Utilities:Utilities
Expenses:Transport:Gas & Fuel
Expenses:Transport:Parking
Expenses:Transport:Service & Auto Parts
Expenses:Transport:Auto Payment
Expenses:Transport:Auto Insurance
Expenses:Travel:Air Travel
Expenses:Travel:Hotel
Expenses:Travel:Rental Car & Taxi
Expenses:Travel:Vacation
Expenses:Fees:Service Fee
Expenses:Fees:Late Fee
Expenses:Fees:Finance Charge
Expenses:Fees:ATM Fee
Expenses:Fees:Bank Fee
Expenses:Fees:Commissions
Expenses:Business:Advertising
Expenses:Business:Office Supplies
Expenses:Business:Printing
Expenses:Business:Shipping
Expenses:Business:Legal
Expenses:Taxes:Federal Tax
Expenses:Taxes:State Tax
Expenses:Taxes:Local Tax
Expenses:Taxes:Sales Tax
Expenses:Taxes:Property Tax
Income
Label by where it's coming from.
Income:Venmo
Income:Google
The most important rule
As tempting as it is to use all the communities different tools for automating downloading your transactions and importing them into ledger (and there are many), do it manually. The power of plain text accounting comes in the ownership over your financial information.
You can't do that if you're not aware of every transaction.
This was the key which I failed to grasp the first few times trying to use plaintext accounting.