Chart of accounts - How does yours look?

After having used ledger for a few years, I recently decided to start again from scratch using hledger.

This gave me an opportunity to revisit the accounts I have specified for my private journal and it got me thinking: What do other PTAers’ chart of accounts look like? What kinds of categorization have others found useful?

And so, I am wondering if people would be willing to share what accounts they’re using for their private accounting and perhaps add a bit of rationale as to why they chose to organize things the way they did.

I realize that full chart-of-accounts may 1) be very big and 2) include sensitive information for some users, so feel free to leave stuff out where it makes sense. If it makes sense, I’d also be interested in seeing just a sub-section of your accounts setup that you’re particularly happy with.

I’ll start off. First of all, I should note that I am Danish and some of the categorizations I’ve made might only make sense if you live in Denmark. I’ve made a quick attempt at translating my account names to English. Second, as I said, I’ve only just restarted my attempts at journalling my family’s finances, so I haven’t had a lot of time to polish my accounts.

Here goes (hledger accounts --tree):

income  
  gifts
  other
  salary
    ...
expenses
  misc
    public transport
    news
    streaming
    internet
    cell phone
    other subscriptions
    games
    books
    decor
    house
    gifts
  personal care
  car
    gas
    insurance
    tax
    service
    parking
    loan
      interest
    other
  house
    mortgage
    tax
    insurance
    power
    gas
    water
    maintenance
    loan
      interest
  family
    ...
  enjoyments
    ...
  insurance
    ...
  housekeeping
    groceries
    take-away
    misc
  clothes
assets
  car
  house
  bank
    ...
  investments
    ...
liabilities
  loans
    car
    mortgage
  creditcards
equity
  opening balance

All in all, pretty standard stuff.

I’ve chosen to have my car and house as separate commodities which I can value in my price database. This allows me to model appreciation/depreciation by changing the prices over time.

3 Likes

This is more detailed than my chart of accounts for sure! But that makes sense if you want to have useful data to make future decisions (another car? which car? which engine? etc.). I see you keep your car in your asset category too, which is reasonable if depreciations are correctly set.

I tend to have broad buckets (House/Fun/Personal/Healthcare/Transport/Utility bills) and if the need arises go a little bit deeper to see where the money is going. Paths of least resistance to using hledger and all that.

1 Like

I’m using beancount and I have different setups for different “books”. e.g. for my personal I have a different split vs our household or my wife.

This is more or less what the most complex case looks like. For me especially the split of the assets is very useful. For the expenses I started combining more and more and only leave it split where it’s useful for me (I’ll probably combine more of the car stuff at some point)

Assets
	Liquidity
		Institute
			Account
	Investment
		Institute
			Account or Security
	ProMemoria
		Institute
			Account
	Receivable
		Withholding Tax
		Person
		Others
	TangibleAssets
		Car
		House
Equity
	StartBalance
	ReservesHouse

Income
	Interest
	Capitalgain
	Salary
		Company Name

Expenses
	Car
		Deprecation
		Fuel
		Repairs
	BankingFees
	Health
		Doctors
		Insurance
	Household
	PublicTransport
	Travel
	Tax
	Entertainment
	Living
		NewConstructions
		ExtraCharges (Water, Electricity, ...)
		Repairs
		Insurance
		MortageInterest

3 Likes
assets
  bank
    BANKNAME
    BANKNAME reserve ; bank specific name for savings account
  cash
  receivable
    personal
    sale ; second hand stuff
  gift cards
  cashlike
    SERVICENAME ; Company-specific points that is defacto cash
  depreciation
    ...
  electronics
liabilities
  creditcard
    samsung ; Yes. That Samsung.
      installment
      pending
        payment
        installment
        misc
      confirmed
equity
  opening/closing balances
revenues
  financial
    interest
  misc
incomes
  ...
expenses
  housekeeping
    supplies
    utilities
  subscribtion
  entertainment
  personal
    supplies
  misc
  depreciation
  financial
    interest
      installment
  food
    delivery
    restaurant
    cafe
    snacks
    grocery
  transportation
    public transit
    intercity
    taxi

Some ommited because privacy but this is almost everything I have for now. It keeps growing but I try to keep things minimal.

Any suggestions or questions??

1 Like

I can second this. It makes reporting “net worth” much easier, for example

My top 3 levels look something like this (my deepest accounts are level 8):

