Frequently Asked Questions - 1.3

Yes. IBANs are very long, bank account numbers. LedgerSMB has no problems storing, retrieving and using these without any issue.

Yes. SEPA (Single Euro Payments Area) requires support for very long bank account numbers (IBANs or International Bank Account Numbers). LedgerSMB can store and use these numbers without problems.

Assuming you have created a backup file using, you can restore your database using the command:

 $ pg_restore [options] your_backup.bak

It should be pointed out that it's not possible to restore a backup to a database with a different name than the one you made the backup from!

If the database to restore into doesn't exist: replace [options] with -C new_database.
If you want to restore replacing an existing database: replace [options] with --clean -C new_database.

Note: You need to restore the roles backup before restoring the data backup.

FAQ Category: 

As of 1.3.7 the backup functionality moved to, the database administration interface.

Login with your ledgersmb database user / admin user. This can't be done using your normal LedgerSMB login account since it doesn't have enough rights to backup db and roles. The default address for is http://localhost/ledgersmb/

The backup facility consists of two parts:

  1. Backup of the data (parts, customers, accounting records, etc)
  2. Backup of the roles (your login accounts and rights)

The backup can be mailed to an e-mail account, or you can download it with your browser, depending on your output selection in the backup screen.


Note that alternative methods include the use of autopostgresqlbackup and PostgreSQL's command line utility pg_dump. See the Restore FAQ item for an example of the latter.

FAQ Category: 

The table below lists the compatibility of LedgerSMB versions with Perl versions. Products for which support has ceased due to End-of-Life date being reached are not listed and should not be used.

PostgreSQL compatibility
PostgreSQL 1.4.x 1.5 planned 1.6 planned
5.10 yes yes no
5.12 yes yes no
5.14 yes yes yes
5.16 yes yes yes
5.18 yes yes yes
5.20 yes yes yes
5.22 yes yes yes
5.24 yes yes yes

Versions 1.0, 1.1, 1.2 and 1.3 are not in this table due to the fact that they're past End of Life.

FAQ Category: 

In the '' administrative interface, there are 2 buttons:

  • Backup database
  • Backup roles

One creates a backup of the content of your database. The other creates a backup of the roles.

Roles are elements which are required to exist before creation of a database, and assign fine-grained access control.

When restoring, you need both files and you need to restore the roles before the database.

FAQ Category: 

The answer to this question depends on what using means to you.

As a user of the web application, yes, there should be absolutely no problem using a recent (as in: no more than 2 or 3 years old) web browser in order to take advantage of all the features available.

As a platform for running a LedgerSMB server, it's simply been too long since it has been last tested. You might be able to make it work at the expense of considerable effort. If you do, please comment on this FAQ or contact the mailing list to let us know about your process and results!

Those running a LedgerSMB server on the Windows platform - that we know of - do so with virtualization techniques such as VirtualBox.

Operating system: 

I've voided an invoice in my system. Now, instead of *no* open invoices, I see *two* open invoices listed: the voided and the voiding one. How to remove both invoices from the list of open items?

If you find yourself in this situation, the answer is to create a 0 (null) payment: Select both the voiding and the voided invoice in the Cash->Payment (or Cash->Receipt) screen. This will clear the invoices against each other with a net-zero result.

Unfortunately, the LedgerSMB 1.3 version doesn't automatically clear a voiding invoice against a voided invoice upon posting of the former. The workflow described works around this issue.

FAQ Category: 

The short answer is that TeX doesn't know how to deal with UTF-8 (or rather non-ASCII) characters. XeTeX has been designed to work around these limitations. The easiest way to generate PDFs is to install Xe(La)TeX and use the 'xedemo' templates - these templates have been 'ported' from LaTeX to XeLaTeX.

Distribution specific install instructions listed below.

Debian / Ubuntu 

Install texlive-xetex that includes xelatex

apt-get install texlive-xetex

but you need to patch LaTeX::Driver
Install liblatex-{driver,encode,table}-perl for latex

apt-get install liblatex-{driver,encode,table}-perl

and libmoosex-followpbp-perl for Template::Plugin::Latex

apt-get install libmoosex-followpbp-perlafter that:

apt-get install libtemplate-plugin-latex-perl  (or cpan Template::Plugin::Latex)


LedgerSMB xelatex configuration

Install xelatex and change the LedgerSMB configuration from the menu:
System -> System Defaults -> Templates directory
Change to "xedemo"

Change a path

