Discover VirtueMart's Features

Powering Your E-commerce Experience
  • Flexible Product Management:

    VirtueMart enables easy management of products, categories, attributes, and variants, allowing administrators to efficiently organize and showcase their merchandise.

  • Multi-Language Support:

    With built-in multi-language support, VirtueMart caters to international markets, allowing users to create and manage multilingual online stores.

  • Multiple Payment Gateways:

    VirtueMart supports various payment gateways, including PayPal, Stripe, Authorize.Net, and more, offering flexibility in accepting payments securely.

  • Shipping and Tax Calculation:

    The platform provides tools for calculating shipping costs and taxes based on different parameters such as weight, destination, and tax rates, streamlining the checkout process.

  • Inventory Management:

    VirtueMart offers inventory management features, including stock tracking, low-stock notifications, and backorder management, helping users keep track of their inventory levels.

  • SEO-Friendly:

    The platform is designed with search engine optimization (SEO) in mind, providing features such as customizable URLs, meta tags, and sitemaps to improve online visibility and rankings.

  • Extensions and Add-ons:

    VirtueMart offers a wide range of extensions and add-ons, allowing users to extend the functionality of their online store with additional features and integrations.

  • VirtueMart 4.2 including new PayPal Checkout

    Yes a new mayor sub version as it would be sub number 24 already. On the other hand, this version works now very well on Joomla 3 and of course Joomla 4.3 and PHP8.2. So most things have settled in 4.0.22 and compared to last autumn we had almost no bugs to fix. So this stability should also be reflected in the version number and therefore 4.2!Some have already noticed, after years of maintaining our root server on our own, our developer server went down. But thanks to our members, we can...

    Read More …


It is not possible any longer to update automatically via the live updater.

Download the latest version of VirtueMart

  1. Unzip the downloaded archive
  2. Go to the Joomla Installer
  3. Upload both packages ( and

And your VirtueMart store is updated.

In the new version you have installed, the live updater has been removed and replaced by the Joomla updater. New versions notifications will be notified on the control panel, and the updates will be done via Extensions >Extensions Manager > Update.


Notes for 2.6, New minimum requirement is php5.3.10

PHP 5.2.x is EOL since 3 years and 3 months. From the view of a technician or programmer there is no need to say that php5.2.x is completly outdated and unsecure. There are no fixes anylonger since 3 years, please read here There are some critical issues in the encryption functions in the php5.2 versions. We worked as best backward compatible, but bugs are more likely. We even suggest to use php5.5 latest.

Therefore the new minimum requirement for VirtueMart is php5.3.10

Fix for 2.0.26d

The difference between 2.0.26c and 2.0.25d is just one line fixing pagination, which got broken for the canonical manufacturer links. We are sorry for that.

Fixes 2.0.26a,b,c

version a introduced the memory leak, which happened if the logfile could not be created and a bigger vmError was thrown version b has a fix for this. The other fixes are for the router, small enhancementes for the cart (your customers will like it)

Important information before updating to 2.0.26

The update to vm2.0.26 is strongly recommended. In case you are using already the native One Page Checkout option of VirtueMart 2 and created an override, please read here

List of new features and bugs fixed

Fixes for 2.0.24c

The version c is more robust then the 24b version. 3rd party category modules should run again without problems. It mainly contains the fix described here Some users experienced missing products in the category view, even with default layout. Just go in the vm config to the ordering settings, choose product name and store it one time. After that configure your desired setting. 

Fixes for 2.0.24b

The version 2.0.24b fixes mainly two problems in 2.0.24a,

  • one is that the category ordering is always by name and not using the manual ordering
  • the other is that the invoice is not using the layout override.
  • Category tree cache was not always used and not always correctly updated
in case you are using the old categorieS view or a module by 3rd party or if you get "Using $this when not in object", then please read here


Improvements and fixes for 2.0.24a

The version 2.0.24a is mainly a bugfix release. The update should be easy, no changes for layouts. The new version is more robust.
We fixed the ordering of categories, there was a small error so that always the manual ordering was selected. So please check the configuration of your ordering settings! If you have trouble updating your store, please visit

Improvements and fixes for 2.0.22c

Very important security release. Update ASAP. Please do not use the liveupdater. Just use the liveupdater to download the files, but not for installation. Just use hte normal installation routine provided by joomla. Also you should disable for a clean installation the akeeba installer in case you use it. We are sorry, but we had not the time yet to replace the liveupdater with a better system.

Improvements and fixes for 2.0.22a

Fixed the problem with the language, the problem for category_id=0, listing of orders.

This is just a bug fix of the 2.0.22. Check the news

Improvements and fixes for 2.0.22

People with mutilanguage page should use the 2.0.22a. Everything else should work as before. No special action need. The new features like fancybox and chosen js are deactivated after updating. Go to the vm config and try it, it depends on your template and used js if it makes sense for you. There are also new settings to define the orderstatus to send the emails. You should check after the update if it fits for you. Furthermore there is a slightly change in the cart view. The Coupon is using no extra sign anylonger. So check how your coupons look in the cart.

If you like the project VirtueMart please vote for us here

Improvements and fixes for 2.0.20

Besides the setting of the email address (vendor or joomla) everything should work as before. No special action need. If you like the project VirtueMart please vote for us here

Version B is only need if you use parents and child products. More info here

Improvements and fixes for the 2.0.18

First stay cool :-) . This release do not contain any layout changes which disturb layout overwrites. This release is to make the code more robust and secure. Please also update your AIO. This is mainly a security release and the reason we gave it an own version number. All known bugs are fixed. If you are afraid to update, be sure to at least update your paypal plugin. Versions below 2.0.10 are considered as unsecure. The "a" version has a fix if you use an unpublished product as pattern and some people got a problem with the add to cart button. In this case you should install the 2.0.18a over 2.0.18 .