JS
  assets
    bank
    brokerage
    online
    receivable
  liabilities
    payable
    tax
  equity
    conversion
    start
    unrecognisedrevenue
  revenues
    cd
    dividends
    interest
    cc
    foss
  expenses
    banking
    books/periodicals
    dues
    education
    legal/accounting
    equipment
    online
    phone
    research
    salary
    software
    supplies
    tax
sm
  assets
    bank
    cash
    online
    receivable
    prepaid
    pending
  liabilities
    ef
    household
    payable
  equity
    conversion
    start
  revenues
    gifts
    interest
    misc
    unknown
  income
    salary
  expenses
    accountingloss
    banking
    entertainment
    food
    gifts
    health
    home
    personalcare
    personaldevelopment
    recreation
    transport
    travel
    unknown

I recently removed spaces from the multi-word names; I might switch them to hyphens instead.

More details, from hledgermatic - hledger

As a sole proprietor, I like to track my business and my personal life as two separate entities.
Legally we are one entity, and there are frequent transactions between them, so it’s convenient to keep them in the same journal.
But I use a top-level entity prefix to keep the accounts clearly separated.
I use two letters for these (less typing, less visual noise and keeps them aligned in reports).
So my account declarations look like this:

; business 1
account JS:assets               ; type:A
account JS:liabilities          ; type:L
account JS:equity               ; type:E
account JS:revenues             ; type:R
account JS:expenses             ; type:X
account JS:assets:bank          ; type:C
account JS:assets:cash          ; type:C
account JS:equity:conversion    ; type:V
account JS:assets:bank:wf:bchecking
account JS:assets:bank:wf:bsavings
# etc...

; personal
account sm:assets               ; type:A
account sm:liabilities          ; type:L
account sm:equity               ; type:E
account sm:revenues             ; type:R, taxable personal revenues
account sm:income               ; type:R, already-taxed "salary" from JS, non-taxable income
account sm:expenses             ; type:X
account sm:assets:bank          ; type:C
account sm:assets:cash          ; type:C
account sm:equity:conversion    ; type:V
account sm:assets:bank:wf:pchecking
account sm:assets:bank:wf:psavings
# etc...
1 Like

The entity prefix scheme is very appealing to me. I am relatively new to ledger/hledger (~1 year) and saw the entity prefixing somewhere in the docs but was afraid to try it for fear something unknown would bite me. I could also see prefixes being useful for fully owned subsidiaries. I am now using hledger for five entities which are not all sole proprietorships, but they are all related and I'm the only one involved in the bookkeeping. I am have one file per entity per year using close --retain and close --migrate. I could imagine that prefixes might cause issues with these close/open operations? Did you experience any unexpected issues using prefixes?

@wolfish17 , the prefixes don't cause any issues for file closing/opening. The only issue is that hledger can't automatically detect their type so they need type: declarations as above.

2 Likes

I split assets into two general categories

assets:illiquid
assets:liquid

This makes seeing how much money i have available trivial

ledger bal assets:liquid liabilities
1 Like

This sounds like what I need too! But are your personal and business bank accounts physically separate? Right now I only have one set of accounts for everything so that makes things a bit more complicated.

I'm new to PTA (and accounting in general) as of last week (!) so still figuring this out :sweat_smile: will share my accounts once they've settled down

Yes mine are reasonably separate, eg JS:assets:bank:wf:bchecking and sm:assets:bank:wf:pchecking are two checking accounts at the same bank.

Tracking "separate entities" within a single real world account is possible of course, using subaccounts; it'll be a bit more complicated and discipline-requiring I imagine. It could be a good exercise, though I wouldn't call it ideal for clarity long term.

1 Like

Hmm, let me try making separate personal and business accounts only for revenue and expenses, but keeping the assets common. That's how it is in real life (I'm a working professional but working directly, not through a proprietorship or company, so revenue and expenses are what I'll need to draw up eg. for taxation purposes)

I live between China and the US, which makes my finances kind of a headache. Direct deposit in China is bank-dependent—when you switch employers, you have to open a bank account with the employer's bank in order to receive your salary. So, my asset accounts are messier than I like.

My accounts are typically not nested more than two levels deep. I like how things keeps things simple. Queries aren't any more difficult. I think it looks cleaner, too. For me, "clean" is a motivating factor.

Here's my account tree:[1]

Accounts tree
Accounts Receivable
  CBank CD:2023-04-06
  US Job