From the mailing list: (Chris Travers)
Right now, I am open to suggestions on a better approach, as the Template::Latex api's don't seem to work to do this, but I resorted to changing the paths in LaTeX::Driver::Paths directly (find the location with locate LaTeX/Driver/ This file gets written at installation time for the LaTeX::Driver module and so I consider it reasonably editable.

locate LaTeX/Driver/

If locate is not installed you can do:  find /usr . |grep "LaTeX/Driver/"
/usr/share/perl5/LaTeX/Driver/  ( Debian / Ubuntu )

Make a backup copy of  LaTeX/Driver/ (you have to have root priviliges to do this or use sudo)

cp /usr/share/perl5/LaTeX/Driver/ /usr/share/perl5/LaTeX/Driver/ the path to your path for LaTeX/Driver/

User your text editor to edit LaTeX/Driver/  (you have to have root priviliges to do this or use sudo)

In LaTeX/Driver/ change

$program_path{pdflatex} = '/path/to/pdflatex;


$program_path{pdflatex} = '/path/to/xelatex';


This is the error you get, if you do not change:
/usr/share/perl5/LaTeX/Driver/  (Debian path)  :


latex error - pdflatex exited with errors:
l.26 \RequireXeTeX
! Fatal fontspec error: "cannot-use-pdftex"
! The fontspec package requires either XeTeX or LuaTeX to function.
! You must change your typesetting engine to, e.g., "xelatex" or "lualatex"
! instead of plain "latex" or "pdflatex".
! See the fontspec documentation for further information.
! For immediate help type H <return>.
l.38 }


The utf8 character "hack fix"

Before making this change will UTF8 characters appear as squares in the PDF file. To print utf8 characters in pdf files, you must make the following change:

These are the steps:
su root
open /usr/share/perl5/LaTeX/
in your text editor
go to line 174 on Debian Squeeze (6.x) and line 176 on Debian Wheexy (7.x)
you see "write_file( ..." there

".tex", $source


".tex", {binmode=>':utf8'}, $source


Font fix

In order for Verdana to work, install the package ttf-mscorefonts-installer (Debian/Ubuntu)

apt-get install ttf-mscorefonts-installer

In versions 1.3.28 and up, the demo templates no longer depend on Verdana though, but use the non-proprietary Liberation font set, which can be installed using

apt-get install fonts-liberation


Code reference to LedgerSMB

The code for this is LedgerSMB/Template/


Active support

Versions 1.4 and higher are under active development and are supported by the community.

End of life

If you're looking for help on how to use EOL-ed versions, please try mailing the users mailing list. If you're looking someone to create bugfixes, please check with one of the parties providing commercial support.

Version 1.3 has been declared end-of-life on 2015-12-23. The last release in the series is 1.3.47. No further releases will be made by the community.

LedgerSMB versions 1.0, 1.1 and 1.2 won't be maintained any further due to the fact that there are some known security issues which can't be fixed.

FAQ Category: 

Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 [ ]

Perl 5 is a highly capable, feature-rich programming language with over 24 years of development.

Learn Perl

The Bernard Chan Perl Tutorial

Perl on CPAN
Requires: Perl 5.004, Carp, Exporter, GD (optional)

use Barcode::Code128 'FNC1';
$code = new Barcode::Code128;

This is CODE128 which may not be what you want if you are trying to print barcodes for retail purposes. In the US you would want to use UPC-E (for those reading from Europe, this is similar to EAN there). Different barcode scanners encode information differently so using the wrong type will result in problems.

Recommend readinging before you start:

Also note: Most barcode decoders (on-scanner or otherwise) have to be programmed to know what sort of barcode they are expecting so you don't want to mix these in an environment.

Pdftricks and pstricks can be used to generate barcode images in LaTeX templates.

Q: Brian Wolf
A: Chris Travers


First of all, you need to backup all your company databases followed by an upgrade of your PostgreSQL installation. There are plenty of places on the web to explain how to do that. The high-level process is to install the two versions in parallel and run the pg_upgradecluster command.

When the technical upgrade has succeeded, however, you're not ready to see the performance improvements promised by the 8.4+ versions of PostgreSQL with respect to the menu-generation. This is because the database doesn't automatically use the new 8.4+ code definitions.

To take advantage of the performance improvements of 8.4+, you'll need to re-run on all your company databases. With each of the databases, you can clean up after having run the tablefunc contrib is no longer required, meaning you can

psql -U ledgersmb -d -f /uninstall_tablefunc.sql

