Last Modified 2011-12-15 by Guest


Minerva is an on-line invoicing application. The aim is to provide an complete standalone invoiceing system and provide invoicing functionality to other applications.

General futures

  • Custom invoice types (proforma, invoice, delivery note, ...)
  • Custom invoice statuses (paid, unpaid, rejected..)
  • Recurrence, automatic periodic invoice generation
  • Export invoice in XML (single invoice or multiply)
  • Export invoice list in CSV file
  • Reseller, tracking resellers revenue and resellers
  • Email drafts
  • Bank accounts list
  • Invoice drafts
  • Send custom text document to all/selected clients
  • Print several invoices at once
  • Mass download (in a zipfile)
  • Mass status change
  • Detailed advanced serach
  • Api to provide invoices for other modules


  • tracking of outgoing money from your company (when, to who...) display outcome dues in calendar
  • Bank accounts, track from which account the bill was paid

Statistics with graphs

  • Expired invoices, List and send notifications for expired invoices and send notify emails to client
  • Revenue, Calculate income and outcome in certain period confront the two calculation
  • Taxes, calculate taxes from selected invoices


  • for every invoice type you can set edit, delete, show permission
  • for every invoice status you can set edit, delete, show permission
  • recurrence access and generation


  • PHP 5.1
  • recent Horde CVS snapshot
  • Horde_Currencies from incubator
  • Horde_Taxes from incubator
  • Horde_Helper_* from incubator
  • Horde 4.0+


Additional to the default ones (proforma, invoice) you can create your own invoice/document type. For example if you manage goods. You first send items and wait delivery confirmation then issue the invoice. To track this, you can create a document type called delivery note. Send the created delivery note along with the items, and when the customer returns the signed paper, you just convert the delivery to the normal invoice with one click.

The first ordered one is the default.

Every document type has its own counter, restarted every year. The next document id is passed to preference invoice_name to create document name (human redable unique id). You can provide an id offset if you did not start with zero.


Like for types, you can create your own invoice statuses (default are Pending and Paid). And assign them to different invoice types by the statuses matrix in the the status administration form.


Templates are used to convert invoice data in a document pritable form. For every type there must be a corresponding template in /templates/convert/<type ID>.html. The temaplte file is processed with Horde_View.

You can have a file named footer.html and header.html which will be added on the top/bottom of the page. If header/footer fill be found, it will search for them in the main tempaltes folder. So you can have a general header/footer for all tempaltes.


You can assign access permission per ever status, type or outcome with the Horde Permission user interface. This allows you to limit the usage or access to different program parts or document statuses/types. For example you marketing department can create only proformas, but only the director can create the final invoice. Or for example your secretary can only update the status of the invoice to paid, but she can edit the invoice itself.


When an invoice is edited, the invoice is locked. The lock is held for 30 minutes or until the editing user exits the invoice editing page.


Recurrences has two main missons. The first is Favorites functionality. If you often create a new invoice with the same articles etc. You not need to search it in the invoice list. You can just click the create new invoice button from the reoccurence list and you will be redirected to the new invoice forum filled with the old invoice data.

The second feature is automatic invoice creation by a recurrence.php script. This script should be added to your cron job.


Minerva has not his own clients container. The invoice fields are free for typing everything you want.
But if Minerva detects the instalation of Turba Address book, you will see an Add client icon next to the client name filed. It will opens an pop-up with a simple browsing of your clients address book. Click on the client name, and the client data will fill the invoice form and the pop-up will close. The data are transferred to the invoice. And will remain unchanged, if you change or delete client data.


Nearly the same as for clients, articles can be added directly in the invoice or in imported from any application that has the listCostObject method (Merk, Whups, Nag etc) The required fields are: name, price, tax. All the other fields are optional. You can add any article detail only by altering the template and add column in the database table. Minerva will automatically check the table structure and dinamicaly fix its queries.