Assets
  Alipay
  BJBank
  Wife's Bank
    CD
      2022-03
      2023-01
    Funds
  Wife's Other Bank
    CD
  ICBC
  Schwab
  Transfers
  WeChat
  American Bank Checking
  American Bank Savings
  American Bank Transfers
Equity
  Opening Balances
Expenses
  Bills and Utilities
  Business Services
  Cash
  Education
  Entertainment
  Fees and Charges
  Food and Dining
  Gifts and Donations
  Health and Fitness
  Housing
  Miscellaneous
  Shopping
  Transportation
Income
  Chinese Social Insurance Fund Withdrawal
  Dividends
  Gifts
  IRS Tax Return
  State Tax Return
  Interest
  US Job
  PRC Tax Return
  Refunded Business Service
  Chinese Job
  Tutoring
    Hailey
    Jenny
  U.S. Federal COVID Assistance
  Old Chinese Job
  American Bank Rewards
Liabilities
  American Bank Credit Card

I'm pretty satisfied with my expense accounts. The limitation of a flat structure has helped me classify expenses. Looking at least year's expenses, though, I found shopping, food & dining, and health & fitness made up a full ⅔ of my expenses, so they probably merit splitting into more categories for closer analysis.

For one, food and dining includes convenience store purchases, groceries, and restaurants. This made sense at the time because for my job, I traveled all around the city every day, so lunch at a restaurant was a regular thing. Now, with my stable job and an infant at home, restaurant expenses are a rare thing. Refactoring couple be in order here.

Shopping includes everything I buy at grocery stores if those purchases aren't edible. It also includes online purchases, regardless of the purpose of the purchase.

In contrast with Simon's using top-level accounts to differentiate between the different parts of his finances, I use Country: tags on my income postings to generate reports for tax purposes, etc. This works well for me, but I'm not a business owner, so I don't have to keep things separate that way.

I'm glad to answer any questions, and hope what I've shared is helpful!


  1. I confess I haven't kept up with the books for about six months—I've been in China and it's just not fun to handle the tracking. ↩︎

1 Like

My charts of accounts are currently in a different, yet similar, format, but I am thinking of migrating.

I currently have several different separate charts of accounts for different entities, each in its own controlling account for things like linking. Entity names are short abbreviations, 1-4 characters. I have a personal chart, a test chart for development, some standard charts for testcases/benchmarks, and some for family. I hope to add my own business chart soon, maybe.

The standard charts are from my high-school textbook.

The test chart is fuzzy and chaotic on purpose, to test limits of design. I also use temporary charts at times.

My personal hierarchy is based on a simple service proprietorship, with more general categories. I didn't study personal accounting, only proprietorships, partnerships and corporations, so this might be weird, but I was intending to grow. Haha. It's similar to this:

Assets
    Petty Cash
        [Each wallet, safe, coin holder, whatever, has an account]
    Banks
        [Bank accounts]
    Accounts Receivable
        [Accounts that typically owe me]
    Supplies
    [Specific asset accounts]
Liabilities
    Accounts Payable
        [Accounts I typically owe]
    [Tracking accounts for goals]
Equity
    Capital
    Income Summary
Revenue
    Sales
    Interest Income
    Gifts received
    Misc. Revenue
Expenses
    Gifts given
        General
        [A couple charities have their own accounts]
    Supplies used
    Utilities [includes phone&Internet]
    Medical Exp. [Tax deductible]
    Health exp. [Not tax deductible]
    Fees, fines, tax
    Misc. Exp.
    Short&Over
    [Other expenses]

Accounts Rec./Pay. are often a gray area with friends/family and I sometimes move an account between those groups.

There are also Unknown accounts I left out.

Comments are welcome.

Update: In 2024-12 I should say that increasingly, I make use of temporary --alias options to move the entity prefix down to second level and capitalise the top level, producing account names like

Assets:JS:...
Assets:sm:...
Liabilities:JS:...
Liabilities:sm:...
Equity:JS:...
Equity:sm:...
Revenues:JS:...
Revenues:sm:...
Expenses:JS:...
Expenses:sm:...

This is mainly for compatibility with other tools like beancount, fava and paisa. But it's not a bad view for my everyday reporting too, and still in principle partitioned so if I ever wanted to separate business and personal accounting completely, I could. So I'm probably going to try it as default view shortly (with some more permanent alias directives), andif I like it might ultimately do a big search and replace in journal files.

That's interesting. It might be a better approach for my migration, too, then.