On my own database I needed to run the above command three times to make it stop reporting "ERROR: Can't DROP because other objects depend on it." (On each round the number of other errors increased: on each round the number of objects successfully being dropped increased.)

That should do it. You should have a clean 8.4+ PostgreSQL database with LedgerSMB.

FAQ Category: 

The templates use the Template Toolkit scripting language to generate actual content.
Depending on the typesetting language, the files use
* (Xe)LaTeX; or
* plain text
as the typesetting system.

While LaTeX and XeLaTeX are extremely similar, some differences exist, mainly in the area of font selection and document preamble.

Latex cheat sheet -

Latex in 157 minutes -

The LATEX Font Catalogue -

Guide in Norwegian:


Yes; there's at least one known (relatively current) story at (written by 'anarcat' on irc)

FAQ Category: 

In general: neither. The advice is to have the full source tree in /opt/ledgersmb/<version>.

Installing the LedgerSMB modules in the standard Perl search path works, but interferes with running different versions side-by-side.

To undo installation in /usr/local:

  • remove /usr/local/share/perl/5.XX.X/LedgerSMB/
  • delete /usr/local/share/perl/5.XX.X/; and
  • find and remove the .pl files that come in LedgerSMB's project root directory and bin/ and LedgerSMB/Scripts/ directories.
FAQ Category: 

The default configuration limits access to the /ledgersmb/ page to connections from localhost ( only for maximum security.

If you want to allow connections from other locations, it's highly advisable to use encrypted (VPN) connections to access your ledger in order to maintain good security.

FAQ Category: 
# diff -u "original file" "new edited file" > “diff file”

Submit your patches ( “diff file” through the Sourceforge project tracker. If you are going to do somewhat largish changes, it's best to discuss how to do them on the developers list. That increases chances for acceptance which is in general the best solution for you and the lsmb community.

FAQ Category: 

The simple one:
Sales order: Customer wants to buy something.
Sales invoice: Customer owes for goods and services delivered.

Business-flow-wise, typically you take an order before everything is done necessary for the transaction to hit the books, and convert it to an invoice when everything that has been done for the income to be realized has happened. This typically means:

1) Goods or services are delivered
2) Any approval/error checking the business requires has happened

One big thing in 1.4 is that approval for invoices is possible so instead of two steps you can actually have three (goods ordered, invoice pending approval, and approved/posted to the books).

An other expl:
A sales invoice hits the books, and represents a financial transaction.

A sales order does not show up in the books. It's upstream of any financial transaction, and so anything on it will not be reflected in any financial report or have any transactions on any of the account charts.

So orders are more for managing your workflow. Invoices are for accounting. Your accountants probably do not care about your orders -- all they care about are invoices.

An other example:
A sales order is what I write down when you want to buy something from me. You ask me to ship you 10,000 staples next week. When I actually do ship you the 10,000 stables, I generate an invoice to go with it. Before I ship, I have no receivable asset, but I have 10,000 stables. After I ship, I have a receivable asset posted, but I don't have the 10,000 staples.

If this happens between 10am and 2pm, not a huge difference. If it happens between noon on Dec. 31 and I ship on Jan 4, the next year, this might matter.

Unless I post the order, my factory floor might not actually produce the 10,000 staples, or they shipping department might ship the last 10,000 staples to someone else.

Q: Brian Wolf ( )
A: Chris Ttravers, John Locke and Michael Richardson


How the LaTeX templates work and what is usually needed to get them up and working.

  [work in progess...]&#13;&#13;

The PDF and PS invoices are generated using a program called LaTeX which handles the layout and typesetting. The actual LaTeX files are creating using Template Toolkit with extensions for LaTeX. These extensions are in the Template::Latex package available from CPAN. The software then generates a LaTeX file which is then processed to create a PDF or PS.

Typically the first thing to do is to install a LaTeX distribution like TexLive (distributed with many Linux distributions and available for OSX and Windows). This provides LaTeX and many of the modules needed. In general I recommend that if your distro has a texlive-extras package that you install this too.

After this is installed, you must then install Template::Latex. This can be done by typing on the command line:

Note: Debian & Ubuntu look below.

cpan Template::Latex

This will also install a number of dependencies including LaTeX::Driver, which will need to know where your LaTeX binaries are. It is usually pretty good at finding them.

If things go wrong and you can't get it to work, the following commands may provide useful diagnostic information when requesting help:

>From the LedgerSMB application directory:
perl -MLedgerSMB::Template::Latex -e print

>From the doc/manual directory in the LedgerSMB application directory:
pdflatex LedgerSMB-manual

