Hacker News new | past | comments | ask | show | jobs | submit login

I’ve read that the development of double entry book keeping was very important, enabling less error in accounting, then driving significant gains in commerce. But reading this didn’t explain exactly why. Is it just the simple sum rule that ensured errors in transcription would (usually) quickly be caught? I’d guess automated accounting services today would be less prone to such errors — does that mean double entry is no longer as important as it once was?



In addition to error checking, the process of double-entry bookkeeping also provides a way to get different views into the state of a business: balance sheets, P&L statements, transaction histories, and so on. A lot of the mechanics of doing it manually—journals, ledgers, day books, trial balances, etc.—are less important now that computers can slice-and-dice at the push of a button, but the fundamental idea of a business transaction as a set of balanced money movements between different accounts is still a useful way to structure financial data.

(“Double entry” is also something of a misnomer; it’s really “N-entry” accounting, where all N entries that make up a transaction have to balance out to make sure you know where the money came from and where it went to. It’s just that for simple transactions the minimum number of entries that makes sense is 2.)


> “N-entry” accounting

it's called double entry bookkeeping because each value (each number) gets entered in two places, once as a debit, and once as a credit.


It depends on what you count as a "transaction". Some of my real transactions get recorded as multiple "virtual" transactions on the books, to make sure the money has visited all the relevant places for later summary purposes.

Example: I buy something with my salary. Two real transactions. However, on the books it goes in as income, it is moved to the household income, it goes into the cash reserve, then moves through the appropriate budget category before the actual expenditure is recorded as it happens.


Yes, but in practice split transactions are common, where you will have 1 credit and 2 debit entries in a transaction. For example, if you work from home and pay rent out of one account, the you may want to claim back tax on the office portion of your rent:

1. Credit $1000 Cash account,

2. Debit $600 Personal Rent account and

3. Debit £400 Office Rent account, considered a tax-deductible Expense account.

Sum of credits = Sum of debits, but now you can account for different tax treatments.


That’s two credit entries in the cash account: one for 600$ and one for 400$.

The fact that you have an equal amounts of entries in debit and credit accounts is literally the point of double entry bookkeeping. If you could use consolidated entry, it would be a nightmare to cross check when you are looking for errors. If you were using a ledger rather than a piece of software, it would be so much more obvious.


I disagree with this. This might be fair and technically correct on paper, but we don't use paper anymore. Transactions with more than two line items are by far the most common method of recording transactions. In fact, I'd probably go so far as to say that the method you suggest isn't used at all in practice, especially since most transactions need some sort of recording of sales tax.

In the example of $1000 paid in rent, the technically correct method is actually worse for usability. If $1000 left the bank account and two transactions totalling $1000 were recording, how can you match the ledger to the bank account? Or if there are bank charges paid on a transaction (Paid $1000 with $5 in bank charges).


> If $1000 left the bank account and two transactions totalling $1000 were recording, how can you match the ledger to the bank account?

The ledger already matches the bank account. You have 1000$ leaving it in two lines. Charges will likely be accounted separately anyway if they exist.

You probably mean the bank statement. If that’s the case, the answer is you do what is called reconciliation and sum the accounting entries. Reconciliation will be more complicated anyway because you will have entries in your accounting for a month which might be on a different bank statement entirely due to outstanding checks and deposits and bank processing delays.


I did mean bank statement, thank you.

I'm aware of how reconciliation works. I'm actually an accountant by trade. $1000 is a trivial transaction of course, but reconciliation becomes challenging when its thousands of transactions per month of differing amounts. If anything, transactions not matching the bank statement is a good way of increasing your audit fees as the auditor struggles to make sense of what your accounting system has recorded.


> I disagree with this. This might be fair and technically correct on paper, but we don't use paper anymore.

here's a simple case you may have encountered yourself: you order a shopping cart of a fair amount of stuff (not even that much) from Amazon, and click purchase. Later you're wondering about an Amazon charge on your credit card so you look in your emails from Amazon and you log into your account on Amazon, and you can't match the charges on your card with any of your shopping transactions with Amazon, the numbers bear no resemblance to one another. Amazon is not bookkeeping in a way that's at all useful to you. Since you are the consumer of the data, they're not fulfilling their accounting obligation which is clear presentation of the record.

