How to …

Start Invoicing

Follow the Installation instructions on this site to load SimpleInvoices on your system and set it up. These instructions will walk you through what is necessary to start generating invoices for your business. The setup process is meant to be simple and fully explained for each step of the process. Please advise this site administrator if you would like to recommend corrections or additions to the site instruction.

Preparing SimpleInvoices For Use

The first steps in using SimpleInvoices is to setup the base information, that is billers, customers, products, tax rates, and invoice preferences

Add Biller

  • A biller is the name and details of the person creating the invoice, ie you or your company
  • Open up SimpleInvoices in your browser (normally http://localhost/simpleinvoice)
  • In the main page click on the Insert Biller button
  • Once in the Insert Biller screen fill in the required fields and click the Insert Biller button
  • Now when you create an Invoice you will be able to select this biller

Add Customer

  • In the main page click on the Insert Customer button
  • Once in the Insert Customer screen fill in the required fields and click the Insert Customer button
  • Now when you create an Invoice you will be able to select this customer

Add Product

  • A product can be any item that you wish to appear in the Itemized Invoice. It can be anything you wish to sell and invoice – physical item ie. light bulbs or services such as an accounting service charge per hour/PC repairs/etc…
  • Note that products are only available when you create an Itemized Invoice
  • In the main page click on the Insert Product button
  • Once in the Insert Product screen fill in the required fields and click the Insert Product button
  • Now when you create an Itemized Invoice you will be able to select this product

Set Tax Rate

  • In some countries (USA, Australia, England, New Zealand, etc.), there are taxes on sales; normally called Sales Tax, GST(goods and services tax), or VAT (value added tax). SimpleInvoices has the ability to setup and define tax rates any and all of these various tax types.
  • To view the default tax rates select Manage Tax Rates from the Option menu.
  • This will now display all the available tax rates in SimpleInvoices
  • To edit an existing tax rate select the edit button next to the tax rate and in the edit screen update it with the new information and click the Save Tax Rate button
  • To add a new tax rate select from the Option menu Insert New Tax Rate
  • Fill in the required fields and click the Insert Tax Rate button
  • The new tax rate will now be available when creating a new invoice

Set Invoice Preferences

The Invoice Preferences is where you can set the various preferences of your invoices. Available preferences are:

  • Description: This is the name of the set of preferences
  • Currency sign: This is the currency symbol that will be used
  • Invoice heading: This is the heading of the invoice
  • Invoice wording: This is the invoice wording – ie if you enter Quote – in the Manage Invoices screen it’ll say Quote in the invoice type field and through that invoice it’ll say quote instead of invoice ie. Quote ID, Quote Date, etc.
  • Invoice detail heading: This is what will appear as the heading of the footer/details section of the invoice
  • Invoice detail line: This is the text that appear under the details/footer heading. Normally used to define payment terms etc.
  • Invoice payment method: This is the where you specify how you would like the customer to pay you, ie Cheque/money order/electronic funds transfer/etc.
  • Invoice payment line 1 name: This is where you can specify the payment line 1 name ie. Account name
  • Invoice payment line 1 value: This is where you can specify the payment line 1 value ie. The name of your back account
  • Invoice payment line 2 name: This is where you can specify the payment line 2 name ie. Account number
  • Invoice payment line 2 value: This is where you can specify the payment line 2 value ie. The name of your back account
Enable The Login/Authentication System

Simple Invoices has an optional login system to allow you to protect your install of Simple Invoices with a username/password system.

If you are using a version of Simple Invoices later than 2007 08 then all you have to do is edit config/config.ini and set authentication.enabled to true.

To do this just change the file from

authentication.enabled = false


authentication.enabled = true

That’s it – you can login with:

Email address

You can edit the username and password within Simple Invoices. To do this, select the People menu option and the Users option to access the list of users to maintain and add to.

Set Up System Defaults

In SimpleInvoices it’s possible to setup defaults for various values. The following default values are maintained in the System Defaults page; accessed from the SI Defaults menu link under the Settings tab:

  • Default Biller: Defines biller to use when creating a new invoice. It can be changed before saving the invoice.
  • Default Customer: Defines customer to use when creating a new invoice. It can be changed before saving the invoice.
  • Default Tax Rate: Defines tax rate to use when creating a new invoice. It can be changed before saving the invoice.
  • Default Invoice Preferences: Defines invoice preference (type) to use when creating a new invoice. It can be changed before saving the invoice.
  • Default Number of Line Items: Defines the number of line items displayed in an Itemized and Consulting invoice
  • Default Invoice Template: Defines the invoice template used to create the output displayed in PrintEmailPDFSpreadsheet and Document view modes.
Backup The Database

In order for the Simple Invoices database backup to work the first step is to make the tmp/database_backups directory (which is in the Simple Invoices directory) writable by the web-server.

  •  In Linux, cd to the Simple Invoices directory, cd /var/www/html/simpleinvoices, and chown the tmp/database_backups directory to the Apache web-server user, chown apache:apache tmp/database_backups.
  • In Windows, just browse to the tmp/database_backups folder and make sure its writable by all users.

With this completed, you can select the Backup Your Database option in the Dashboard. Then select the BACKUP DATABASE NOW option. This will backup the database and list each table that was backed up. Your backed up database will be stored in the tmp/database_backups directory with the file name of _backup_.sql.

If you encounter any errors, select the question mark on the ? Did you get fwrite errors? option at the bottom of the backup screen.

Change The Invoice Number Starting Point

SimpleInvoices has the ability to use different numbering sequences for different invoice types. The invoice types are defined in the si_preferences table and the numbering information is in the si_index table. This information is determined via the Inv Prefs menu link under the Settings tab. Note that prior to the master_2020 version, the si_index table was manually maintained.  With master_2020, the ability to set and maintain new numbering schemes is built into the Inv Prefs screens.

In the si_preferences table, the pref_description column specifies the different types of invoices. For example, InvoiceEstimate or Quote. The index_group column specifies pref_id of the si_preferences record that controls the numbering for invoices.

For example, say we want invoice types Invoice and Quote to use the same sequence and Estimate to have its own sequence.

  • In the Invoice and Quote preference records, the Invoice numbering group is set to Invoice which stores the pref_id for the Invoice record (1) in the index_group for both the Invoice and Quote records.
  • In the Estimate preference record, the Invoice numbering group is set to Estimate which stores the pref_id for the Estimate record (3) in the index_group.

When you are adding a new Inv Prefs entry, you have the choice of setting the Invoice numbering group to “-use this preference-“or to an established numbering group name such as Invoice and Estimate from the previous example. If set to an existing numbering group, invoices of this new Inv Prefs type will be numbered in that sequence. If set to “-use this preference-“, a Starting Number field will appear in which you can set the first number to assign to invoices of this new Inv Prefs type. If no starting number is specified, numbering will begin at 1.

When editing an existing Inv Prefs entry, if it does not have its own numbering group, you have the option to make it a numbering group or continue in the group it is assigned to. Once an Inv Prefs record is set to its own numbering group, you cannot change it back.

If records for an Inv Prefs type exist in the database and you want to change it to have its own number group, you can do this. When such a change is made by setting the Index numbering group to “-use this preference-“, a Starting Number field will appear. However, the initial setting will be one greater than the highest number assigned to any invoice of this Inv Prefs type, plus 1. For example, the Inv Prefs entry, Receipt, is part of the Invoice numbering group. When you edit this record, it shows you that the Next Number is 577. So, if you add an Invoice, Receipt or any other Inv Prefs type using the Invoice numbering group, that record will be assigned an index_id of 577. But if you set the numbering group for the Receipt to “-use this preference-“and the greatest index_id assigned to a record of type Receipt is 438, then the Starting Number field will be set to 439. You can change this to a higher value, but you cannot set it lower than this. This is the only way to assure there is no future numbering conflict.


Prior to master_2020’s ability to set the starting values, the set up was automatic if you wanted to start the numbering at 1. But it had to be manually set up if the starting value was to be any other number.

To set this up manually, you first create the Inv Prefs record and set the Invoice numbering group to “-use this preference-”. Find this record in the si_preferences table and make note of its pref_id and domain_id values.

Next create a new record in the si_index table with the following values:

  • id: Set to one less than the first number to be assign for invoices of this type. For example, if you want the numbers to start at 1000, set this field to 999.
  • node: Set to “invoice”.
  • sub_node: Set to the pref_id value from the new Inv Prefs record.
  • sub_node_2: Set to “0”.
  • domain_id: Set to the domain_id value from the new Inv Prefs record.

Once this record is created, you are ready to create invoices of this new type.

Setup Invoice Templates

An Invoice Template is the template that SimpleInvoices will use to create the Print Preview of the invoice. To choose which Invoice Template your SimpleInvoices will use:

  1. Go to the Settings tab and select the SI Defaults link.
  2. In the Systems Default page, the “Default invoice template” field shows the default that is currently used.
  3. To change default invoice template, click the edit button next to “Default invoice template” and another template to use from the drop down list and click save.
  4. Now when you select Print View of an invoice it will use this new Invoice Template.
Setup Biller Logos
  • SimpleInvoices allows for each biller to have their own logo displayed in the print formatted invoices.
  • To add a logo to a biller the first step is to upload your billers logo into the logo directory into SimpleInvoices directory on your system (templates/invoices/logos).
  • Once the logo has been uploaded the last step is to go into the Manage Billers page, edit the biller in question, select the logo file to use from the Logo file drop down list and Save the change.
  • Now when you generate a print image (Print view, PDF, spreadsheet, etc.), the logo assigned to the biller will be used.
Setup Special Logos For The Holidays

Currently SimpleInvoices supports special logos for holidays. To use them, make your holiday logo, name it yourlogonameholiday.png (assuming it is a .png file). Your normal logo will be named, yourlogoname.png.

The following list shows what holidays are supported and the logo name format that should be used to activate it:

  • New years: yourlogoname_newyears
  • Valentines: yourlogoname_valentines
  • Easter: yourlogoname_easter
  • Independence day: yourlogoname_independence
  • Thanksgiving: yourlogoname_thanksgiving
  • Christmas: yourlogoname_christmas
  • Shevat: yourlogoname_shevat
  • Purim: yourlogoname_purim
  • Passover: yourlogoname_passover
  • Shavuot: yourlogoname_shavuot
  • Rosh Hashana: yourlogoname_rosh_hashana
  • Yom Kippur: yourlogoname_yom_kipper
  • Chanukah: yourlogoname_chanukah

Example: You want a special logo for the month of December. Your normal logo file name is, mylogo.png. You make a modified logo for Christmas and name it, mylogo_christmas.png and save it in the templates/invoices/logos directory where your logo file is stored. Once this is done, the special logo will be will be used on all invoices and payment receipts generated during the month of December. For other months, the standard logo file will be used.

NOTE: The holiday logos must be the save file type as the standard logo. That is, if you use a jpeg file, the holiday logos must all be jpeg files.


Get Reports Working On Windows Using xampp Or wampserver

To enable reports to work on Windows:


  1. Open the php.ini
  2. Find the line ;extension=php_xsl.dll
  3. Uncomment the line by removing the semi-colon, “;,” from the front of the line.
  4. Restart the web-server to enable this feature.
Export To PDF, Spreadsheet Or Document
  • SimpleInvoices allows to the export of an invoice from the Quick View to a PDFSpreadsheet or Document format.
  • Default export formats are set to:
    1. PDF: Standard PDF form file downloaded to your computer or in attached to an Email in Email View.
    2. Excel (.xls): Spreadsheet file downloaded to your system. Can be changed to Open Spreadsheet (.od) format for access by Open Office.
    3. Word (.doc): Document file downloaded to your system. Can be changed to Open Document (.ods) format for access by Open Office.
  • The default formats and dimensions can be changed in the config/custom.config.php file. The following lines specify the configuration:
      export.spreadsheet      = xls
      export.wordprocessor    = doc
      export.pdf.screensize   = 510
      export.pdf.papersize    = Letter
      export.pdf.leftmargin   = 10
      export.pdf.rightmargin  = 10
      export.pdf.topmargin    = 10
      export.pdf.bottommargin = 10
  • Note: The config/custom.config.php settings for spreadsheet and word processor can be set to any value provided their associated program can read a HTML document.
Convert Numbers To Words
  1. Download this script:
  2. Extract the content of the downloaded file and copy the Numbers directory to Simple Invoices library directory.
  3. Open the includes/class/export.php file in your editor, (notepad, notepad++, vi, vim, etc.).
  4. Add this line at line 2: include(‘./library/Numbers/Words.php’);
  5. Search for the following line located at approximately line 216: $customFieldLabels = getCustomFieldLabels();. Copy and paste the following lines after it:
    $nw = new Numbers_Words();
    $invoice[‘total_in_words’] = $nw->toWords($invoice[‘total’]);
    $invoice[‘total_in_words_currency’] = $nw->toCurrency($invoice[‘total’]);
  6. Save the changed file.
  7. Next open templates/invoices/default/template.tpl file (or whatever template.tpl file you are using), in your editor.
    Wherever you want the total value of the invoice in words, paste this: {$invoice.total_in_words}
    Wherever you want the total value of the invoice in currency, paste this: {$invoice.total_in_words_currency}
  8. Save changed file.
  9. Delete the content of the cache folder, /tmp/cache/
  10. Test your changes by opening a new invoice in the print view.
Send Emails

For Simple Invoices to be able to send email you need access to an smtp server. This can be your ISP’s smtp server or other. But if you don’t have access to an smtp server you can install one on your PC. Below details some of the available option for each operating system



Mercury/Pegasus mail

  • (free)
  • (free)
  • (not-free)


If your not on Mac osx server or sendmail isn’t installed on your system, the sites listed below:

  • (free)
  • (not-free)


If your version of Linux doesn’t already come installed with one of the following mail servers, please install one as per your distributions installation procedures.

  • Postfix (free) ← This is the easiest option
  • Sendmail (free)


You can use Google GMail to send emails in Simple Invoices. Here are some example SMTP settings for it:

  • Outgoing Mail (SMTP) Server – requires TLS or SSL: (use authentication)
  • Use Authentication: Yes
  • Port for TLS/STARTTLS: 587
  • Port for SSL: 465


    • In the simple invoices configuration file (located at confic/custom.config.php) find the options starting with “email.”
    • Using the information in the example above you would set you config.ini to look like this: =
email.smtp_auth = true
email.username =
email.password = mypassword
email.smtpport = 465 = SSL
email.ack = false

Note: Be sure that SMTP/POP access is enabled in your email settings, and that your using the correct port. The SSL port is recommended not just for security but because some ISPs and/or firewalls may interfere otherwise.

Setup Default Invoices For Customers

You can set up a default invoice for each customer such that by the click of a button, a new invoice will be created from the default invoice for you to modify (if necessary) and save. Once saved, a new invoice number will be assigned to it. Here is how you do this:

  1. Click on the People tab followed by the Customers link on the menu line to display the customer list.
  2. Click on the Edit Customers icon () in the Actions column.
  3. Select an invoice to be the default from the dropdown list adjacent to the Default Invoice field and click on the Save button.
  4. To generate a new invoice from the default, click on the New Invoice for Customer … () icon in the Actions field. This will display the new copy of the default_invoice. Make any modifications needed to this invoice and then click the Save button to create the new invoice from the duplicate.

If you list the quick view of an invoice by selecting the view () icon from the invoice list, you can make that invoice the new default for the client it is for by doing the following:

  1. Expand the customer information section by selecting the magnifier () icon at the end of the Customer line.
  2. Select the load () icon at the end of the Default Invoice line.

A system wide default invoice can be set in the System Defaults screen accessed via the SI Defaults menu link under the Settings tab. It is used if you select the New Invoice for Customer… () icon for a customer that does not have an assigned default.

Finally, if no system wide default invoice is set and you select the New Invoice for Customer… () icon for a customer that has not been assigned a default invoice, an empty invoice will be presented for you to change and save; or to cancel if needed.

Setup Recurring Invoices



  1. You need mod_rewrite enabled in your apache configuration to make recurring invoice work.
  2. You also need access to a cron system – either unix cron or cpanel type cron so that you can schedule the recurrence to run each day.

How to

Create the recurrence:

  1. Get invoice number to be replicated. If necessary, create a new invoice for this purpose.
  2. Go to the recurrence page and create a new recurrence.
  3. Enter the invoice number from step 1.
  4. Select a start date for the recurrence.
  5. Select an end date only if the recurrence should stop after the end date. Otherwise leave this field empty.
  6. Specify the recurrence frequency by entering the number of periods in the text field and selecting the recurrence period from the drop down list. For example: 1 month, 4 weeks, 2 days etc.
  7. Select Yes if a copy of the new invoice should be sent to the Biller. Otherwise select No.
  8. Select Yes if a copy of the new invoice should be sent to the Customer. Otherwise select No.
  9. Click Save to save the new recurrence record.

Run the recurrence:

  1. Schedule a recurrence action using cron, webcron (like or cpanel cron.
  2. Add a new cron job that once a day, week, month, etc. executes a SimpleInvoices api-cron command. The form the command will take can vary depending on your host requirements. The example below use curl to submit the URL:
curl "http:/x/{simple-invoices-folder}/index.php?module=api&view=cron"
For example, to run the command at 1AM each day, the entry would look like:
 0 1 * * * curl "" >/dev/null 2>&1
Note that ">/dev/null 2>&1" was appended to the command to suppress and output message sent from the host each time the command is executed. This may not be needed on your system.
Using A Different Language

First, make sure there is a language file for your language. Language files are set up on the lang folder. For instance US english (SI default language file) is in the lang/en_US folder whereas the Dutch language file is in the lang/nl_NL folder. If there is no language file for your language, you can create one for the ISO locale code for your language.

The langauge file exists within the language folder. The common name is lang.php for all these files.

To change the langauge for your SI installation, there are several updates needed:

  • custom.config.php: Set The setting in custom.config.php controls the default locale that affects formatting of currency and other data fields. Set this value to the folder for your language. The default is en_US. So for Dutch, you set it to nl_NL, or Great Britain it would be en_GB.
  • Settings -> Inv Prefs: This affects the language used on PDFs and printer output for the various types of invoices. Change the Language and Locale for each of the invoice types.
  • Settings -> SI Defaults -> Language: This affects the langage file used by SI. Select your language from the drop down list.

When these changes are made, you should have the language changed across the board. If then you see values not translated, it is likely that that info in the your language file (ex: lang/nl_NL/lang.php for Dutch) has not been translated or is missing. If you fix this, it would be helpful if you could submit your changes to the SimpleInvoices Group Forum on this site so they can be incorporated into SI for future updates.

Note that the way the lang files work, is that if wording is in the specified lang file, it is used. If not, the wording in the default lang file (lang/en_US/lang.php) is used.

For example, the $LANG[‘save_inventory_failure’] text exists in the lang/nl_NL/lang.php file but has not been translated. Whereas the $LANG[‘help_company_logo’] text only exists in the default language file (lang/en_US/lang.php)e, so it is used.

To fix this, you would simple translate the $LANG[‘save_inventory_failure’] text in the lang/nl_NL/lang.php file but need to copy the $LANG[‘help_company_logo’] message to the lang/nl_NL/lang.php file and then translate it.

Note that the info in the lang.php files is alphabetized by the $LANG index value (which must remain as english for the code to work).

Payment Warehouse
Prior to this feature, if you submitted a payment amount that was more than the total due on an invoice, the payment was posted but the excess payment was ignored. The Payment Warehouse feature will now warn you that the amount paid exceeds the amount due and that if left unchanged, the excess amount will be warehoused for application to future invoices for this customer.

Once a warehouse record has been created, future payments will be required to apply the warehoused balance before “new” funds can be applied. This is automatic. The payment record will be prepopulated with warehoused information.

For example, a payment of $200 is posted to an invoice with $50 owing. This will result in $150 being warehoused. The next payment for this customer will be required to apply the warehoused payment until the $150 has been exhausted. So if the next invoice has $175 due, the payment record will be set up to apply $150 from the warehouse first before the remaining $25 can be paid from a new payment. If an attempt is made to pay more than the $150 warehoused total, a warning alert is displayed and a $150 maximum validation limit is placed on the amount field to prevent attempts to post anything greater than this amount.

The warehouse also keeps track of the payment type and restricts warehouse payments to that same type. So if the original payment came from check #5531, the payments from the warehouse will be for check #5531. This is automatic with the Payment Type and Check # fields being prepopulated and locked, forcing these values to be used.

An additional enhancement to the Payments screen when adding a new payment by using the Invoice drop down list to select the outstanding invoice to be paid, is that the selection of an invoice will cause all the fields to be prepopulated with the appropriate values the same as if the payment were select from the screen for that invoice.

Once all warehoused funds have been used, a new payment amount and source entered for the customer.

Additionally, a new Payment Warehouse menu item has been added to allow direct maintenance of warehoused information. This provides all modes of support: Add, Edit, and Delete.

Password Recovery

If you forget your SI user’s password, there are two ways to recover it.

  1. Contact the SI administrator and ask them to assign a new, temporary password to your user. You should change this to a new password after logging in with the temporary password.
  2. If you are the SI administrator, do the following:
    1. Change the authenticationEnabled setting in the config/custom.config.ini file to false.
    2. Access SI (no user login needed at this point) and change the password for your user.
    3. Change the authenticationEnabled setting in the config/custom.config.ini file to true.
    4. You can now log in with your user and the new password.