Debian & Ubuntu note:
Template::Latex is included in Template::Plugin::Latex which is now in Debian as
libtemplate-plugin-latex-perl. (It has migrated to Debian Testing ('wheezy')).
Install with apt-get install libtemplate-plugin-latex-perl

Ref: Latex in templates & Debian squeeze and xelatex

How the LaTeX templates work
<a href="


With answers from Chris Travers, Robert James Clay

FAQ Category: 

Q: This particular merchant runs Windows. I don't think they have a pole display, though I can check. Ideally, it would be great to accommodate, with or without pole display. If it runs better on Linux, going forward I would propose Linux workstations for new merchants.

Ok. Let's first explain what the problems we have to solve are, then discuss the solutions that are bundled.

In general web browsers are engineered so that malicious sites can't access your computer's hardware. In general we don't want to change the browser (for example with an add-on) to make it do this because there might be a capacity for abuse elsewhere. So things like receipt printers, pole displays, cash drawers, and barcode scanners cannot be directly be accessed by the browser. This makes a web-based point of sale rather challenging, but we have solutions to these problems. The solutions though are only tested on Linux. On Windows they will require slight modification and I would recommend some extra testing. Backup/fallback methods are discussed below as well.

What we do instead preferably is to turn the point of sale terminal into a server for the point of sale hardware. Scripts to do this (written in Bash) are in the utils/pos directory of the LedgerSMB installation. the client-side script is pos-hardware-client-startup-script which basically fires up netcat and listens for data to redirect to a hardware port. You probably want to use firewall software to limit this traffic to approved servers. The ports are configurable on both ends. On the LedgerSMB side, see the

The other is which is used to send printable documents over this (and to the POS printer on the other side). This is designed to be a low-latency alternative to using CUPS and the like. It redirects pole display logic usually to a serial port, and the printer logic to a parallel port.

