header logo

Design of an accounting system - how I designed mine

When designing an accounting system, we must decide how much detail is necessary. We do not have to think much about the wealth containers or income categories (left and middle columns of the figure), those are usually self-evident. The spending categories (everything on the right) are much less obvious. At the extremes, you could have one solitary spending category called "Things I spend money on" or you could have a separate spending account for every transaction, "Grocery money on 2015-03-04". Neither of those extremes is useful. The practical extremes are to have about 4 categories (transport, food, housing, misc) or to have detailed categories for product types (detergent, broccoli, carrots, gas, etc) and then make those sub-categories of broader categories like food and transportation. The tradeoff is between detail and effort, how much time curating this accounting file is it worth to have exact data on the broccoli bill history?

My approach is to make a category for those things which cover more than 10% of my spending (housing, transportation, food, healthcare, etc) and then to break off special purpose smaller categories which are either [1] necessities that can vary wildly in price and which people tend to dramatically overspend on (restaurants from food, clothing from miscellaneous) or [2] categories which have special tax significance (charity, tax preparation). If the miscellaneous spending category is over 15% of expenditures, it is advisable to break it apart.

Money as a conserved quantity, a fundamental theory of accounting.

Here is how my account categories are broken down in practice. These will continue to grow as I change jobs, banks, and hobbies.

Income sources 3 EmployersThree employers over the last 8 years
Blood bankSold blood plasma regularly for 2 summers
Self employmentWork nights in theater, paid on 1099s
MiscellaneousSales on craigslist, friends' home improvement projects, etc
Wealth containers
1 Saving account
1 Brokerage account
2 Checking accounts Switched banks a few years back; our accounting files will grow as we move through the financial system.
5 Credit cards Never keep a balance, always pay them off at the end of the month to avoid interest. I have 5 to take advantage of store-card-specific discounts.
Debt to Mom and Dad I borrowed some money from Mom and Dad just after college, they do not seem to want it back though I keep offering
Loans to employerAs a grad student, I ran the lab on my credit card and was reimbursed monthly
Loans to volunteer orgFrequent trips to Home Depot for the organization I was volunteering at
Home equity
Spending categories Groceries
Transportation
Housing
Taxes
Healthcare
Clothing
Miscellaneous
Restaurants
CircusJuggling and circus arts have been my main hobby since my mid-teens, your hobbies may vary
Entertainment
Fitness
Charity

On average there are 80-120 transactions per month between these accounts; about 1000 per year. Tracking cannot be done at the end of the month, it requires a small consistent effort every couple days.

The categories which will be appropriate depend on the lifestyle of the individual. Some are nearly universal; we all spend money on groceries, transportation, housing, taxes, healthcare, and clothing. Others are not; I have been a hobby circus performer for 15 years and have spent thousands of dollars on juggling props, trapeze hardware and so on. Circus is a spending category highly specific to me. You probably have never spent any money on circus; you probably spend money on other hobbies like music, video games, team sports, cosplay... whatever it is you do. Regardless of how you divide your expenses, keep in mind a container should account for at least 3% of your annual expenses, otherwise those expenses should be combined with another category. This rule prevents excessive categorization which obscures spending patterns.

Your income sources will also be unique to you and will grow over time as you change jobs, start side businesses, and so forth.

The case for home-built accounting software

If you have the temperament for fiddling with things you should strongly consider writing your own accounting software. It need not be an enormous endeavor. The accounting software I wrote for myself is less than 300 lines of Python code and it does all sorts of fancy and unnecessary things like remind me when bill due dates are approaching. At some point, I will clean up that code and post it here. Since it was literally the first program I wrote beyond 'Hello World!', the structure and comments leave something to be desired. However, it works, it works reliably, and it has worked reliably for a decade. Here is why you should consider something like this yourself.

What needs to be recorded

Remember this list? Each transaction in the database needs to have the following five fields.

Every transaction is recorded to the penny except transactions in cash.If it were not, my accounting reports would not match my bank statements. When cash leaves my wallet, it is rounded up to the nearest dollar; when it comes in, it is rounded it down to the nearest dollar. My change sits in a change jar until I wrap it up and turn it into the bank at which point it becomes "miscellaneous" income (about $20 per year). The benefits of tracking every last penny in coins are not worth the time and effort.

My home-built accounting software

Recall the purpose of accounting software.

The purpose of accounting software, visual graphic

Here's what it looks like in my accounting_records.txt file.

