GnuCash is a powerful financial-accounting app that is designed to help you with all manner of financial related tasks. The app can be used to keep track of all your financial operations from your bank accounts, stocks and other income and expenses.
GnuCash supports databases including PostgreSQL, SQLite3 and MySQL (backend XML). Note, the default storage is a gzipped XML file and that using a SQL database instead is optional. Note, the default storage is a gzipped XML file and that using a SQL database instead is optional. In addition the GnuCash for Mac app bundle supports only SQLite3 out-of-the-box; users of MySQL or Postgresql will have to build and install a dbd driver.
Key Features include:
- Double entry accounting.
- Online banking support.
- Multiple currency support.
- Checkbook style registry.
- Reporting tools.
- Mutual fund and stock portfolios.
- Income and expense account management.
- HBCI support.
- General accounting ledgers.
- Vendor and customer tracking.
- OFX and QIF support.
- Statement reconciliations.
- Bill payments and invoicing.
GnuCash has been designed to be easy to use, flexible and powerful. It feels quick and intuitive to use and has a solid base around professional accounting principles, therefore it is able to provide balanced books and accurate reports.
Overall, GnuCash is well presented and contains a diverse array of accounting features such as multiple currency support, double entry accounting and invoicing. On the downside, the integrations with tax software comes up short, however it can support some online banking services.
Test Report System - Report Definition.
Can't compile with -DWITH_GNUCASH=NO due to scm-gnome-utils.
Scroll Bar in Reconcile Window Floats in and covers the check boxes.
Datepicker broken in Persian. GnuCash passes dates as integer y/m/d without using locale-specific formats, so we need to strip out 'E' and 'O' from the format when scanning dates or determining separators in gnc-date. None of '-', 'E', or 'O' are supported by boost (and '-' causes errors), so strip them out from formatters in gnc-datetime as well.
Have problems input Chinese.
QIF importer causes application crash if action is invalid.
Invalid date on price stops file from being parsed.
Special variable "i" not parsed in function calls. Due to balance tests with insane random values.
Impossible to Edit Budget Unless Maximized.
Credit card payment after reconciliation.
Backslash '\' in Description field spoils CSV Import without helpful error message.
When read only threshold set, dates are silently changed. Display a message box informing the user of the change.
Cannot store change to Business Suppliers data.
Repeatable Crash in Tax Report Options.
Tax Schedule Report - An error occurred while running the report.
Reconcile Selection Doesn't Work Anymore.
Connecting 3.1 to an existing mysql db drops all data. Provide a backup recovery function that instead of dropping primaries and restoring backups merges the primaries and backups. This should handle a worst-case safe-save failure where the backup tables don't have a complete set of rows for some reason.
Main Window stays hidden when starting after closing main window while minimized.
Notes lost or perhaps just not displaying when using SQLite backend. This bug caused data loss if you saved your SQLite3 database to a different file or database. The problem is that in SQLite3 (though not in MySQL or PgSQL) the subquery ((SELECT DISTINCT guid FROM transactions)) (note the double parentheses) returns only the first guid in the subquery's results. Some transactions are loaded by special queries and those queries are also used to retrieve the transaction's slots so they weren't affected.
Restrict accelerator keys to valid date range.
Incorrect Current Value for Stocks. Missed calculating the value in the register summary bar.
Cannot Input Chinese, seems does not work with other IME too. Toggles not in view with all rows selected weren't being redrawn.
Csv import: iostream error. Unfortunately it turns out that we can't use filestreams because they can't take path arguments containing Unicode on Windows.
Invalid currency on scheduled transactions.
Don't even check for price/exchange rate on template transactions, there's no point.
Check all split commodities are valid, abort transaction creation if not.
If the template transaction's currency isn't used by any of the splits set the new transaction's currency to the first-found currency if there is one, otherwise to the first-found commodity.
Transaction Report cannot sort by "num".
QIF import incorrectly converts unicode characters from UTF8 encoded file.
QIF Import Select Account button to add a new account is labled gnc-account-new but should be New.
Stock split cash-in-lieu income/asset labels backwards.
Reconciliation report contains incorrect transactions.
Configuration not properly saved for CSV transactions import form.
Fixes and improvemts:
Transaction report improvements -
Performance: Do all filtering ops before sorting.
Move the options summary before the subtotals table.
New unit tests
Enable computing averages in subtotal grid.
Generate the subtotal grid only if the primary sort key enables subtotals.
Fix subtotal grid to support multiple commodities.
Much cleaning and refactoring of the internals.
Cache the num-split-action book option to avoid thousands of KVP queries for the same value when loading a register.
Create a static string for book option KVPs to save an extra malloc/free on old compilers without small-string optimization.
Add tooltip support for register cells.
New unit tests for the balance sheet report and invoices.
Consolidate charting code into a single module.
Removed an incomplete and abandoned C implementation of QIF import.
Restored libsecret support that had been left out of CMake.
Replace old-style html style attributes with css.
Modify emitted html to be parseable by the Guile SXML module for testing.
Remove support for long-gone gtkhtml renderer.
Clean up code generating html tables.
Ensure full precision of doubles is saved to SQL. std::iostream's operator<<(double) uses only 6 digits of precision by default.
Make float database operations more consistent, working around dbd-sqlite3's failure to support doubles (dbd-sqlite3, not sqlite3 itself).
Prevent crash in gnc-tree-view.c: When getting information from the state file, protect against the key not having a '_' which is used to split the string.
Add the full account name to the saved register settings If you need to delete the layout for a register in the settings file, the only thing identifying it is the account guid. To make it easier for humans, add the full account name also.
When register pages are restored it uses the full account name. When register pages are restored, the account is found from the full name so if the separator changes it will fail. Instead, also save the account guid and use that as default to find the account falling back to the full name.
Fix misplaced try block that caused unhandled exception if year out of range.
Fix permanent storage of vendor details: Since the data types did not match for the billterms and taxtable, those references/guids were not saved to the database.
Update invoice reports to use totals calculate by gncInvoice. This should give a consistent representation of invoice data across the application.
Ensure gncEntry rounding is consistent. Internally calculated values in the entry are never rounded. Consumers of gncEntry's calculated values can request them either rounded or not. Next use a pragmatical approach for calculating values on invoices based on the entry values: do the rounding such that we never create an unbalanced transaction while posting. That means:
Round each entry's net value before summing them in net total.
Mulate all tax totals on invoice level per tax account before rounding.
And round before before summing them in a global tax total Hopefully this will catch a few more rounding issues in this area. A complete solution can only offered if we allow users to manually correct tax entries. This requires changes to user interface and data format so that's not going to happen in gnucash 3.x.
Use Scheme SRFI-64 test framework for new Scheme unit tests.
New compilers (gcc-8.0 and Xcode 9) bring new warnings, so several fixups to mollify them.
Lowercase all cmake commands for better readability.
Metadate migration (2.6.x->3.x) fixes for Windows.
Ensure timezone is set correctly in FreeBSD.
Translation updated: Dutch.