This means you can use any printer that accepts ESC/POS and it will send signals to open the cash drawer (programmable in the if the cash drawer is the kind that plugs into the printer. You can also use a pole display although currently we only have drivers for the LC3000 by Logic Controls. The drivers are really easy to write though. Feel free to ask for help or contribute one.

Barcode scanners and magnetic stripe readers need to come into the computer as keyboard input. Typically this means a keyboard wedge interface for magstripe readers, and either a keyboard interface for a barcode scanner, or a barcode scanner attached to a POS keyboard with a built-in barcode decoder. I have had better luck with the latter in terms of long-term maintenance, but they both work.

On to the The default values here are in the, so please cp

For the miost part this defines a single variable for storing the information called $pos_config. Keys for this and their significance are:

rem_host: Remote host to send pole display/printer info to. By default this is the remote host. However if you are running X11 applications remotely you may have to change this.

pd_host; Host for the pole display. Defaults to rem_host
pd_port: Port for the pole display. Defaults to 6601
pd_proto: Protocol for pd. Either 'tcp' or 'udp' defaulting to udp.


Same as pd_* above but for printer

rp_cash_open: The code to open the printer. Defaults to those for the Epson U220D iirc, which is binary string of values 27, 112, 0, 25, 250

coa_prefix: prefix for the till amounts. If you have a till '16' and a coa_prefix of 1300, the till account will be 1300.16. This account must exist or you will get errors.

close_cash_accno: Cash account to put closing cash into. Must exist by closing time.

$pos_sources is used to define memo fields for different types of payment. You can customize this as you want.

$pos_source_default is the default for the sources drop down.

curren is the currency
breakdown covers your currency denominations. Used in closing. I dont know if you want to add a 0.5 as 50 cent piece there since those are rare.

till_type is either the 'cashier' meaning the employee id becomes the till number or 'terminal' in which the last octet of the IP address becomes the till number. If you need to customize this handling you can do so underneath the request to stop editing at a certain point.

Advanced options include

source_accno_override used to override cash account handling of various sources (such as gift certs for example)

disable_tables is no longer necessary. But you can use this if you aren't using projects and/or departments. It defaults to disabling everything.

If the directnet approach for printing does not work for you you can comment out the printer definition at the bottom of the and set up cups to process and send the file to the workstation to be printed. This adds a few seconds often, however, so where directnet works, it is preferred especially in time-critical point of sale environments.

Q : Brian Wolf
A: Chris Travers

FAQ Category: 

My problem is that I want to translate LedgerSMB to Spanish Venezuela, I know that already it is, but there are still some words that are not. So I'm trying to add them.


There's a section dedicated to translation. That should help you to get started.
The basic idea is that everything you can learn from the web about translating with gettext applies to LedgerSMB's gettext translation as well, with the note that you should be able to find a recent POT file in the repository next to the source code for the latest development version (trunk) and the latest stable release (1.3).

At least three active committers and many more developers.

The ledger-smb-devel mailing list have 196 subscribers (22. Mai 2012).
Check the mailing lists at

Community: /following-and-contributing

192 subscribers (1. Nov 2011)

FAQ Category: 

I have made a payment to a vendor, but entered an incorrect date, far in
the future. Consequently the payment does not show when I try to reconcile
the relevant bank statement.

How do I back-out the incorrectly entered payment?

Cash/Vouchers/Reverse Payment.

Then when you are done adding the payments you want to reverse,
approve the batch.

Tested on: LedgerSMB 1.3.15.

FAQ Category: 

I had created a second database. To delete it, do I just drop the database from postgresql?

On a GNU-ish *nix platform use the script:
it'll remove the roles and the database.

FAQ Category: 

By Steven Marshall

I found something very interesting. I created a test HTML page containing solely text called testpage.html. I dropped this file in two locations. One in the Apache root directory (/srv/www/htdocs/) and the other in the ledgersmb directory (/user/local/ledgersmb/). I changed ownership of the file to wwwrun:www. I then ran the following tests:

Test 1:
Results: Page loaded almost instantaneously.

Test 2:
Results: Page loaded in about 14 seconds

It seems to be choking on page loads for files that reside in the ledgersmb directory. My ledgersmb-httpd.conf is located in my ledgersmb directory at /usr/local/ledgersmb. I had added my "Include /usr/local/ledgersmb/ledgersmb-httpd.conf" to the bottom of default-server.conf.

I believe I have solved the issue. I am still testing just to make sure, but it appears that my issue was in ledgersmb-httpd.conf. In the section where by default you "Allow from localhost", I had changed to the following adding two additional "Allow from" statements so that I could connect remotely to Ledgersmb:

Order Deny, Allow
Allow from
Allow from localhost
Allow from 192.168.1
Deny from All

It appears that it was struggling with the multiple "Allow from" statements. Based on Apache documentation I believe I should have been able to do it this way, but I decided to change it to the following, using just one "Allow from" statement and separating the addresses with spaces, and my performance issue cleared up. This is what my modified version that works looks like:

Order Deny, Allow
Allow from 192.168.1 localhost
Deny from All


FAQ Category: 


But I'm glad to be able to deny your conclusion above: the system will search on any partial match, both on the customer number or on the customer name. So, there's no need to spell them quite exactly.

Also, if you want the drop downs back, there's a setting in the System -> Defaults screen (third item below the currency settings input box; "Max per dropdown"). If you enter 99999 into that (assuming you don't have that many customers), you'll be presented the selection list you're used to.



Username and password have to be sent via auth fields.
company= is an accepted argument.

This works:

Start with a blank browser or browser tab.
write/paste url (This can be bookmarked in your browser)

Get the login page
The Company field are filled inn from the company=database_name argument in the url.

Fill inn
Name: myusername
Password: mypassword

Hit "Login"

Compiled from this e-mail treads:
Question from: Håvard Sørli
Answer and software fix from Chris Travers


I manage several companies on LedgerSMB, can I login to any of these companies with one user?
Applies to LedgerSMB 1.3.x -->
V. 0.1 - 22. Nov 2011

I have 100 companies though on my system and decide to change my password, wouldn't I have to change it a 100 times (one for each company)? What would be the best approach to setting up a user that could be used on several companies (databases)?

In LedgerSMB all your users are database users in PostgreSQL. All PostgreSQL users do not have access to login with LedgerSMB on each company database(s). LedgerSMB has to give access to each user as an LedgerSMB application user, even if the user have PostgreSQL superuser rights on the database level.

You can add the Postgresql user to be a LedgerSMB application user when you make an new database or after the database is created. If you import the account into all the other databases, the password management is consistent cross the databases. However, you are not guaranteed the same permissions on all databases. You could have one set on one database and another set on another.

Fast route: User get "Manage Users" or "Full Permissons" access to LedgerSMB
Use to create company database number 1 with ledgersmbdbadm user.
Add a normal application user in the proses ("Enter User" screen) example: your_100_db_user_name