2013-01-02, Grad student direct deposit student stipend , 1833.67,SK__bc__

2013-01-02, Fiesta Mart groceries , 16.52,rc__gf__

2013-01-02, DAV Thrift - couple tshirts , 20.95,rc__clos

2013-01-04, Student health center antibiotics , 35.00,rc__heal

rc__

Credit card

gf__

Groceries

bc__

Checking account

heal

Healthcare

SK__

School grad student stipend

clos

Clothing

The description field is an easy place to include confirmation numbers and other information like "How much electricity was used?" and "How many gallons of gas took me how far?" This helps answer questions like "Is gas more expensive? or am I driving more? or is the car in need of maintenance?", "Is electricity more expensive? or is an appliance malfunctioning? or is a roommate/spouse doing something unusual?" I will discuss the utility of the description field in another article.

Also, keep in mind the general ledger never forgets your sins and mistakes which is one reason people find it hard to keep up with them. Every ill-advised business venture, every drug, every ice cream, and every ill-advised trip to a bad neighborhood resulting in armed-robbery is recorded in my general ledger with the exact date until I die. Sometimes this is useful ("Honey, when was our first date?"), sometimes its creepy ("Honey, when was your first date with your second girlfriend?"), and sometimes inconvenient and embarrassing ("Honey, what was the bail fee 8 years ago when you got arrested for being drunk in public?" [not a personal example]). Real accounting records can give you a memory that gives you the creeps.

And this is the output from the Python script

This is the first month of transactions I recorded. I'm using this month as an example because there is less complexity. I had fewer financial accounts then and I was living a more frugal lifestyle. In 2013 I averaged about 50 transactions per month involving 4 wealth containers, these days I average over 100 with 16 active wealth containers.

At the bottom, it says 6494 transactions because that is how many are in my file today but with the date filters, it is only displaying 47 of them.

>> repf('MMMM',True,True,month=20130100) Month Balance - 30, 0 Total Expenses - 29, 0 Rent Housing Utilities - 4 2013-01-04 Rent January - Late because office was unstaffed no latefees ................... 500.00 2013-01-11 AT&T internet - confirm # CONFNUMBER .......................................... 25.00 2013-01-21 TXU electric bill - conf# CONFNUMBER - 232 kWh ................................ 43.06 2013-01-26 Rent - February ................................................................ 500.00 Total ................................................................................. 1068.06 Health Care - 4 2013-01-04 Student health center antibiotics .............................................. 35.00 2013-01-07 Student health center doctor visit ............................................. 5.00 2013-01-08 Student health center antibiotics .............................................. 7.05 2013-01-08 Student health center doctor visit ............................................. 5.00 Total ................................................................................. 52.05 Automotive/Transportation Expenses 2013-01-15 08Civic - Gas - Exxon - 9.906 - 249.5 - 54682 .................................. 31.69 Total ................................................................................. 31.69 Groceries - 9 2013-01-02 Fiesta Mart groceries .......................................................... 16.52 2013-01-07 HEB groceries .................................................................. 19.31 2013-01-09 Fiesta Mart vegetables ......................................................... 9.08 2013-01-13 HEB Groceries .................................................................. 45.80 2013-01-14 Fiesta Mart .................................................................... 15.00 2013-01-18 Fiesta Mart .................................................................... 33.39 2013-01-20 Fiesta Mart .................................................................... 13.69 2013-01-22 HEB - groceries ................................................................ 25.00 2013-01-27 HEB groceries .................................................................. 30.68 Total ................................................................................. 208.47 Education/Professional Expenses - 3 2013-01-15 Repaid Maria for ************** conference ..................................... 10.00 2013-01-21 Ebay/Paypal #CONFNUMBER Reif book ..................................... 60.00 2013-01-21 Amazon# #CONFNUMBER Greenberg math text ................................ 76.77 Total ................................................................................. 146.77 Miscellaneous - 8, 3 2013-01-09 Bookstore umbrella ............................................................. 32.45 2013-01-10 Office depot file cabinet lock ................................................. 18.39 2013-01-16 USPS Stamps .................................................................... 9.00 Subtotal .......................................................................... 59.84 Restaurant Food 2013-01-09 Mcalisters lunch ............................................................... 13.90 Total ................................................................................. 13.90 Kitchen Equipment 2013-01-07 Acemart - paring knife drip buckets ............................................ 42.05 2013-01-07 Acemart - meat grinder potato pealer .......................................... 53.48 Total ................................................................................. 95.53 Clothing 2013-01-02 DAV Thrift - couple tshirts .................................................... 20.95 2013-01-19 DAV Thrift - 10 clothes hangers ................................................ 1.00 Total ................................................................................. 21.95 Total ................................................................................. 191.22 Total ................................................................................. 1698.26 Earned Income Grad school stipend 2013-01-02 Direct deposit student stipend ................................................. -1833.67 Total ................................................................................. -1833.67 Total ................................................................................. -1833.67 Total ................................................................................. -135.41 6494 total transactions, 47 screened transactions

