GnuCash

 is a free and open-source personal and small-business financial accounting software. GnuCash allows you to track bank accounts, stocks, income and expenses. Double-entry accounting is utilized to ensure balanced books and accurate reports. GnuCash's data file format is fully open and the data is stored in either a XML file format (default) or SQL database.

GnuCash has versions that run on Windows, macOS, and many different flavors of Linux and BSD.

History
Programming on GnuCash began in 1997, and its first stable release was in 1998. Small Business Accounting was added in 2001. A Mac installer became available in 2004. A Windows port was released in 2007.

In May 2012, the development of GnuCash for Android was announced. This is an expense-tracking companion app for GnuCash, as opposed to a stand-alone accounting package.

Main features
Some of the numerous features that GnuCash has to offer to its users are:
 * Double Entry Accounting, every transaction must debit one account and credit others by an equal amount. This ensures the books balance: the difference between income and expenses exactly equals the sum of assets and liabilities.
 * Checkbook-style register, including split transactions, autofill and the ability to mark a transaction cleared or reconciled
 * Scheduled Transactions
 * Reports, Graphs. an integrated module to display graphs of your financial data in the form of: Barcharts; Piecharts; and Scatter plots. GnuCash also comes complete with a full suite of standard and customizeable reports, such as: Balance Sheet; Profit & Loss; Portfolio Valuation and many others.
 * Statement Reconciliation which allows the user to compare the transactions entered in an account against a bank statement.
 * Stock, Bond, Mutual fund Accounts
 * Small-Business Accounting
 * Quicken Interchange Format (QIF) and Open Financial Exchange (OFX) import, if you are migrating from other financial software, GnuCash can import Intuit® Quicken® QIF files using a practical assistant.

Quicken to GnuCash conversion
Quicken is a commercial personal finance management program. This section describes how Quicken owners can import their existing data into GnuCash.

The following are steps recorded while converting an existing Quicken 2016 file (with a 20-year history) into GnuCash such that the account hierarchy and account history is transferred from Quicken to GnuCash. It is possible that these steps may not be applicable to everyone (depending on how one used Quicken in the past). If you find any information that is inaccurate, or if you have new information, please provide feedback in the "Help improve this page" form at the bottom of the page (not available in mobile view) or post a suggestion in this.

Before you start
Before you start, it might be good to learn about GnuCash and its accounting philosophy (double entry accounting). The GnuCash Tutorial and Concepts Guide is a great resource to start.
 * The key concept to digest is the fact that everything is an account in GnuCash, and every transaction is a transfer from one account to another. For example, if you spent $100 on clothes, it is recorded as a transfer from your credit card account to the Expenses/Clothing account. Similarly, a paycheck is a transfer from your "Income/Salary" account to other accounts specified on your paycheck.

Preparations for conversion
On the Quicken end, it is strongly recommended that you save a copy of your QDF file ("Save a copy as ..." option) and use that copy as the source for your conversion. Make sure to not run any updates (including Quote Updates) on that QDF copy. This is a good way to ensure that you don't accidentally update your QDF source file during the whole conversion process. If you update the QDF file before completing the conversion, you will no way to check if the account balances and transactions match between Quicken and GnuCash.

As of 11/2017, the GnuCash QIF importer doesn't handle the following correctly and must be fixed in Quicken first:
 * If the input QIF file has stock option transactions such as vest, expire, exercise etc., the QIF importer errors out with an exception. The workaround would be to modify the account in question to remove these transactions and convert them to "regular" stock transactions like sold, bought etc., It may look a bit weird, because you are buying stock out of thin air (your cash balance will be negative after the bought transaction), but in the end it works out (cash balance becomes postive after the stock is sold off at a profit).

GnuCash can imports Quicken data using the QIF format. In order to ensure that you have everything (including categories and payees) in your Quicken account exported, use the "File->File Export->QIF File ..." menu in Quicken and ensure that: An example is shown below:
 * Everything is checked under "Include in Export" box.
 * "All Accounts" is selected in the "Quicken Account to Export From" box.
 * The date range covers your entire history on Quicken.



The saved QIF file can be used for GnuCash import.