Use to create company database number 2, 3, 4... with ledgersmbadm user (or a special admin user for each db).
Import the normal application user you made in database 1 ("Enter User" screen in
Username: your_100_db_user_name
Password: Do not set a password. Leave it blank
Import : Yes
Fill inn first name, last name and select Country and assign permissions.

You can also add the user to the db later:
System->Admin Users->Add Users
Username: your_100_db_user_name
Password: Only set a password in the firstdb. Leave it blank in db 2, 3, 4..
Import : Yes
Fill inn first name, last name and select Contry and assign permissions.

If you add the users later you have the opions to add only the permissions the user needs to do a spesific task.

Technical solution:
From LedgeSMB use this user to setup the database you create a databaseuser with Superuser priviliges.
CREATE USER ledgersmbdbadm WITH superuser password 'somepassword';

Create a normal user
CREATE USER your_100_db_user_name WITH password 'somepassword';
(normal user with no drop db rights)

When you create the db:
Use to make the company database(es). Use the ledgersmbdbadm user to login to create the company database (first screen) and add a new user on the ("Enter User" screen)
Username: your_100_db_user_name
Password: Do not set a password. Leave it blank
Import : Yes
Fill inn first name, last name and select Contry and assign permissions.

You can add the user to the db later:
System->Admin Users->Add Users
Username: your_100_db_user_name
Password: Do not set a password. Leave it blank
Import : Yes
Fill inn first name, last name and select Contry and assign permissions.

If you add the users later you have the opions to add only the permissions the user needs to do a spesific task.

Direct login to correct company, take a look at this:

Compiled from this e-mail treads:
Question from: Steven Marshall
Answer from Håvard Sørli and Chris Travers

FAQ Category: 

Copy db :
In psql or your sql client:

Note this will clone everything.
If you want to get rid of the transactions, you will need to delete everything in the acc_trans, ar, ap, and gl tables.

Also if goods and services are used, delete from invoice and inventory as well, and if wishing to clear out all orders, delete from
orderitems and oe.

FAQ Category: 

When I open a screen to enter a GL transaction, there is no list to select accounts from. How do I know which accounts are available?

These are AJAX-completed boxes. Just wait after starting to type the account number or the beginning of the account name and a list of items to select from will pop up.

FAQ Category: 

Is there a place where we could buy some consulting for LedgerSMB?
or a minimal setup according to our specs?

Take a look at Commercial Support

FAQ Category: 

Short error:
Math::BigInt: couldn't load specified math lib(s), fallback to Math::BigInt::FastCalc

Full error message:
[Thu Nov 10 22:53:58 2011] [error] [client] Math::BigInt: couldn't load specified math lib(s), fallback to Math::BigInt::FastCalc at /usr/local/share/perl/5.10.1/LedgerSMB/ line 61, referer: http://localhost/ledgersmb/

What should you do with this? Nothing or install math libs

From irc:
ehu: you can run without it, just slower.
ehu: but you can install it and rid yourself of the error reported.

Install Math:BigInt:GMP to get rid of the message.

apt-get install libmath-bigint-gmp-perl

Ubuntu 10.4 LTS:
sudo apt-get install libmath-bigint-gmp-perl

RPM (Centos, Redhat...)
perl-Math-BigInt-GMP is available from the rpmforge repository -

From irc:
haso: The setup script do not check for it. ... Should it ?
ehu: well, since you can run without, I don't think so.
ehu: do you?
haso: It could be an informed option.
ehu: well, that's indeed an idea.
ehu: it's in the install file for debian and RH, I think.

FAQ Category: 

Sql ledger has the option to add a barcode to a part.

In 1.4, you will be able to add a barcode per make/model record.

How are barcodes added when using LedgerSMB?

Sort term solution:
It's not optimal for a UPC management but it solves the immediate problem:

Add a space separated list with the barcodes to the partnumber field

The partnumber is the "Number" filed on the same line as "Description" in the "Add Part" page.
And yes, "space separated list" works in the POS interface. (If you scan one of the codes in the space separated list )

Here's how the partnumber and description fields work
It searches for any substring match for the entry.
If there is only one match it populates and moves on
If there are no matches it asks you if you want to create one
If there are multiple matches it gives you a list to choose from
same on the invoice screens

Long term solution:
- add a UPC field to the makemodel table.

Question from: Tau (2009)

FAQ Category: 

No: Our templates are in LaTeX or HTML (your choice), and use TemplateToolkit for variable interpolation. No xslt, no xsssl, no programming language other than TT directives......

FAQ Category: 

We don't know enough about the ideosyncracies with your laws to evaluate that. But quite frankly Free Software sometimes poses an issue with local regulation. If you go with LedgerSMB, I'd recommend working with us to detail any shortcomings and get those resolved.

You can help us to make a list over "X country" laws and LedgerSMB shortcomings according your countrys law.


Yes, its Open source. The tools we use (Perl, PostsgreSQL, Apache ++) is also Open source.
Open source means that the source code of the software is available for free to everyone and you can modify the code and distribute it yourself.

Look for a place to contribute. This means not only programming, but also documentation, theme design, art work, or architectural design. Join the mailing list.


REST -- we are working on it. (1. Nov 2011) Check developer mailing list and latest code.
Other language independent API--- we have it for the new code in the form of discoverable SQL interfaces, and are working on rewriting the rest with that in mind

FAQ Category: 

Depends what your online store produces.
We're currently ( 1st Nov 2011) working on creating web service API's but freelock (a frequent visitor of the IRC channel) is already doing it. He doesn't mind sharing his code.

Web service API's discussion is ongoing on the development mailing list. Join and contribute

From the users mailinglist (2011.05.22):
Nigel Titley has an operational bridge working between Oscommerce and
LedgerSMB. He is happy to throw into the pot, especially once the
Ledgersmb RESTful interface comes out of the woodwork. It transfers new orders, new parts and new customers across from OSCommerce to LedgerSMB, handling multiple currencies and it updates the OSCommerce inventory from LedgerSMB. It runs as a regular cron job.

From the users mailinglist (2012.03.07):
LSMB integration with e-commerce?

The faq: REST API or other language-independent interface ?

FAQ Category: 

Short answer: Yes

LedgerSMB can tie product sales to a tax class so that VAT can automatically be split off into the required VAT accounts on a sale, and when cancelling an invoice, automatically perform the reverse bookings.

Each product can be 'attached' to an account and the associated % will be applied automatically.

FAQ Category: 

When trying to use XeLaTeX, you may get a message like:

! You are attempting to make a LaTeX format from a source file
! That is more than five years old.
! If you enter to scroll past this message then the format
! will be built, but please consider obtaining newer source files
! before continuing to build LaTeX.

! LaTeX source files more than 5 years old!.
l.545 ...aTeX source files more than 5 years old!}

