From http://www.openvpms.org/project/eftpos-integration
This project will:

  • define an API to allow EFTPOS terminals to be used with OpenVPMS

  • change OpenVPMS payment and refund workflows to use EFTPOS if it has been configured

  • provide an OSGi container, to allow provider specific implementations of the POS API to be deployed at runtime

The API will support:

  • Payments (with cash out)

  • Refunds

  • Integrated receipt printing

Note that this project will not include any implementation of the POS API, as:

  • the required 3rd party libraries don't have suitable licenses

  • we don't want to tie OpenVPMS to any one provider

Payments and Refunds

The POS API for payments and refunds integrated with the existing payment and refund editors. The API will be invoked when:

  • the selected till is configured with a POS terminal; and

  • EFT or Credit is selected as the item type; and

  • Apply or OK Is pressed, and the payment hasn't already been processed

As there is no limit to the number of EFT or Credit items in a payment or refund, each of these will be processed one after another.

When a Credit item is processed, the card type used will be recorded.

Additional constraints will be placed on payment/refunds that have been processed via the POS API:

  • any EFT or Credit item will not be permitted to be deleted once it has been successfully processed

  • the payment/refund may not be deleted, irrespective of its status

Error Handling


Integrated Receipt Printing

Integrated receipt printing allows the POS terminal receipt to be included on the customer receipt. This is to support POS terminals that are not connected to a printer.

To support this:

  • The EFT and Credit items will be extended to allow the POS terminal receipt to be attached, as plain text

  • The Receipt template will be updated to include the POS terminal receipt, if present

  • The Check-Out workflow will be changed to include an option to print the receipt, as well as the customer invoice

OSGi Container

OpenVPMS will embed Apache Felix to allow providers to deploy implementations of the POS API to OpenVPMS at runtime.


POS terminal integration is enabled by:

  • setting a new flag "POS Terminal" on the relevant Till

  • deploying the provider implementation of the POS API to the OSGi container

Relationship to JavaPOS/UnifiedPOS

The POS API will be simpler to use than the JavaPOS/UnifiedPOS specification. It may be implemented using JavaPOS, XML-POS, or using a 3rd party library.




Tim Anderson


Tim Anderson