Business accounting with Odoo
the most popular open source ERP system". Thus, any survey of open-source accounting systems must certainly take a look in that direction. This episode in the ongoing search for a suitable accounting system for LWN examines the accounting features of Odoo; unfortunately, it comes up a bit short.
Odoo is the current incarnation of the system formerly known as OpenERP; it claims to have over two million users. It is primarily implemented in Python, and carries the LGPLv3 license. Or, at least, the free part of Odoo is so licensed; Odoo is an open-core product with many features reserved for its online or "Enterprise" offerings. The enterprise version comes with source code, but it carries a proprietary license and an end-user license agreement forbidding users from disabling the "phone home" mechanism that, among other things, enforces limits on the number of users. Online offerings are not of interest for this series, and neither is proprietary software (the whole point is to get away from proprietary systems), so this review is focused on the community edition.
Installing and running Odoo
Getting started with the community edition can be a little rough. Odoo
offers Debian and RPM packages and instructions
on how to install them. The version available through the indicated
repository was old, though — version 9, even though version 10
was released in late 2016. The instructions say that PostgreSQL must be
installed while failing to mention that one must create an odoo user
— and that said user, needed for production use, must be a PostgreSQL superuser.
There is a systemd unit file to start the system, but one has to dig to
realize that the way to actually access the system is by pointing a web
browser at local port 8069. While a determined user can get past these little
obstacles, they may leave said user a bit concerned about
the accuracy and completeness of the documentation.
The main screen offers an extensive set of functions, each of which must be "installed" before becoming available; your editor found "accounting" a fair way down the list. The system offers to install a set of demonstration data, an offer which was accepted to test the system until LWN's data could be imported — a step that never took place, as it turns out, for reasons that will be discussed shortly.
The accounting "dashboard" screen shows a menu of possible functions and a few
line plots. It looks slick enough, but its limitations quickly become
clear. There is, for example, no straightforward way to just get a list of
transactions on an account. One can pull up a "statement" and see the
transactions that were listed there, but that will work poorly on accounts
that lack statements. There must be a way to, for example, obtain a list
of transactions on a given expense account, but it's not obvious.
There is no "register" view that makes it easy to enter transactions. One can enter a transaction through what is essentially an HTML form; there is no support for useful features like autocompletion. It seems clear that the Odoo developers expect that the bulk of transactions will be imported from some other source. But that turns out to be a bit of a problem.
Getting data into the new system is a key part of switching away from
QuickBooks. That, alas, is a place where the open-core nature of Odoo makes itself
felt. A look at the "settings" screen to the right makes the problem
clear. The ability to import data directly from banks, the Plaid interface, and the ability to import
data from QIF and OFX files are all reserved for the enterprise edition.
Version 10 added even CSV support to the "enterprise-only" list.
Users of the community edition are not without choices, naturally; they can
type their data in by hand or figure out the database schema and write
their own import code.
Odoo is open source, after all, so the job can always be done.
But the deliberate refusal to include such basic functionality in the free version makes it clear that this version is not intended for anybody wanting to put it to serious use. The list of reserved features also includes check printing — necessary for any real-world user, at least in the US — and, according to this list, "full accounting". This is discouraging for anybody looking for a free-software solution to the accounting problem.
The Odoo chart of accounts works more-or-less as expected, if one doesn't mind the lack of a list of transactions. The chart is flat, though, with no support for account hierarchies. There is a basic set of accounting reports (profit and loss, balance sheet) available, but they are primitive relative to QuickBooks or GnuCash. The customization options are minimal. There is no ability to click on, for example, an expense category in the profit-and-loss chart and see how one managed to spend so much money on beer. Anybody hoping for advanced features like pie charts will be sorely disappointed.
The use of PostgreSQL should allow Odoo to scale to relatively large accounting data sets, though that was not tested here. The system can also handle multiple users working simultaneously, something that neither QuickBooks (in the small-business edition) nor GnuCash can do. One thing any user should be aware of is that Odoo does not attempt to maintain database compatibility across major releases of the system. The company will migrate databases for a fee, naturally enough; there are also projects like OpenUpgrade trying to fill the gap. Companies tend to stay with an accounting system for a long time, so the upgrade issue is one that should be kept in mind.
Development community
The source for the Odoo community edition is maintained on GitHub. A quick look suggests that it is an active project with a non-trivial amount of community involvement. Your editor looked in vain for pull requests adding an "enterprise" feature like QIF import to see what the response would be, but there do not appear to be a lot of external developers trying to add larger features. Odoo requires contributors to sign a contributor license agreement allowing the code to be distributed under a proprietary license.
There seems to be a fair selection of books out there for those wanting to learn more about working with (or developing for) Odoo. One can also find active support forums and such. There does indeed appear to be a significant user community for this system. Odoo seems unlikely to disappear overnight or fade away in the near future.
Closing notes
As can be seen from the above text, your editor has found Odoo wanting when it comes to the task of basic company accounting. One thing should be pointed out here, though: this review was focused on accounting functionality, but Odoo aims to be a full enterprise system with features far beyond accounting. It offers customer-relationship management, project management, inventory control, sales support, a point-of-sale interface, time tracking, issue tracking, expense tracking, and more. It has add-on modules to "build your own enterprise web site", create and run surveys, conduct mass-mailing campaigns, manage calendars, manage fleets of vehicles, and coordinate lunch orders. Businesses in need of all that functionality may well be willing to overlook the shortcomings in the accounting module.
For a company that is focused on gaining control over its own accounting
data, and that wants to keep said data locally and managed with free
software, Odoo does not seem like an ideal choice. The open-core model
will put Odoo-the-company in a conflict-of-interest position with
regard to its free users; it seems certain that the community version will
always lack some important features. But even the enterprise version come
up short relative to some of the alternatives. Odoo might yet develop into
a full-featured free accounting system, but it is not there now. The
search for a suitable QuickBooks replacement will continue.