! Emergency stop.
l.545 ...aTeX source files more than 5 years old!}

No pages of output.
Transcript written on xelatex.log.
Error: `xetex -ini -jobname=xelatex -progname=xelatex -etex xelatex.ini' failed

fmtutil: Error! Not all formats have been built successfully.
Visit the log files in directory
for details.

This is a summary of all `failed' messages and warnings:
`xetex -ini -jobname=xelatex -progname=xelatex -etex xelatex.ini' failed

This is confirmed to be a problem on CentOS 6, Scientific Linux 6, Red Hat Enterprise Linux 6, and Fedora Core 13.

You can correct this issue (as root) by:

cd /usr/var/texmf/web2c
xetex -ini -jobname=xelatex -progname=xelatex -etex xelatex.ini

Once you type this you will get the same message, but have the option to press return and generate the file anyway.

FAQ Category: 

I have successfully installed LegerSMB and logged in. However, no matter the type of user (i.e. administrator, supervisor or user) the access control of them is always the same. I cannot amend the user access control rights. Therefore many functions such as amending the chart of account are not working. Are there any error on my installation?
[Chris Travers : the Role field in 1.2 affects some aspects of reports but not much more than that. use the check boxes to show/hide menu items. In 1.3, the roles are significantly different.]

In 1.3.x :
Go to the System -> Admin Users -> Search users page, click "Search" and select "[edit]" for the user you're trying to change.

You'll be presented with a long list of authorizations that can be assigned to the user.

FAQ Category: 

I am currently building an online travel suite for a client of mine who is interested to integrate with a full accounts package.
Is this software similiar to Sage ? Q from: Justin Fenech

Chris Travers: Yes, it is similar to Sage. We don't support payroll yet, but working on it.


We ask that all IRC members follow the Ubuntu Code of Conduct.

We also ask that you always use a paste site when pasting more than 2-3 lines. Paste sites include:

FAQ Category: 

The LedgerSMB community follows the Ubuntu Code of Conduct.

FAQ Category: 

Q: How could I set it up ledgersmb to support SSL connection?

SSL support on Apache is handled by configuring Apache. For having LedgerSMB connect to PostgreSQL using SSL, you can set the PGSSLMODE environment variable to 'require' in the ledgersmb.conf. Note that by default, LedgerSMB will try to connect to PostgreSQL via SSL and fall back to unsecured connections if this is not available.

We highly recommend using SSL for any access to LedgerSMB over the network.

FAQ Category: 

Make sure you have TexLive installed. Older TeTeX was recommended but according to Ubuntu repositories, TexLive is the new package to install.

You can install this with the following command:

apt-get install texlive-latex-extra


FAQ Category: 
Operating system: 

Adding support for other database management systems would require that the database logic be coded to the least common denominator. We have decided that we want to eventually allow add-ons in different languages, and thus the database becomes the only point where we can enforce accounting logic consistantly across all parts of the application. Porting and maintaining such logic across database systems is not feasible for this project.

Additionally PostgreSQL is an outstanding RDBMS and we have no desire to move from it.

FAQ Category: 

Quite a few users find some of the terminology and accounting processes a little confusing at first. Some of the more popular small business accounting packages tend to hide these aspects of book-keeping from users for simplicity, so with the current user interface there is often some new ideas to grasp.

First step is the manual - the LedgerSMB manual is free and highly recommended reading.

If you would like some background on general accounting practices, there is an (unassociated) tutorial So, you want to learn Bookkeeping" which seems a good place to start.

Another excellent resource is second-hand book stores. Lots of MBA studends sell off their textbooks (presumably to finance their first business rather than pay of gambling debts) so second-hand bookstores will often have very good texts on accounting at bargain prices - these can make great reference books.

Finally it would be remiss not to recommend securing the services of an accountant to help you out with the finer points from time to time, should you feel the need or have a legal obligation to do so.

Wikipedia articles:

FAQ Category: 

There are a number of possible causes for login problems. Some of the more common causes are:

Login in 1.3.x is new. Take a look at this screen guide:

Magic Characters in passwords:
The legacy code from SQL-Ledger has some issues with parsing passwords that contain either the equals sign ("=") or the ampersand (&). This is gradually being resolved in the LedgerSMB codebase but for now avoid using either of these characters in your passwords. The issue is that the equals and ampersand characters are used as delimiters in query strings and posted content - this is being worked on so should not be an issue "soon".

Googlebait: Symptoms of this include "Error! Cannot connect to datasource" and "no database driver specified and DBI_DSN env var not set at LedgerSMB/" (suspect this is for admin password).

Browser plugin
The noscript Firefox plugin can prevent the Super-user login and Password box from being created. Disable noscript on your login page.

Password "popup"
Installed in a fresh install of Ubuntu. All seemed fine on in the evening when I went home for the weekend. (I was able to login) Now when I login I get an other password request popup opening with: A username and password are being requested by The site says: "LedgerSMB"

The likely issue here is that the initial password creation temporarily valid, with the idea that the individual setting the password may not be the application user. Consequently the password has expired and you cannot log in.

To solve the Password "popup", you can do one of a couple things:
By: Chris Travers

1) You can locate your pg_hba.conf file and change the authentication type to "trust" briefly while logging in and changing your password. This requires telling PostgreSQL to reload its files (or restarting PostgreSQL)

2) You can log into PostgreSQL with something like: sudo -u postgres psql and then change the expiration date. (on Centos or Red Hat su to the postgres user and run psql: su - postgres) Something like:

ALTER USER 'myusername' WITH VALID UNTIL '2011-11-09';

Then when you log in, you should be able to change your password under the preferences screen or if it will expire within a week, it should pop up that screen when you log in, with a warning on top.

PostgreSQL authorization settings (pg_hba.conf)
Read the "pg_hba.conf settings for production"

The PostgreSQL doc about client authentication and pg_hba.conf

FAQ Category: 

The table below lists the compatibility of LedgerSMB versions with PostgreSQL versions. Products for which support has ceased due to End-of-Life date being reached are not listed and should not be used.

PostgreSQL compatibility
PostgreSQL 1.4.x 1.5 planned 1.6 planned
8.4 no no no
9.0 yes no no
9.1 yes no no
9.2 yes no no
9.3 yes no no
9.4  yes yes yes
9.5 yes yes yes

Versions 1.0, 1.1, 1.2 and 1.3 are not in this table due to the fact that they're past End of Life.

FAQ Category: 

LedgerSMB is a fork of a popular general ledger software package called SQL-Ledger largely written and maintained by Dieter Simader.

SMB is an acronym for Small Medium Business.

Some of the improvements that we've made to the code base so far include:

  • Enhanced security
  • More reports
  • An Open Development Model
  • Code quality improvements
  • Quality assurance measures (automated testing)
  • Better data integrity controls