I have no doubt that their calculations are correct, but just as computers can free us from the burden of adding up numbers correctly, computers can also do other tasks we find burdensome, like double entry bookkeeping. When as a programmer I used to resist writing code that seemed inelegant, my old boss used to remind me that the computer was the drudge, a mere servant to the whims of the various humans using it. If Amazon wants to rejigger your shopping carts with respect to backorders and shipping, they could easily do it in a way that allowed you to reconcile your statements simply.


This is indeed the right answer. I sometimes try to use simpler accounting mechanics than double entry (usually because the person I'm doing it for requests it) but it doesn't take long until I want to run a query against the data that becomes complicated under simpler systems but just falls out of the data under double entry.


Yes! I was both tech lead and EM on a multi billion dollar double entry accounting system for years. It was completely unnecessary and overall a drag to keep the double entry system. You end up inventing a ton of random accounting procedure to account for the “other side” of transactions that just don’t need another side. You invent accounts that do nothing and mean nothing just for scorekeeping. If you trust computers to do basic arithmetic and if you trust ACID databases, double entry accounting is outdated and unnecessary.


I'm not an accounting expert by any means but I've been around long enough to see far too many examples of single entry accounting systems that have gone completely off the rails and nobody knows why because meaningful data (i.e. "$M moved from X to Y on date Z by process P") is not captured and difficult or impossible to recreate.

Sure, computers can do basic math and ACID usually works out but that doesn't account for human-level errors. Subtle things like getting an idempotence check wrong can lead to cascading errors that are really hard to see and fix when you just have one view into the numbers.


What you're describing is the problems where you have zero entry counting. Single entry entails having a log.


Yup same exact problems you get with a double entry system just with twice the effort.


Double entry forces you to account for both sides of the transaction. Where did the money for groceries come from? Checking account. What the hell is this $200k spend? Office equipment. That money from Bob, was that a gift (income) or a loan (liability)?

So why not model exactly those account transfers? Because it's not always that simple. How do you translate this?

    CREDIT $ 1.10 Expenses: Coffee
    CREDIT $8.80 Assets: Gift Card
    DEBIT $10.00 Assets: Checking
You could say Checking -> Gift Card -> Coffee, or Checking -> {Gift Card, Coffee}. Does it actually matter? Probably not, so that's a pointless choice leading to false precision. If you did need to specify which one it was you'd put them in separate transactions (and you'd probably structure the actual spends from the assets accordingly).

Maybe contra accounts are an outdated concept. Ok, don't use them and directly reduce the balance of the account. You also don't need a separate account for every little thing, we certainly had misc accounts in every day of books I've seen. But you at least have to be able to say whether something is income, expense, asset, liability.


> Maybe contra accounts are an outdated concept.

for the readers, contra accounts keep track of expected adjustments, particularly "opposites", So when you sell items you also expect a percentage to be returned later by dissatisfied customers. If you book all sales revenues as they occur, that will show an "untrue" number, so you book expected returns into a contra account so you can see what your actual revenues are expected to be. Then later when you have accurate information on returns you use those values to unwind the expected values you put in.

Accounting is all about providing accurate information to various "stakeholders" who might be looking at the books.


Thanks! To be clear I didn't mean to imply that I think contra accounts are outdated, but I can certainly imagine people feeling that way.


None of this is mutually exclusive to a single entry system. Tracking where money is coming and going can be done any number of ways that is not double entry bookkeeping.

These are also examples of cash basis accounting which is much simpler. When you get into accrual basis and revenue recognition especially is where the double entry stuff (IMO) just starts to break down. Meaningless accounts get invented just for the sake of having something to balance against, and your entries are no longer tied to actual money changing hands.


*every set of books. Also s/8.80/8.90/, and my alignment's all messed up. That'll teach me to reply on mobile haha.


Can you tell me an example of an "other side" that isn't useful for any reason?

Edit: I'm an accountant and I can't think of an "other side" that isn't useful, hence my question


I would argue that, categorically, tracking the balances of external entities isn't useful or meaningful, at least for personal finance. (I don't know enough about business finance to form an opinion.)

I'm considering "external entities" here to mean accounts that aren't yours. A bank account or a credit card or a mortgage are yours, in the sense that it matters to you in some way what their balances are. Most expenses (by number of transactions, maybe not by total amount) are not that.

To offer a concrete example, I pay my ISP about $80 per month for an internet connection. Double entry accounting would have me move money into an "account" representing my ISP, so I can answer the question of how much money I've paid them over the whole time I've used them. That isn't a question I have ever needed to ask, nor do I expect to, but if I do, it would be answerable with a single query over a single-entry transaction list. Until then, the extra effort spent on double-entry accounting would be entirely wasted.

edit: I missed the context that the person you replied to was working on a very business-sounding accounting thing. I'll leave this here in case it inspires more relevant examples.


Double entry accounting doesn't require you to track expenses related to your ISP. All it requires is an expense account. Whether you decide to open sub-accounts in order to track some expenses specifically, it's entirely up to you.


Double entry accounting would have me move money into an "account" representing my ISP

Well, no, unless you account your ISP as some important contractor or a cofounder and have interest rates etc with them.

If it is just a simple expense, you do the following:

  debit: expenses / basic needs
  credit: bank / account
  sum: $80
This way you can see your expenses on an “expenses” account regardless of where they came from. No need to scan for multiple sources, because they all end up on a single account. This is a beauty of accounting, you define not how, but what. You bought a tv?

  debit: My stuff / tv
  credit: Bank / account
  sum: $1000
Your tv broke?

  debit: Expenses / Breakage
  credit: My stuff / tv
  sum: <a remaining cost of
        tv, depending on
        amortization scheme>
With single entry you either cannot do that, or have to scan all tables and invent a special field that represents type of an operation, in this case isExpense or shard tables by that criterion.


This requires you to know up front which expenses you want to track, though. If you don't, and you change your mind later, you get to do that table scan anyway, so you may as well actually record the metadata that makes it possible.

edit: I read what you're describing here as a single entry system if you just read "expense account" as "expense type"; double entry would be if you physically recorded each of those in two places. It's entirely possible we're arguing about semantics.


I don't care how much I'm spending at a particular restaurant[1], but I do care about how much I'm spending on food I cook myself vs eating out/ordering in so I've got Expenses:Groceries and Expenses:Eating Out. And sometimes batteries make it into my grocery bill because I was there and you know what, it's really not an issue for me.

You get to keep track of what matters to you and what doesn't, you can dump into Expenses:Misc

[1] others would, and so would have separate accounts for specific restaurants


> That isn't a question I have ever needed to ask, nor do I expect to, but if I do, it would be answerable with a single query over a single-entry transaction list.

How would you pick out just the transactions that were to your ISP? Unless you want to manually review the transaction log, you need something consistent you can refer to in your query: like an account name (or a transaction description, but that feels easier to accidentally be inconsistent with).


Transactions... have destinations? I may not be understanding your question.

My ISP has a consistent name over time, and my bank already stores and displays that on each transaction with no effort on my part.


Technically you could bunch up all payments to service providers under a "services" account, or just a "household expenses" account, or even a general "money gone" account.

However, I have often found that when I do that, inevitably someone asks, "so how much of our expenditures this year were for the internet connection?" and then it would have been really useful to have that ISP account.

But if you don't need it, don't have it.


Double entry accounting as a representation is a domain specific language for the people working in the field and as such is very useful.

However, you might ask, is it also the right primitives to express accounting IT systems or could we think of a better domain model, and then derive the double entry ledgers from that?

This is an important and profound question.

If you would like to dive in, I suggest looking at the REA (resources, events, agents) model, a set of abstractions and patterns for expressing accounting in business systems.

The Model-Driven Design Using Business Patterns book by Hruby et al. is a great starting point. [1][2]

Also, the POETS (Process-Oriented Event-driven Transaction System) research from DIKU (Copenhagen University) is super interesting, offering some ideas for next-generation ERP systems.[3]

[1] https://link.springer.com/book/10.1007/3-540-30327-2

[2] http://phruby.com/book/index.html

[3] Fritz Henglein, Ken Friis Larsen, Jakob Grue Simonsen, Christian Stefansen. POETS: Process-Oriented Event-driven Transaction System. Journal of Logic and Algebraic Programming (JLAP), Invited submission to special Issue on Contract-Oriented Software, 78(5):381-401, 2009.

Jesper Andersen, Ebbe Elsborg, Fritz Henglein, Jakob Grue Simonsen, Christian Stefansen. Compositional specification of commercial contracts. International Journal on Software Tools for Technology Transfer (STTT), 8(6):485-516, November 2006.

There are more papers from DIKU on this, see e.g. prof. Henglein’s publication list :

http://hjemmesider.diku.dk/~henglein/bib/author/Fritz.Hengle...


I don't understand why a 'tech lead' would have to invent an accounting procedure. Accounting procedures are the responsibility of accountants, not of engineers who lack basic training in accounting.


It also rings strange to me. Either this project had an accounting clusterfuck, or a company outsourced this to gp team which has not developed an intuition for how to make those loose ends tight.


What's a good daily accounting system then?

Would just a excel spreadsheet be good enough or a legit accounting software?


I'm a CPA and I recommend my extremely small businesses clients use a single entry excel system. If they use debit for everything they can download the bank transactions in csv. Then use a deep downlist to categorize the transactions. Then a pivot table to display the year end or quarterly income statement. I usually send them the Excel with the pivot table and dropdown list.


Ahhhh, right, my best-loved “we are drowning and have no idea why, can you look at our 40 xls and few html tables” type of client.

Excel and single-entry in general allows one to ignore questions about their financial structure, make decisions that lead to massive analytic information losses and bury a relatively good business in a deep grave of multiple “idk” levels of knowledge. They only become aware of it when it stops scaling (but competition does, for some reason) or a market goes down for a while (but competition doesn’t care, for some reason). Digging them out is a hard and tearful task.


This sounds fine for a contractor sending out one bill per month, but would you recommend it for a larger entity?

I couldn't fit all of the transactions in a given month into Excel for my business. There are more than 1m rows. We are only an SME.


the problem with being a larger entity is there may be legal requirements around your accounting system.

In many EU countries, if your turnover (total amount of money flowing through your business) is over a certain amount, or if you are incorporated (rather than sole proprietor) you have a legal requirement for double-entry accounting, and in some places a legal requirement to have an external firm do your accounting.


Excel PowerBI would easily handle millions of transactions, but it's arguably a completely different product hidden inside an excel menu.


Yes, but once you are using Power BI you have lost the friendly interface the op described for categorising transactions, ie it is not a simple spreadseet any more.


You end up inventing a ton of random accounting procedure to account for the “other side” of transactions that just don’t need another side

If you aren’t talking about turnover-only sub accounts, I’d like to learn some good examples of it.


Can you be more specific? I'v been working with accounting systems for some time also and there are no transactions in double entry accounting which "just don't need the other side".


You could also have a db view that returns a virtual double entry version, as a test that it passes muster with that. This checks for programmatic errors causing money to appear or disappear.


Do you trust humans to do data entry properly?


"does that mean double entry is no longer as important as it once was?"

What are the alternatives? Sure, you could do single entry accounting (making an entry corresponding to each cash movement, but then you'd need a separate system to keep track of

- money the business owes

- money the business is owed

- inventory

- other assets

I don't know much of the history, but I can say:

- I've found it helpful to compare to look at the income statement alongside the opening and closing balance sheets. I've even found errors this way.

- AFAIK all business accounting systems are based on double-entry accounting, so the existence of these systems can't obviate the need for double-entry accounting.

If you have a cash business where you hold almost no inventory, e.g. if you're a baker who buys flour at the beginning of each day, and close your shop when you've sold out of bread, you might not care about tracking assets, accounts payable etc.


Even in an SME I would also need a system for accruals and prepayments as well.

Simple example

I need to know my profit this month. I have added up my cashbook for the month and it contains an entry for 3 months of rent in advance for my office. It is September and that is the rent for October, November, December. How do I get it out of my profit calculation for September and split into the correct months? This is important, my bonus is based on profit. My bank loan covenants are based on profit. My equity split with my investors is too, as is my tax payable. In double entry I would move this into my prepayments account and move it back in 3 tranches.


REA accounting is one of the alternatives [1]. It is used in some managerial accounting systems. I would imagine you could make it generate a set of double entry records to make regulating authorities for financial accounting happy, but you'd have to extend it a bit to add the unnecessary properties.

[1] https://en.wikipedia.org/wiki/Resources,_Events,_Agents


> regulating agencies for accounting happy

That is not really what the accounting standards are for. The people that need to be kept happy are the users of the accounts. The standards are there to stop me misleading, or defrauding them.

Here is a list of some users of my accounts:

Managers: need to know how their business unit is performing so they can take action

Shareholders: need to know how the directors are managing their money

Banks: I borrow money from them, and they want to see that I can pay it back

Tax authorities: I collect sales tax for them. I collect payroll taxes for them. I have to pay taxes on my profit

Creditors: I need suppliers to advance me credit. They need to work out the risk of giving it to me.

Employees: before I joined the company I wanted to know it was solvent

Imagine how I could manipulate them if there wasn't a standard way of communicating the accounts.


I think the biggest and also least attributable benefit of it was it enabled the Venicians of Venice (iirc?) to create money, outside of what hard currency allowed at a time and with it opened the world of financing.

By create money I mean the same way your bank today creates money anytime it finds a willing and credit worthy borrower.

Double entry book keeping basically invented the concept of ledger money which is pretty much the “money” we use today. It enabled elasticity of the money supply where elasticity was lacking.


The importance is in the "accountability" of accounting. By forcing each entry to cross accounts, you make each account reconcilable with the others. "Books" are no longer independent because they can be cross-checked. Where books are departments that makes departments responsible for justifying each entry in a way that is visible across accounts, to the cent. It's a validation layer. With double entry you can't cook just one book, you have to cook all the books.


Can I give an example to extend your comment.

I have a remote shop that takes cash and credit card payments. If i just ran a cash book like some on here are suggesting how would I know my sales for a day? I could wait until the money hits my bank account and categorise it, but then how much of that money is sales tax not sales? How much did the goods they sold cost me? Did they put all of the cash in the bank or did they steal some. Did the credit card merchant pay me everything due?

Imagine the customers have credit terms with you? Now when do you know your sales, when they pay? What if they don't pay?

Double entry has answers to all of those questions.


This is what is sold in theory. Practice is wildly different. Reconciling across departments looks absolutely nothing like what you’ve described and does not go to the cent or even close. As long as in you’re in the ballpark of reconciling and can reasonably explain the sql queries and reports that got you to a number within an okay range of error you’re good to go.


This is absolutely not my experience at all. Books that don’t balance to the cent suggest a problem that needs to be resolved.

Electronic books that don’t balance to the cent are defective.

I’ve certainly seen lax accounting and reconciliation practices in businesses such as those you describe but it’s absolutely not been the norm in my experience.


> Books that don’t balance to the cent

Individual books, yes (though I am still very dubious of the value in doing this given the guarantees that modern computers/databases offer). I'm talking specifically about cross-department reconciliation where different departments are keeping their own books and have their own data pipelines/etc. They absolutely still have to be reconciled, but there is no expectation of an exact match from the SEC or internal/external auditors.


I agree, mostly. You have to understand the implications of a few cents' difference. One cent (or even one dollar) could be the effect of rounding. Or it could be a single typo. Or it could be multiple errors involving larger transactions with opposite signs.


you get different amounts of money coming in at different times (investors, loans, revenue from sales) and you have different amounts of money flowing out at different times (paying workers, paying for supplies, equipment...)

double entry bookkeeping not only "checksums" these quantities for errors, but also gives you different snapshots of your business, how much money do you owe in the short term, how much in the long term, on average what's the profit margin, how much tax do you owe this year.

other people can also look at your accounts and check up on random sample pieces of information to ensure it's not all made up.

It creates a clear picture where the raw data is somewhat murky, which enhances trust on many levels.


I think there is more to it than meets the eye perhaps.

It is the way to understand human activity as a set of transfers beween accounts. All the money must go somewhere, perhaps spent perhaps saved in a different currency. All these different types of transactions including startup of the business that occur within can all be modeled with the "simple" concept of 2-entry system. It is a general way to track human co-operation numerically.


The kind of errors that double-entry accounting prevents aren't just arithmetic errors, but also conceptual errors. Double-entry accounting ensures that the accounting identity, which states that Assets = Liabilities + Equity, is true at all times, and it does that by requiring that all individual transactions are balanced.


It allowed people to be quantified with a single number, 'he owes X amount of dollars', 'he has X amount of dollars'.

During the dark ages, and early middle ages, people didn't have much money. Instead there were complex relationships based on obligations 'loans', IOUs, real estate transactions to hide usury, dozens of different currencies with different exchange rates. Determining wealth was a complex affair.

On a completely different tangent, Leonardo da Vinci probably illustrated the first book about double entry book keeping. He was interested in math and knew the author, most likely traded his artistic skills for math lessons.


In terms of error detection, one of the principal tools in double entry is the Trial Balance. A trial balance lists all of your accounts in your ledger, with debits and credits in opposing columns, sums them all, and the two columns totals should match. If they do then all entries are at least complete. If they don't then you have lost records along the way. By correctly assigning debit or credit normal to each account type you ensure there is always a credit for every debit and vice versa.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: