December 7, 2004

Business accounting for Linux

Author: JT Smith

Can you run your entire company on Linux only? To find out, I tested three promising accrual-basis accounting
packages: GnuCash 1.8.9, SQL-Ledger 2.4.0, and Quasar 1.2.4. All were installed on a Gentoo system.

My evaluation criteria are as follows:

  • Installation and setup: the simpler, the better. 20% of final score.
  • Ease of use: 35% of final score.
  • Multilingual support: I need to produce invoices in English and in French. 10% of final
    score.
  • Reporting: Plenty of reports that look good when printed. 25% of final score.
  • Support: Mailing list or newsgroup support. 15% of final score.

I will take you through a tour of all three applications, starting with installation and setup, entering
transactions, and producing reports.

If you don't understand certain accounting terms I use, take a look at the sidebar below.

Disclaimer: I am not an accountant.

The Contenders

Quasar

Quasar's main screen -- click to enlarge
SQL-Ledger main page -- click to enlarge
Gnucash's main window -- click to enlarge

Quasar is a modular commercial accounting system for Windows and Linux, distributed by Linux Canada inc. The base
accounting module is free (as in beer) for one user, on one computer. The other available modules are:

  • Inventory Control to define goods and services.
  • Handheld Interface (Linux only).
  • Multi-Store support.
  • Point-of-Sale support.
  • Sybase support.

SQL-Ledger

SQL-Ledger is a GPL'd web application that supports inventory, point-of-sale, projects, and more. It requires
Apache and PostgreSQL.

GnuCash

GnuCash started as a personal accounting application but since about 2002, it has started incorporating features
for small businesses.

Installation and setup

Many things are common between all the programs. In all cases, you will need to

  1. set up your chart of accounts;
  2. set up your tax tables;
  3. create clients and vendors.

Quasar

Quasar comes in a gzipped tarfile (which I used) or an RPM file. The file contains the program, the Firebird 1.0.0
database server, and two user guides.

Quasar has been tailored to work with the distributed version of Firebird only. If you already are running
Firebird on your system, you will need to reconfigure one of the servers so both can work side by side.

To install, uncompress and untar the file. Then, execute the install/install.sh script, specify what
install directory to use. The installation is fully automated on Debian, SuSE (err... Novell), Mandrake and Red Hat.
Other distributions may require manual intervention.

The first time I ran Quasar, I had to choose a language then accept the license agreement. I logged in and used
“File > New Company” to create my company, using the wizard. 

Next, I loaded a basic chart of accounts. Two charts of accounts are provided: US and Canada. I don't know about
the availability of others. Then I created my tax tables and payment terms using the “Setup > System”
menu.

Finally, I created vendors and customers in Quasar's address book. The address book allows you to enter four types
of contacts: vendors, customers, employees and personal.

On two occasions, after updating some applications on my system, I had to reinstall Quasar because it refused to
run. Reinstalling in the existing directory fixed the problem, without corrupting my data.

I can't say for sure that the system update caused the problem, but both times, when I noticed it, it coincided
with updates. Nobody on the list reported similar behavior.

Accounting definitions

These definitions come from AccountingAide.com.

Chart of accounts
A numerical listing of a business's accounts.
Credit
An entry on the right side of an account - decreases assets or increases liabilities.
Debit
An entry on the left side of an account - increases assets or decreases liabilities.
General ledger
The master record of all the balance sheet and income statement account balances. (This is where you record all transactions for your business).
Accounts Payable
Accounts of money you owe. A liability that is usually created when you have made a purchase on credit.
Accounts Receivable
Accounts of money owed to you for the sale of goods or services.
Accrual basis
A method of accounting where
transactions are recorded as they occur regardless of when payment for that
transaction is made or received.
Cash basis
An accounting method where transactions are recorded when the actual change of payment occurs, regardless of when the goods or services are delivered.
Trial balance
A work sheet showing the balances in each account - used to prove the equality of debits and credits.

SQL-Ledger

There are two methods for installing SQL-Ledger: manually or using the install script. I used the latter. It
downloaded the source code, extracted it and configured apache automatically.

One thing to remember about SQL-Ledger: RTFM. There is little documentation, and it is all on the
web site. There are FAQs and brief but complete installation instructions. Everything that is mentioned is
important. Most installation and setup questions I've seen on the list are answered in the FAQ.

I had to prepare PostgreSQL to support SQL-Ledger by adding PL/PGSQL support:

# createlang plpgsql <dataset>
# createlang plpgsql template1

dataset corresponds to a Postgres user. You must use a different user for each company you plan on
managing in the accounting system.

You create a new company by creating a new dataset in SQL-Ledger's administration module. Each dataset contains a
chart of accounts for the company you are creating. SQL-Ledger comes with charts of accounts for thirty different
countries.

Each user of the system must be configure by specifying the dataset to use, the chart of accounts, the language
and access privileges.

Vendors are set up in the “Accounts Payable (AP)” menu, and customers in “Accounts Receivable
(AR)”. You can specify billing and shipping address information, payment terms, discounts, and other
parameters.

SQL-Ledger can be configured to disallow modification of a posted transaction, forcing you to enter a reversing
entry.

GnuCash

It is best to use your distribution's version of GnuCash. On GnuCash's website, there are fifteen dependencies
listed, not counting the ones needed by those dependencies. So unless you enjoy Dependency Hell...

The first time I ran GnuCash on my GNOME 2.6 system, it didn't work because the proper version of gconfd wasn't
running. On Gentoo, I need to launch gconfd-1 beforehand.

GnuCash has a complete documentation set and the program itself is very intuitive. Detailed installation
guidelines for business users are available on Aerospace Software's
web site.

I created my chart of accounts, and configured the my tax tables. Then I created a few client and vendor accounts.
You can specify different tax tables for each vendor or customer.

Entering data

None of the programs have integrated payroll support. You must do calculations manually.

Quasar

Some of the information you enter in the invoice can be fetched from the database; this is denoted by a blue
triangle. <F9> or <Tab> executes the search.

Enter the first letters of your search criterion, then press <Tab>. Quasar will locate the longest match it
can from the database. Pressing <F9> shows the list of vendors or clients. The window that appears is empty.
You need to press the Refresh button to see the data because it is fetched on demand only.

When dealing with payments, Quasar used the concept of tenders. Tenders are methods of payment that your
business will accept: cash, check, credit card and charge. Charge, means you are billing now but getting
paid later. If you do not specify a charge tender, Quasar will assume that the invoice is paid
immediately.

SQL-Ledger

SQL-Ledger's screen is separated in two panes: the left pane is the “menu bar” and the right pane is
the application per se.

You create new invoices by clicking “Sales Invoice” in AR or “Vendor Invoice” in AP. Every
time you enter an item, pressin the “Update” button or hitting the Enter key adds a new line for you.

SQL-Ledger: Creating an invoice -- click to enlarge

When a new item is added, SQL-Ledger searches its database of available parts and services. If it finds a single
value matching your entry, the information is automatically filled in for you. If more than one match is found, you
are shown all the matches and you must choose the correct one. If none is found, SQL-Ledger sends you to the
Parts/Service creation page.

On that page, you create a new part or service, give it a name and a part number. You can specify a list price, a
sell price, the cost of obtaining the goods for this part or service, etc.

You can preview invoices and bills before printing.

When you pay invoices go to AP, select “Outstanding”, press the “Continue” button, then
select the invoice you want to pay. Enter the amount paid for that invoice and repeat the information for other
invoices. Execute the same steps in AR if you are receiving customer payment.

GnuCash

When adding a new transaction (in an invoice or in the ledger, for example), GnuCash attempts to complete the
typing for you as much as possible. For example, if you entered "Programming for company Foo" on one line, typing "P"
on a new line will automatically insert "Programming for company Foo". If multiple matches exist, it will show the
last one you used.

Auto-completion in the business accounting screens is not as fully implemented as in the personal accounting
portion of GnuCash. For example, in the personal module, auto-completion also enters the account information and the
amounts for you. In the business module, only the current column is completed. It's not a big deal but it is very
noticeable if you're a long-time GnuCash user, as I am.

Whenever you specify a date, GnuCash uses today's date by default. There are keyboard shortcuts to skip forward or
backwards one week at a time, one month at a time or even one year at a time. Another nice touch: when you enter data
on the same invoice, any date field in a new line item will be the same as the last date you entered.

A useful shortcut is “:” to traverse your account tree. For example, if you have a tree that looks
like this:

Liabilities
   |
   + Credit cards
   |
   + - +Master Card
       |
       + Visa
       |
       + American Express

you can select the Visa account by typing “Li:Cr:V”.

Once you've entered all your items, you must post the invoice. Posting records the invoice and tallies it in the
business reports. Until you post them, the invoices are stored but do not appear as transactions in your reports. If
you post an invoice or a bill and you realize that you made a mistake, you can unpost the invoice, make corrections
and post again.

GnuCash: Entering invoice information -- click to enlarge

Although I find GnuCash's interface more pleasing to use than Quasar's or SQL-Ledger's, it still has some
deficiencies. The most annoying one is the need to go through three steps when looking for a vendor or a customer.
First, you need to bring up the search window; then you must enter a search term and launch the search; finally,
select the vendor or customer you want. A simple drop-down list would have been much easier. Or, even better, a
match-as-you-type approach, similar to what is used when selecting accounts.

Another UI peculiarity, when you choose an invoice to display from the invoice-selection dialog, the new window
appears behind the selection window. It's very surprising and counterintuitive. To access the invoice window, you
must close the selection dialog.

Reporting

Quasar

Quasar has basic reporting features. There are three ledger reports: Balance Sheet, Profit & Loss and Trial
Balance. There are three sales reports and two vendor reports. Since there is a SQL interface to the data, you can
create your own reports using standard queries.

The reports results can be printed but cannot be saved. If you need to view the output before printing, there is
no option to do so directly. If you use the CUPS-PDF printer, you should know that it doesn't like Quasar's output.
If you need PDF files, ps2pdf gives better results.

SQL-Report

SQL-Ledger's reports include Chart of Accounts, Trial Balance, Income Statement, and Balance Sheet. There are
specialized reports for Accounts Payable, Accounts Receivable, Cash, Human Resources, Goods and Services, General
Ledger, and more.

Of the three programs, SQL-Ledger produces the best output. You can produce reports using HTML templates or LaTeX
templates. The default templates distributed with SQL-Ledger are sensible; you can modify them easily. You also can
ask Dieter Simater, the author, to do some custom work on your behalf. Comments from people who have paid for his
services have always been positive.

GnuCash

GnuCash has most of the reports I need including balance sheet, profits and losses, vendor and customer reports,
AR and AP aging. There are a number of graphical reports, also, that display information in barcharts or piecharts.
There is no trial balance in the current version. It has been added in CVS and should be available with GnuCash
1.10.

GnuCash's biggest weakness is printing. The program uses old versions of gtkhtml and gnomeprint, which have some
bugs, and this can lead to problems. It is a GNOME1 application; a port to GNOME2 is in progress but until it is
completed, many of these bugs will not be addressed.

If you don't like the default styles, you can create and use different stylesheets. However, there seems to be
some black magic involved to get things looking “just right”. Also, the stylesheets are part of the
program code. To create new stylesheets, you must write some Scheme code and you must configure GnuCash to recognize
it.

GnuCash stores data in an XML file, which precludes data sharing. A Postgres backend is available but it is buggy
and the business functions do not work when using it.

Multilingual support

Quasar

Quasar only supports English out of the box but there are hooks in place to translate the interface. Linux
Canada provides a tool which allows you to translate every part of the interface. I took a look at it and it seems
thorough enough, but doing the translation appears to be quite a daunting task. If you need to translate Quasar's
interface, you may want to ask on the list if anyone has done it already.

SQL-Ledger

SQL-Ledger is fully localized. In order to produce French invoices, I needed to create a new user, specify that
the preferred language was French and everything else followed. When I configured the new user, I made sure he used
the same dataset as my main user. That way, any changes I made as the English user were automatically carried over to
the French user. Basically, there isn't much to say, since it's so well done.

GnuCash

Controlling the language (and the currency) GnuCash uses is as simple as correctly setting the LANG environment
variable. It affects everything: the interface, the language for the reports and invoices.

It isn't possible to use the application in one language but print in another; you must exit, change the language,
and restart. Account names are not translated so if you need to export your tree in two languages, you're out of
luck.

I would like to display labels for taxes in French when printing in French, and in English when printing in
English. Unfortunately, this is a global property so French and English labels appear on all my invoices, even though
the rest of the invoice uses a single language.

Support

Quasar

When you purchase Quasar, you get a 90 day warranty which allows you to download patches and bug fixes from
Quasar's web site. You also get 30 days of free email support to help with your installation problems.

If you don't buy support, you can rely on the mailing list. The people on the list are helpful and you often get
responses from on of the Linux Canada employees. List traffic is very low (about 20 messages on a good month).

Linux Canada has mentioned that the code will eventually become open source.

SQL-Ledger

There is a very active mailing list for SQL-Ledger users. The author jumps in periodically to give answers to
problems.

Dieter Simater has chosen to release the code under the GPL with no documentation. Documentation is in PDF format,
costs $179, and includes one year of email or phone support. Other options are detailed on the web site.

Some members on the list have mentioned that they might write an introductory manual for first time users, but
nothing is available yet.

GnuCash

GnuCash's web site, the mailing list and developer feedback are top-notch. There are two very active mailing
lists, one for users and one for developers.

Commercial support isn't available but you can help the project by giving a donation. Derek Atkins is always
looking for volunteers to help the project along.

Summary

All scores are on a scale of one to ten, except the total.

Feature Quasar SQL-Ledger GnuCash
Installation and setup (20% of
total)
6 9 9
Ease of use (35% of total) 8 7.5 9.5
Multilingual support (10% of total) 5 10 8
Reporting (25% of total) 8 10 8.5
Support (15% of total) 7 8 9
Weighted Total (max: 100) 72.5 87 89.5

Conclusion

For my needs, GnuCash is the best. The interface is clean, intuitive, and there is excellent support available.
I've also been using it for my personal accounting for many years.

SQL-Ledger comes in a close second. I think it is the most complete of the packages. It produces the best output
and has the best multilingual support. The interface is cumbersome because it is a web application.

I cannot recommend Quasar. I found it too fragile when upgrading the system, and the other applications provided
all I needed, without the proprietary licensing. Quasar may be a good choice for retail-selling businesses.

One thing I found out while writing this article, it helps to know what good accounting practices are. The tools
won't help you if you don't know what you are doing. If you are serious about taking control of your business's
accounting, read a bit to understand what is involved (see the resources for example). You
need to understand your business well in order to set up your chart of accounts properly. If you can, have an
accountant friend help out. I've found that a beer and a meal can work miracles.

Laurent Duperval has fifteen years of experience in computing. He is a Java developer, budding speaker, and
all around good guy. At least, his wife and kids seem to think so. He can be reached at
laurent@duperval.com.

Resources

Quasar: http://www.linuxcanada.com
SQL-Ledger: http://www.sql-ledger.org
GnuCash: http://www.gnucash.org
GnuCash business guide:http://www.aerospacesoftware.com/linuxhowtos.html
Managing your cash flow: http://www.toolkit.cch.com/text/P06_4001.asp

Click Here!