And this is the account balance output. Notice that these totals do not add up to the sum of the displayed contributions. Things happened to me financially prior to 2013 so I did not start January 2013 with $0 in all my wealth containers.

>>> repf('LIQ_',True,True,end=20130200) Net worth - 48, 0 Savings 2013-01-06 Moved money to savings from checking ........................................... 2200.00 Total ................................................................................. 3861.07 Checking (min $1500) - 8 2013-01-02 UH direct deposit student stipend .............................................. 1833.67 2013-01-04 Rent January - Late because office was unstaffed no latefees ................... -500.00 2013-01-06 Moved money to savings from checking ........................................... -2200.00 2013-01-14 ATM withdraw ................................................................... -100.00 2013-01-26 Rent - February ................................................................ -500.00 2013-01-28 School reimbursement voucher # CONFNUM ........................................ 121.51 2013-01-31 School reimbursement voucher # CONFNUM ........................................ 12.12 Total ................................................................................. 2569.30 Credit card ($**k - limit) - 28 2013-01-02 Fiesta Mart groceries .......................................................... -16.52 2013-01-02 DAV Thrift - couple tshirts .................................................... -20.95 2013-01-04 Student health center antibiotics .............................................. -35.00 2013-01-07 Acemart - paring knife drip buckets ............................................ -42.05 2013-01-07 HEB groceries .................................................................. -19.31 2013-01-07 Student health center doctor visit ............................................. -5.00 2013-01-07 Acemart - meat grinder potato pealer .......................................... -53.48 2013-01-08 Student health center antibiotics .............................................. -7.05 2013-01-08 Student health center doctor visit ............................................. -5.00 2013-01-09 Mcalisters lunch ............................................................... -13.90 2013-01-09 UH Bookstore umbrella .......................................................... -32.45 2013-01-09 Fiesta Mart vegetables ......................................................... -9.08 2013-01-10 Office depot file cabinet lock ................................................. -18.39 2013-01-11 AT&T internet - confirm # CONFNUM ..................................... -25.00 2013-01-13 HEB Groceries .................................................................. -45.80 2013-01-15 Lowes shop vac & hardware - reimbursement receipt given 1/16 ................... -121.51 2013-01-15 08Civic - Gas - Exxon - 9.906 - 249.5 - 54682 .................................. -31.69 2013-01-18 Fiesta Mart .................................................................... -33.39 2013-01-18 OJ for friday seminar .......................................................... -12.98 2013-01-18 Donuts for friday seminar ...................................................... -26.20 2013-01-20 Fiesta Mart .................................................................... -13.69 2013-01-21 TXU electric bill - conf# CONFNUM - 232 kWh ................................ -43.06 2013-01-21 Ebay/Paypal #CONFNUM Reif book ..................................... -60.00 2013-01-21 Amazon# CONFNUM Greenberg math text ................................ -76.77 2013-01-24 Lowes - super glues ............................................................ -12.12 2013-01-25 Shipley donuts for friday seminar .............................................. -26.20 2013-01-27 HEB groceries .................................................................. -30.68 Total ................................................................................. -713.50 Wallet - 10 2013-01-06 Lent money to neighbor ......................................................... -9.00 2013-01-14 ATM withdraw ................................................................... 100.00 2013-01-14 Fiesta Mart .................................................................... -15.00 2013-01-15 Repaid Maria for ************** conference ..................................... -10.00 2013-01-16 USPS Stamps .................................................................... -9.00 2013-01-19 DAV Thrift - 10 clothes hangers ................................................ -1.00 2013-01-22 HEB - groceries ................................................................ -25.00 2013-01-25 HEB- oj for friday seminar ..................................................... -12.98 2013-01-25 HEB- change from HEB OJ ........................................................ -0.02 Total ................................................................................. 27.00 Total ................................................................................. 5743.87

Follow @domesticengine7

© MC Byington