Comprehensive tutorial on double-entry personal finance?
I had to implement a simplistic double-entry accounting system, and compiled a list of resources. Some of them are more helpful than others, but I'll share them all with you. Hope this helps! Simplifying accounting principles for computer scientists: http://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html See this excellent article on how Debits and Credits work: http://accountinginfo.com/study/je/je-01.htm See this article for an example Chart of Accounts with lots of helpful descriptions: http://www.netmba.com/accounting/fin/accounts/chart/ Excellent PDF by Martin Fowler on Accounting Patterns using an event-drive system: http://www.martinfowler.com/apsupp/accounting.pdf Additional useful resources by Martin Fowler: http://martinfowler.com/articles.html#ap Ideas on using Domain-Driven-Design (DDD): https://stackoverflow.com/questions/5482929/how-to-use-object-oriented-programming-with-hibernate Double Entry Accounting in Relational Databases: http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html Double Entry Accounting in Rails: http://www.cuppadev.co.uk/dev/double-entry-accounting-in-rails/ Joda-Money: http://joda-money.sourceforge.net/ Joda-Money Notes: http://joda-money.svn.sourceforge.net/viewvc/joda-money/JodaMoney/trunk/Notes.txt?revision=75&view=markup Blog entry with good comments: http://www.jroller.com/scolebourne/entry/joda_money Related Blog Entry: http://www.jroller.com/scolebourne/entry/serialization_shared_delegates JMoney: http://jmoney.sourceforge.net/wiki/index.php/Main_Page JMoney QIF Plugin: http://jmoney.sourceforge.net/wiki/index.php/Qif_plug-in Ledger on GitHub: https://github.com/jwiegley/ledger/tree/master/src/ Implementing Money class in Java: http://www.objectivelogic.com/resources/Java%20and%20Monetary%20Data/Java%20and%20Monetary%20Data.pdf  Martin Fowler's implementation in Patterns of Enterprise Application Architecture page 489, View partial content in Google Books: http://books.google.com/books?id=FyWZt5DdvFkC&printsec=frontcover&dq=Patterns+of+Enterprise+Application+Architecture&source=bl&ots=eEFp4xYydA&sig=96x5ER64m5ryiLnWOgGMKgAsDnw&hl=en&ei=Kr_wTP6UFJCynweEpajyCg&sa=X&oi=book_result&ct=result&resnum=7&ved=0CEQQ6AEwBg#v=onepage&q&f=false XML based API for an accounting service, might get some ideas from it: http://www.objacct.com/Platform.aspx The GnuCash tutorial has some basics on double entry accounting:  http://www.gnucash.org/docs/v1.8/C/gnucash-guide/basics_accounting1.html#basics_accountingdouble2 I found this book to be pretty decent: It is a workbook, and full of little exercises.
In order to run your business successfully, you need to manage your finances. At Nowsoft, we offer comprehensive accounting services and targeted financial advice. As an experienced small business accounting firm we are qualified to deliver and manage your accounts and finance efficiently. Our team of business and finance advisors works with businesses of all sizes, offering a range of accounting services. Visit us: https://webdevelopment.wistia.com/medias/xbxf1lxtas I'm not familiar with Gnucash, but I can discuss double-entry bookkeeping in general. I think the typical solution to something like this is to create an Asset account for what this other person owes you. This represents the money that he owes you. It's an Accounts Receivable. Method 1: Do you have/need separate accounts for each company that you are paying for this person? Do you need to record where the money is going? If not, then all you need is: When you pay a bill, you credit (subtract from) Checking and debit (add to) Friend Account. When he pays you, you credit (subtract from) Friend Account and debit (add to) Checking. That is, when you pay a bill for your friend you are turning one asset, cash, into a different kind of asset, receivable. When he pays you, you are doing the reverse. There's no need to create a new account each time you pay a bill. Just keep a rolling balance on this My Friend account. It's like a credit card: you don't get a new card each time you make a purchase, you just add to the balance. When you make a payment, you subtract from the balance. Method 2: If you need to record where the money is going, then you'd have to create accounts for each of the companies that you pay bills to. These would be Expense accounts.  Then you'd need to create two accounts for your friend: An Asset account for the money he owes you, and an Income account for the stream of money coming in. So when you pay a bill, you'd credit Checking, debit My Friend Owes Me, credit the company expense account, and debit the Money from My Friend income account.  When he repays you, you'd credit My Friend Owes Me and debit Checking. You don't change the income or expense accounts. Method 3: You could enter bills when they're received as a liability and then eliminate the liability when you pay them. This is probably more work than you want to go to. No. There are no short cuts to pretend you know something even though you never used it.  It's like saying you are truck driver by reading a book on how to drive trucks.  Find an entry level job in accounting/finance, and hopefully it will be using SAP. Even better: take training about how to use SAP for finance, in a school that uses SAP for hands-on training. I doubt it's easy to find such training. I would say when starting with Gnucash to start with the level of granularity you are comfortable with while sticking to the double entry bookkeeping practices. So going through each one: Refund for Parking Pass. Assuming you treat the Parking Pass as a sunk cost, i.e. an Expense account, its just a negative entry in the Expense account which turns into a positive one in your Bank account. Yes it may look weird, and if you don't like it you can always 'pay from Equity' the prior month, or your Bank Account if you're backfilling old statements. Selling physical items. If you sold it on eBay and the value is high enough you'll get tax forms indicating you've earned x. Even if its small or not done via eBay, treat it the same way and create a 'Personal Items/Goods' Income account to track all of it. So the money you get in your Bank account would have come from there. Found jacket money would be an Equity entry, either Opening Balances into Cash or Bank account. Remember you are treating Equity / Opening Balances as the state before you started recording every transaction so both the value going into Assets (Banks,Stock,Mutual Funds) and Liabilities (Mortgage, Student Debt, Credit Card Debt) originate from there. In Houston, Texas USA where I went to a private high school they had a half-semester class in personal finance, but it was optional and didn't give you any credits towards graduation. You are right though, it should be a standard class. After all, who doesn't need that information in their adult lives, and not everyone goes to college. "There is a site that treats you like a fund manager in the real market, Marketoracy, http://marketocracy.com/. Each user is given 1 million in cash. You can have multiple ""mutual funds"", and the site allows use to choose between two types of strategies, buy/sell, short/cover. Currently, options are not supported. The real value of the site is that users are ranked against each other (of course, you can op out of the rankings). This is really cool because you can determine the real worth of your returns compared to the rest of investors across the site. A couple years back, the top 100 investors were invited to come on as real mutual fund managers - so the competition is legitimate. Take a look at the site, it's definitely worth a try. Were there other great sites you looked at?" Aswath Damodaran's [Investment Valuation 3rd edition](http://www.amazon.com/Investment-Valuation-Techniques-Determining-University/dp/1118130731/ref=sr_1_12?ie=UTF8&amp;qid=1339995852&amp;sr=8-12&amp;keywords=aswath+damodaran) (or save money and go with a used copy of the [2nd edition](http://www.amazon.com/gp/offer-listing/0471414905/ref=dp_olp_used?ie=UTF8&amp;condition=used))  He's a professor at Stern School of Business. His [website](http://pages.stern.nyu.edu/~adamodar/) and [blog](http://aswathdamodaran.blogspot.com/) are good resources as well. [Here is his support page](http://pages.stern.nyu.edu/~adamodar/New_Home_Page/Inv3ed.htm) for his Investment Valuation text. It includes chapter summaries, slides, ect. If you're interested in buying the text you can get an idea of what's in it by checking that site out. "There's plenty of advice out there about how to set up a budget or track your expenses or ""pay yourself first"". This is all great advice but sometimes the hardest part is just getting in the right frugal mindset. Here's a couple tricks on how I did it.  Put yourself through a ""budget fire drill"" If you've never set a budget for yourself, you don't necessarily need to do that here... just live as though you had lost your job and savings through some imaginary catastrophe and live on the bare minimum for at least a month. Treat every dollar as though you only had a few left. Clip coupons, stop dining out, eat rice and beans, bike or car pool to work... whatever means possible to cut costs. If you're really into it, you can cancel your cable/Netflix/wine of the month bills and see how much you really miss them. This exercise will get you used to resisting impulse buys and train you to live through an actual financial disaster. There's also a bit of a game element here in that you can shoot for a ""high score""... the difference between the monthly expenditures for your fire drill and the previous month.   Understand the power of compound interest. Sit down with Excel and run some numbers for how your net worth will change long term if you saved more and paid down debt sooner. It will give you some realistic sense of the power of compound interest in terms that relate to your specific situation. Start simple... pick your top 10 recent non-essential purchases and calculate how much that would be worth if you had invested that money in the stock market earning 8% over the next thirty years. Then visualize your present self sneaking up to your future self and stealing that much money right out of your own wallet.  When I did that, it really resonated with me and made me think about how every dollar I spent on something non-essential was a kick to the crotch of poor old future me."