Improvements and fixes for the 2.0.16

We are very happy that we can announce that the update to 2.0.16 wont break your overwrites. We suggest anyway to take a look on the 80% of the changes are only interesting for shops with multiple currencies and just show the mails, etc in the currency choosen by the shopper. Just in case you see this error message after updating "Exception in loadConfig for unserialize dateformat b:0", then just enter your shop config and store it one time, to remove the old values. Same for the error ".../currencydisplay.php on line 60 Fatal error: require_once(): Failed opening ..."

Improvements and fixes for the 2.0.14

Changes between VM2.0.10 to VM2.0.12 in the layouts

We are sorry for the frequent updates lately. This happened due the reason that we started to soon with adding new features for the new 2.2 but then we had todo a quickfix and the problems arised. We are aware of the problems, but are very certain that a fast reaction is better than to wait too long. The F version got extra hours tested and should work confident.
Changes from a to f:
the changes are not in any layout files. Therefore all updates from 2.0.12-2.0.12f should be easy. The c version were almost bugfree, but suddenly we got the serious paypal bug with the quantity (cart got doubled by quantity). The new filter for the files made trouble using unicode alias and the partly implemented multiprices destroyed inheriting of prices. Additionally due a restructuring the frontend editing was broken (these 1 minute fixes). These 4 serious bugs are the reason we had to react fast and in that frequence. All should be cleared now.

All the changes in images

Templaters should know
"The renderVendorAddress was used one time in the view.html.php of the invoice view, it is still there, but we use now in the view.html.php always
$vendor->vendorFields = $vendorModel->getVendorAddressFields();
the result is buffered and used in renderVendorAddress. So it should use less resource, additionally templaters can use the $this-vendor->vendorFields as they are used to it with the userFields already"

It is still backward compatible, but we will remove the "this->vendorAddress" from the invoice view next time. So use directly shopfunctions::renderVendorAddress in the layout (be aware that the third parameter is for skipping fields)

Layout changes

line 34 add

