(“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.)
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.
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.
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.
Edit: I'm an accountant and I can't think of an "other side" that isn't useful, hence my question
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...
Would just a excel spreadsheet be good enough or a legit accounting software?
If you aren’t talking about turnover-only sub accounts, I’d like to learn some good examples of it.
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.
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.
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.
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.
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.
Edit: Wikipedia has articles for this word in Swedish, Danish and German. But no other languages. Puzzling.
It's kontieren in German, and probably from latin "conto".
The important part is that every unit of resource comes from somewhere and goes to somewhere. As long as you fulfill that property, you get powerful querying capabilities.
Most recently I've used it to compare various means of acquiring more RAM for an operation (cloud offerings, incremental purchase, leasing large amounts, etc). One of the other benefits is that I can mix both "terabytes of memory" and "thousands of euros" in the same book, and exchange rates between the two also fall out of the equations.
The trouble is ingesting transactions. You do your best—save receipts, try to note things in your phone. Then some auto-pay thing blindsides you. Or, that separate tip charge from Uber Eats. Yes, you can capture all of these things, but it will require hours of weekly time investment to counteract financial entropy.
I ended up just buying Banktivity. I do miss the perfection offered by plain text accounting. I miss nothing now because they’ve contracted with teams that write scrapers and API clients for banks I would have otherwise had to write myself. Reconciliation is now the work of minutes. It’s not perfect, but everything is a tradeoff.
In the normal course I try to update my GnuCash once a week, which takes about half an hour on a Sunday. However I've been quite bad lately and today I'll be trying to input over a month of transactions which I'm not looking forward to...
Now two years later I’m porting my details into Beancount (the tool whose documentation is linked), and I’ve changed my approach to one that seems much more sustainable: once a month, download statements and enter them in with some templates to assist. Maybe I use a CSV parser for credit cards and other high-frequency accounts, but for what I want out of plaintext accounting, I don’t need hours of weekly time to keep decent finances, but perhaps an evening a month.
If you don’t mind me asking, what’s your use case or motivation for having sub-weekly updates to your financial picture?
I think they confused debit/credit here.
By convention:
- Asset & Equity accounts are increased by Debits, decreased by Credits.
- Liabilities, Expenses & Income are increased by Credits, decreased by Debits.
Whichever convention you choose, consider that an Asset account like cash (Current Account) has to be funded from somewhere: either from a Owner Equity (investment in the business) or a Liability like a loan, so funds will flow from Equity -> Cash, i.e. credit Equity & debit Cash. To repay the loan, the flow is reversed: Cash -> Loan, i.e. credit Cash & debit Loan.
Thus holds the accounting equation that:
Assets = Liabilities + Equity
(I build double-entry accounting ledgers for a living.)I'm curious how folks using a generic SQL or document database solve this.
edit: Wrong thread, sharding.
Ideally, I'd love a tool that lets me import data from my credit card and/or bank accounts through something like Plaid rather than having to manually enter every transaction I make.
I'm not aware of any SMB finance software that will, for example:
- Know whether to post a transaction as COGS, OpEx, or CapEx.
- Be able to decide if a transaction should be journals across a 24 month period or taken in a single hit.
- Judge the length of depreciation for a particular piece of plant
- Attribute unclear bank receipts to due invoices for reconciliation.
That's just a handful of examples. The software ENABLES the finance team to make their decisions and provides them intelligence, but they still do a huge amount of the decision making. The decisions bookkeepers and accountants are taken are largely individual business specific, and based on the accounting principles of that business.
Frankly if the decisions are taken well and the software is good, then the tax element can become one of the easiest components where the computer CAN just get on with it, along with the tax specialists
Mostly what I see is that an in house accountant does the books and an external accountant does the tax. But that might not be the case in all jurisdictions.
All of that said, I’ve seen a lot of P&Ls and balance sheets over the years and most of them are so overcomplicated that it’s difficult to understand the business fundamentals. I’m not sure if that’s because accountants make things complicated, but I suspect it’s because accountants aren’t asked to be involved when they should be.