OpenVPMS has a powerful and flexible product pricing system.

Price makeup

Products have two components to their price:

Fixed - this is the fixed component - it is effectively the 'flag fall'
Unit - this is the 'per item' component

Hence if something has a fixed price of $10 and a unit price of $1, then the total price for 4 is $14.

In general things that have no overhead such as cans of food will have no fixed price, and only a unit price. Things that have an overhead - such as tablets where you want to charge a dispensing fee as well as the per-tablet price, will have a fixed price representing the dispensing fee and a unit price for the tablet. You can also use this approach for services, where you might want to set a fixed price for some surgery, and a unit price that represents the per-hour charge for the theatre time. [Note that an alterative to this appoach is to have mutiple fixed prices - see below - so that you have different prices for different length operations.]


Fixed and unit prices may be entered both exclusive and inclusive of tax.
The exclusive tax price is stored, whilst the inclusive tax price is calculated from the tax-exclusive price and the tax rates associated with the product, product type or practice.

The practice Show Prices Tax Inclusive option determines if fixed and unit prices in Products - Information and during product selection should be displayed inclusive or exclusive of tax.

Price Entry

When setting the price, you can provide:

  • a tax-exclusive Cost price and a Markup percentage, and the system will calculate the:
    • tax-exclusive Price using:
      Cost * (1 + Markup / 100)
    • the Tax-inclusive Price using:
      Price * (1 + tax / 100)
  • a tax-exclusive Price. The Tax-inclusive Price and Markup will be calculated.
  • a Tax-inclusive Price. The tax-exclusive Price and Markup will be calculated.


The Cost and tax-exclusive Price can be expressed to 3 decimal places; the tax-inclusive price is rounded according to Price Rounding below.



Prices also have from/to applicability dates.  This allows you to keep previous prices for reference purposes. It also allows you to set future prices, ie one that will take effect on some future date.


A product can have its price set from a 'price template'.  This allows the Fixed price component of a number of products to be set from a standard value.

Multiple Prices

It is possible to set multiple fixed prices for a product, each with its own name. When the product is called up when generating an invoice, the fixed price field will have a pull-down which can be used to show the available prices (with their names) as follows. Note that here the 150/medium price has been set as the default and so is initially displayed.

Service Ratios

Service ratios can be used to apply a multiplier to prices for products of a given product type at a given Practice Location. The multiplier is used when generating charges or estimates. This facility is designed to enable different Locations (such as those used for over-night emergency or house-call operations) to charge more for products of certain types.

Pricing Groups

Prices can be assigned Pricing Groups to enable different pricing for a product at different Practice Locations. If a Practice Location is assigned a Pricing Group, it only sees the Prices that have:

  • the same Pricing Group
  • no Pricing Group

To use Pricing Groups:

  • create a Pricing Group for each demographic that needs to be represented.
  • configure Practice Locations to use those Pricing Groups. One Pricing Group may be shared by multiple locations.
  • assign Pricing Groups to Prices.

Pricing Groups are similar to Service Ratios in that they both support different prices for a product at different Practice Locations. Whilst Service Ratios are simpler to set up, Pricing Groups enable:

  • different pricing of individual products, rather than just types of products
  • the ability to enter a rounded price
  • product price history
  • prices to be exported and imported, per Practice Location

Price Rounding

Tax-inclusive prices are rounded to the default number of decimal places for the currency.

This can be changed by specifying a Minimum Price on the practice Currency.

The practice currency can be selected in Adminstration>Organisation>Practice.

The currency is a lookup, the rounding can be changed by editing the lookup in Administration>Lookups

E.g., to round prices to the nearest 5 cents, specify 0.05 for the Minimum Price.

Tax-inclusive prices will be rounded to the Minimum Price:

  • when editing a product, and the Cost, Markup, or Price is changed
  • after a Service Ratio is applied during charges or estimates
  • a delivery is finalised that triggers an update to a unit price

Note that the Markup and Max Discount may be recalculated after the price is rounded.

Tax-inclusive prices will not be rounded to the Minimum Price:

  • if the price is manually entered during charging or estimating
  • if they are imported

Negative Prices

You can set as price as a negative amount - although this is not really kosher. Negative prices are used with a product that is in fact a discount. This enables you to have a discount line item on the invoice. For the standard way to apply discounts, see Concepts|Discounts.


Syndicate content