I sat down and played with gnucash a bit. I'm not super-impressed at gnucash's interface, but the basic ideas of double-entry bookkeeping are beginning to sink in, and they're arrestingly simple and beautiful. I can, just to take a really mundane but surprisingly nontrivial example, have four separate concepts of "My Checking Account", "Money I owe to my housemate who actually pays the landlady", "Rent I fundamentally owe right now" and "Rent expenses I have incurred", and use them to track subtle shifts in my financial obligation to various parties. A complete monthly cycle would look like
|Checking||Housemate||Rent Owed||Rent Expense||||5000||0||0||0||||5000||0||-500||500||||5000||-500||0||500||||4500||0||0||500|
Here I'm listing states ("balances") of accounts rather than transactions. The practice of double-entry itself is just a handy way to maintain the invariant that the sum of all accounts everywhere doesn't change, because every transaction is required to be an increment of one cell and an equal decrement of another.
The transaction → ($500 from "Rent Owed" to "Rent Expense") is the realization that it's the first of the month, and that I owe rent
The transaction → ($500 from "Housemate" to "Rent Owed") is my housemate paying rent, and something I can note down when he emails me saying so; it's only as of now he expects me to pay him money, and my share of the obligation to pay money to the landlady is discharged.
The transaction → ($500 from "Checking" to "Housemate") is me actually writing him a check
The funny thing is generally interpreting this system — which is ultimately just a time-varying vector v in Zn whose sum happens to always be zero.
A simple statement of it that I find appealing is any entry in v is simply tracking how much of my money is in a particular place. Some places happen to be sort of abstract-seeming, like "Rent Expense". I find it helpful to actually imagine a big pile of my money somewhere in a deep pit, with a sign above it, saying "Rent". It's my money, but it's lost down a pit now, forever. Conversely when you make income, you make up accounts like (in my case) "Stipend" or "Interest" or the like, which then wind up holding a huge negative number. I thought this was really counterintuitive for a while, but then I noticed they were dual to the lost-forever money pits that expense accounts like "Rent" and "Food" and "Books" are. An income account is a location you pull money out of that never demands it back! Almost as if it were an infinite but renormalized pile of money that's been mine all along, but I only pull money out of it when I actually earn it.
Hmm, maybe that doesn't make anything more clear after all... Somehow it all feels like it makes sense to me.
Where all the descriptions of accounting I can find on the web mumble around about "The Accounting Equation" it seems like you really only are designating a certain set of accounts (Assets, Liabilities, etc.) as "internal", representing people that actually want to be paid back or whom you can count on to pay you, and everything else (Income, Expenses) are by default then "external", irrecoverable-money-pits and their dual, apathetic virtual creditors, a record of how everything in the "internal" accounts came to be that way.