Conversion
The following are steps that worked for me. The conversion wizard may take a different path depending on your individual situation and account types -- use your best judgement on such cases: The account balances and net-worth shown by GnuCash is unlikely to be correct (likely won't match Quicken balances and net-worth). Go over the post conversion notes to fix issues with the import.
 * Open GnuCash, create a new file ("File -> New File"), and cancel the "New Account Hierarchy Setup" wizard.
 * Select "File -> Import -> Import QIF" and click "Forward" on the wizard.
 * In the next screen, select the QIF file that was exported from Quicken and click "Forward".
 * Click "Start". The converter would start parsing transactions from the QIF file. Keep monitoring the textbox beneath for any warnings. No warnings means your input file is good. Otherwise, you might need to adjust the source Quicken data file in such a way to make the warnings go away (one example was the stock option exercise/vest transactions that was pointed out in the previous section). Click "Forward" once the processing is complete.
 * In the next two screens, Quicken will show account names for each individual account and category in the incoming Quicken file. Check if everything is OK and click "Forward".
 * GnuCash will also call out uncategorized transactions and will request you to find the matching GnuCash account names (i.e., "categories" in Quicken). Fix as needed.
 * Select "USD" for currency and click "Forward".
 * In the next few screens, GnuCash will ask you to enter information about all tradeable securities it found in the Quicken file. Just make sure that the name, ticker symbol and exchange (NYSE, NASDAQ, FUND ...) are correct and fix if incorrect. This will be useful once we start auto-updating quotes.
 * Note: This may take a while depending on how many securities are there in your Quicken account.
 * In the final dialog that comes up after all securities are entered, you can either choose to leave everything at default, or go over the options and change anything as needed.
 * Finally, you will see a "QIF Import" dialog with a "Start Import" button. Click to start importing.
 * This is the core part of the conversion process where GnuCash will create new accounts and try to match transactions across accounts. This may take a while depending on the length of your Quicken history.
 * Click "Apply" once the process is done. This will conclude the import Wizard.

Troubleshooting
If in any step above, the QIF importer abruptly fails or crashes, one option to proceed would be to enable tracing and running GnuCash in "debug" mode (which generates copious amounts of helpful logging information. See Tracefile - GnuCash for more information about tracefile logging and locations.

Post-conversion notes
Due to yet unresolved issues with the QIF importer (as of 11/2017), the following post-conversion actions may be necessary (these are what I found, there may be more depending on the complexity and length of your Quicken history).
 * If the input QIF file has stock option transactions such as vest, expire, exercise etc., the QIF importer errors out with an exception. The workaround would be to modify the account in question to remove these transactions and convert them to "regular" stock transactions like sold, bought etc., It may look a bit weird, because you are buying stock out of thin air (your cash balance will be negative after the bought transaction), but in the end it works out (cash balance becomes positive after the stock is sold off at a profit).
 * QIF importer doesn't handle "Empty-ish" paychecks correctly. These are paychecks where the entire incoming salary is transferred out to other accounts (via paycheck deductions) such that there is no balance left to deposit into the primary checking account which has the paycheck transactions recorded. For such paychecks, the QIF importer completely reverses the direction of all the split transactions in the paycheck. These need to be fixed post import.
 * These errors are actually easy to detect. We just need to look at the "Salary" ledger and review any items in the "Charge" column. Ideally, all the items in the "Salary" account's ledger must be in the "Income" column. Identify any transactions in the "Charge" column and fix them on a case-by-case basis.
 * Load accounts are incorrectly initialized. Ideally, the House "Asset" account must have the transfers from the bank (for down payment), and from the Mortgage Loan account (for the loan amount). At the end of import, in the "Loan" accounts ledger the loan's initial balance is categorized as "Retained Earnings" which doesn't make any sense at all. Fix the initialization to match the ideal expectation of initializing a house purchase and mortgage loan.
 * At the end of import, the prices of all imported securities will be $0. This will cause a big difference between the Quicken and the GnuCash balance. Go to each security, find the corresponding price in Quicken and do a manual update of the price in GnuCash.
 * At this point, all account balances between Quicken and GnuCash would match unless there is another problem that isn't covered by the above.
 * One more weird thing I noticed that needed fixing was the fact that all "investor" -> "admiral" share conversions were handled by transfers into "Equity::Retained Earnings" account. Per GnuCash convention, the "Equity::Retained Earnings" account is used to record account opening balances (i.e., balances that existed before starting GnuCash accounting and had no history). The "sale" of the investor shares were recorded as direct share transfer (without a price) while the "purchase" of the admiral shares were recorded as "buy" transactions (with an associated price) with the Equity::Retained Earnings account as the source of funds. This caused an imbalance in the final Equity::Retained Earnings balance.
 * There are multiple ways to fix this. For simplicity, since I don't care about the cost basis of these shares (they are in retirement accounts), I simply deleted the existing transactions that recorded the conversion and used a single "sell" transaction in the investor share account and a single "buy" transaction in the admiral share account (the prices should be available in the transaction history provided by the custodian). Once I was done with this, the "Equity::Retained Earnings" account had a very small final balance that only reflected the account opening balances for accounts that were open prior to starting any kind of Quicken/MS Money/GnuCash accounting.

Account organization
Once import is complete, it may be worth spending some time to organize accounts into an account hierarchy. First, decide on what account hierarchy makes sense in your case. The following is one example:
 * Assets
 * Real Estate
 * House
 * Investments
 * Retirement
 * Taxable
 * 529
 * Banking
 * Checking
 * Bank of America
 * Savings
 * Ally Bank
 * Credit Cards
 * American Express
 * Equity (GnuCash creates this automatically).
 * Expenses
 * Bills
 * Dining Out
 * Income
 * Salary
 * Dividends
 * Capital Gains
 * Loans
 * Mortgage
 * Mortgage

Then, start creating accounts at each level matching the hierarchy (note: everything is an account is GnuCash). Once the top-level accounts are created, right-click on the top-level account, select "New Account ...", fill in the details for the account and save it. You can also move existing accounts imported from Quicken, by right-clicking on them, selecting "Edit Account" and then choosing an appropriate parent account in the account hierarchy. The account hierarchy can be modified any number of time without any side-effects.

One more thing to ensure when organizing accounts would be to make sure all accounts are of correct type (refer to the GnuCash tutorial for types and descriptions).