$document->addScriptDeclaration ("
jQuery(document).ready(function($) {
if ( $('#STsameAsBTjs').is(':checked') ) {
} else {
$('#STsameAsBTjs').click(function(event) {
$('#STsameAsBT').val('1') ;
} else {
$('#STsameAsBT').val('0') ;


line 144 add

STsameAsBT; ?>'/>


line 71 replace

echo VmHtml::checkbox('STsameAsBT',$this->cart->STsameAsBT).'


echo VmHtml::checkbox('STsameAsBTjs',$this->cart->STsameAsBT).'


Changes between VM2.0.8 to VM2.0.10 in the layouts

You can download the file It contains pictures showing the changes.

Changes between VM2.0.6 to VM2.0.8 in the layouts or API of VirtueMart 2

The 2.0.8a version contains only the fixes for the vendor address and the pagination. Direkt link of this page

replace all adminform by adminForm in the following files

  • components/com_virtuemart/views/user/tmpl/edit_address_userfields.php
  • components/com_virtuemart/views/user/tmpl/edit_vendor.php
  • views/user/tmpl/edit_vmshopper.php

in components/com_virtuemart/views/cart/tmpl/default.php



replaced by:


file in components/com_virtuemart/views/cart/tmpl/default_pricelist.php



replaced by


file in components/com_virtuemart/views/invoice/tmpl/mail_html_header.php


replaced by

file in components/com_virtuemart/views/invoice/tmpl/mail_raw_vendor.php


echo str_replace("
", "\n", JText::sprintf('COM_VIRTUEMART_MAIL_VENDOR_CONTENT',$this->vendor->vendor_store_name,$this->shopperName,$this->currency->priceDisplay($this->orderDetails['details']['BT']['order_total']),$this->orderDetails['details']['BT']['order_number'] ));

replaced by

echo JText::sprintf('COM_VIRTUEMART_CART_NOTIFY_MAIL_RAW', $this->productName,$this->url);

file components/com_virtuemart/views/productdetails/tmpl/default.php


if (!empty($this->product->product_availability)) {     $stockhandle = VmConfig::get('stockhandle', 'none');     if ($stockhandle == 'risetime' and ($this->product->product_in_stock - $this->product->product_ordered) 
	<!--?php } } 

file components/com_virtuemart/views/user/tmpl/edit_address.php


if ($this->fTask === 'savecartuser') {     $rtask = 'registercartuser'; } else {     $rtask = 'registercheckoutuser'; }

replaced by

if ($this->fTask === 'savecartuser') {     $rtask = 'registercartuser'; $url=0; } else {     $rtask = 'registercheckoutuser'; $url = JRoute::_('index.php?option=com_virtuemart&view=cart&task=checkout',$this->useXHTML,$this->useSSL); }


echo shopFunctionsF::getLoginForm(false);

replaced by

echo shopFunctionsF::getLoginForm(true,false,$url);

added after


the following line:


file components/com_virtuemart/views/user/tmpl/edit_address_userfields.php



replaced by

     if(is_array($this->userFields['fields'])) { reset($this->userFields['fields']);     }

file components/com_virtuemart/views/user/tmpl/edit_shopper.php



replaced by




replaced by


file components/com_virtuemart/views/user/tmpl/edit_vmshopper.php



replaced by


replaced by

Optional Changes between VM2.0.6 to VM2.0.8 in the layouts or API of VirtueMart 2

file in components/com_virtuemart/views/cart/tmpl/default.php


After those lines

*/ // This displays the pricelist MUST be done with tables, because it is also used for the emails echo $this->loadTemplate('pricelist'); if ($this->checkout_task) $taskRoute = '&task='.$this->checkout_task; else $taskRoute =''; ?>

add those lines


file in components/com_virtuemart/views/category/tmpl/default.php



replaced by:

if ( empty($this->keyword) ) { ?>

add those lines


file in components/com_virtuemart/views/manufacturer/tmpl/details.php


if (!empty($manufacturerImage)) { ?>

replaced by:

if (!empty($this->manufacturerImage)) { ?>  

file in components/com_virtuemart/views/orders/tmpl/details.php

vendor->vendor_name .' - '.$this->vendor->vendor_phone ?>

replaced by

vendor->vendor_name .' - '.$this->vendor->vendor_phone ?>

file components/com_virtuemart/views/productdetails/tmpl/default.php


// Product Navigation END



If you still have problems, you can upload this file It includes some pictures showing where the changes must be done.

Changes from previous versions

Changes from previous versions

Subscribe to our News

Delivered by FeedBurner

See it live!





I just wanted to let you know how impressed I am with Virtuemart now. I had toyed around with Virtuemart earlier in 2008 and it is amazing at the difference between there and now. You people are doing great work!