VirtueMart 4

We are pleased to release a new VirtueMart generation, which adds compatibility with Joomla 4 and PHP8. VirtueMart 4 comes with a new overridable Bootstrap 3 frontend template (Bootstrap 5 will follow soon) and new backend template. Of course there are also new features for the product presentation, a lot of bugfixes and some new programming techniques. We originally had planned to release this on Christmas, but it was not possible to keep the date due to many changes applied to joomla 4 after it's initial release. We still have to iron out a few minor complications with it, but it already works for a number of early adopters..

The Backend Template

The new backend template uses VMUI-Kit. Unluckily this is not ideal for Joomla 4, but BS5 will be added soon. You can choose between four different color styles and it works well on mobiles. Updaters must install it manually, because it is handled as an installable template and is not part of the VirtueMart core installation package.

New backend features and tools

VirtueMart 4 not only has a new look, but also new functions in the backend. For example, Multivariants with children can now be autogenerated with permutating variants. Customfields can have their own SKU, GTIN, MPN. The order status was previously limited to a single character and is now extended to 3 chars. The category dropdown in the "product.edit" view now also lists unpublished categories. Original language flags (as we have already for other edits) now added to the payment and shipment edit views. RuposTel donated a google like search for products and orders. So for example use sku:mySkuToSearch to let VM search only within the SKUs.

Also there are two new maintenance tools. The first one is a synchronizer consisting of three buttons, which sets country 2, country 3 and country numerical code in the country list correctly according to ISO 3166. The second one is a converter button for changing old utf8mb3 tables to utf8mb4 tables.

New frontend template

Spyros Petrakis has generously donated his Horme3 template for the VirtueMart Core. Another new feature which you will find most useful is the the setting for different Bootstrap layouts, which was not fully implemented yet and therefore useless, ...until now! Selecting the Bootstrap 3 layouts in the configuration will load these layouts from the core. So we can now use any Bootstrap 3 template without overrides, because VirtueMart 4 loads the Horme3 ones. This also gives new users the possibility to use old override techniques. We are planning to extend this technique to modules and css. Work is already in progress to provide the same technique for Bootstrap 5.

The javascript also received a general overhaul, so it is more reliable, should work better on different browsers and is easier to handle for templaters (working relative or with classes instead of ids). The new fancybox is working with the new jQuery version now.


The payment plugin Paybox got a general overhaul and works now with 3Dsecure V2

Product Bundles

are a very mighty new feature. It can be used as typical bundle of different products for one price. This was also possible before by just creating a product which listed the included products. But this method required a lot maintenance. The inventory just listed a sold bundle, but did not update the inventory per product. If you sold a bundled product also as a bulk-version, then the system used two different products. If you updated the price of the bulk version, nothing changed on the bundles version. Not any longer! The new product bundles make real bundles of different existing VirtueMart products. They can be included for free or also as variants with an extra price. The prices can be a fixed amount or a percentage. So it can also be used for cross-selling and discounts.

Extra related product groups

are also used for cross-selling or presentation of complementary items. They are basically the same as the default related products, but can have another title and appear somewhere on product details page.

Better search with tags

Enhanced search using the customfield searchable tag system. Searching for more than 1 tag now displays only products fitting to any requested tag..

Keep cart content for guests

Added storing of carts for unregistered users as a cookie. This works only for SSL secured pages.

and more

  • really a lot work on caches (internal, external), table indexes and other optimisations.
  • additionally general work to please the JED Checker.
  • option to display thumbnails to select children of multivariants.
  • different email layouts by order status to enhance the customer communication.
  • you can create a category menu item which clears the cart by category.

Changes for developers

ATTENTION: Triggers are case sensitive in joomla 4!
Changed triggers:

  • plgVmOnStoreProduct($data, $plugin_param) changed to function plgVmOnStoreProduct($data, $plugin_param, $key)
  • plgVmonSelectedCalculatePrice to plgVmOnSelectedCalculatePrice (lower to upper case)
  • in calculation plgVmOnDisplayEdit to plgVmOnDisplayEditCalc

new triggers

  • product and order model, added new trigger plgVmMySortSearchListProductsQuery respectivly plgVmMySortSearchListOrdersQuery in exeSortSearchListQuery which is at begin and can takeover the whole function (for searchplugins)

Plugin Handler

  • Added vdispatcher.php as proxy for the joomla dispatcher
  • We can use now $results = vDispatcher::trigger('event', array(param1, param2,...));
  • the directTrigger can now execute a certain event of a plugin family, too.
  • added function reloadPlugins, which loads again the payment/shipment methods of the plugins. The cart unloads them, if they do not fit, 3rd party developer can reload them, that way.


  • setConvertDecimal for plugins, tables
  • set datefields for tables
  • $this->_genericVendorId = false prevents that the tables sets the virtuemart_vendor_id generically
  • added extra parameter to vmuploader so that it works also with other input names
  • the product model sortSearchListQuery is now working with an extra parameter, which can override an "Request" variables. So using old vRequests parameters is just used as fallback now.
  • function getProductListing is now using request params only for the group "products", not for the other groups like featured, recent, topten, and so on
  • vmecho again a bit enhanced, if debug is activated vmInfo are quequed as vmdebug (so the messages appear in the real order)
  • field products, added a category filter
  • changed ajax js for dynamic page reload, a ready script in the layout is not needed anylonger
  • added cart functions getCartWeight and getCartQuantity
  • removed the problem that a delivery note created an invoiceNumber
  • Time of the calculationHelper considers offset

DOWNLOAD VirtueMart 4

VirtueMart 4 for Joomla 4

We know you are all expecting VirtueMart 4 for Joomla 4 to be released soon. We are almost there. Our new version is being tested daily in various test environments and most features are working to our satisfaction. So well, in fact, that the first VM testers are planning to go live with smaller stores soon.

VirtueMart 4 Update Procedure

Upgrade or Migration? Don't worry, the changes in Joomla 4 are substantial in some areas, but we have made sure that you can update from VirtueMart 3 to VirtueMart 4 like a normal update, mostly with just a click of a button. We can provide you with an installation package that is compatible with Joomla 3 and Joomla 4.

VirtueMart 4 loves Testers

Panorama Lilienstein von Waitsdorf

Saxonian Swizz Lilienstein, Copyright Max Milbers

Next Release

We will soon provide a new version, even if it is not yet fully perfected for Joomla 4, as we have also made many enhancements for existing VirtueMart stores with Joomla 3.

When to Update?

Joomla 3.10 is officially supported until August 17, 2023. So there is no need to rush to update to Joomla 4 immediately. Joomla 4 is still a new software, so we recommend to wait a bit with live store updates until the community has fully tested Joomla 4. New software always tends to have some bugs that need to be discovered and ironed out in the beginning.

Help Joomla 4 and VirtueMart 4 by testing in your test environments.

We expect that late spring 2022 will be a good time to update the first live stores without any problems.

Release VirtueMart 3.8.8 - Updated administrator interface template design

Here are some words by the leader of VirtueMart (Max Milbers): These are ambivalent times. On one hand life changed completly for most members, on the other hand it offers new opportunities. In my case, I am currently very busy with the lockdown problems. Literally getting a simple screw is suddenly a big time consuming problem. Politics divide people and business. I got indirect questions, asking if VirtueMart is going to take measures concerning it's 'political correct use'. When I joined VirtueMart, my goal was to create a free shop system for the people. VirtueMart is a free Open source system for anyone. No community member can controll, what you sell with it. It is not our responsibility. Personally I believe in the good will of people and that no one should judge about others without walking in their shoes for a while. We, the VirtueMart communtiy, have members all over the world. Let's keep it that way!

Now back to VirtueMart. We tried already a year ago to create a new admin template. This time our team member Valerie Isaksen of broke through the obstacles and lightend a new fire for the new administrator template. The old template will be later merged into the new template and provided as style, or theme (it won't be exactly the same). The new admin template is currently provided as backend template. Updaters should use our package (use the big blue download button) to get the new admin template. You can just install the package over your current installation. It ensures that you get also the latest tcpdf and vmbeez. But you can also extract it and install the This way ensures that the changes in the backend template do not interfere any productive installation.

Updated administrator interface template design

A new administrator template is available for testing which improves mobile and desktop appearance and usability for shop administrators.

Modern icons are used to represent key features and give the interface a cleaner appearance.

Feedback tells us that the rich core features and configuration flexibility remain a core aspect of why VirtueMart is a great choice for Joomla ecommerce.

This is therefore a template UI update and not a complete redesign of administration pages. Shop owners will still find their business information and configurations in the same place.

A small number of configuration screens have had their look slightly modified using icons and give a more consistent alignment of features/fieldnames with input/selection.

VirtueMart 3 component (core and AIO)


  • Sidebar
    • Cleaner look and feel toggle functionality.
    • Is hidden completely and available via slide or overlay toggle in all views - giving more space for information to be displayed
  • Mobile/Tablet:
    • List displays for the majority of VM administration functions now wrap effectively.
    • Function selections (filter/search) are shown correctly.
    • Alignment of fieldname with selection/input facilitates easier desktop viewing and significantly improves UI on Mobile/Tablets.
  • General
    • General improved use of icons.
    • Cleaner tab selections for multipage configurations.
    • Simple radio yes/no selectors now align with Joomla UI look and feel.
    • Image view and upload - small design change improvement for Products/Categories/Manufacturers and Media.

VirtueMart 3 component (core and AIO)

New features, enhancements, fixes

Enhanced or new

  • Skrill payment update
  • Removed shop is offline feature. Added instead a link showing better possibilities todo that (Using joomla or catalog mode).
  • Restriction for shipment/payment byCoupon
  • Extra order note. Just a simple note for orders for internal use.
  • Order list searches now also for the customer_note and order_note
  • Order list now also filterable by vendor
  • New options of storing carts (currently per hidden configuration)
    1. #CartsDontSave = 0 //dont store carts for logged in shoppers
    2. #CartsDontSaveByshoppergroup=50 //dont store carts for shoppers in this shoppergroup
    3. #CartsDontSaveCartFields=1 //dont store cart fields when storing a cart for a shopper
  • Order model function getOrder loads now the whole data of an order status (interesting for templaters)
  • Multiple category filter for product list in the backend. Disabled by default, currently you can enable it by hidden config AllowMultipleCatsFilter=1

New for developer

  • new pattern if an array is given, and we need the first item then we use now reset and not the 0 item.
  • New Trigger in storeProductCustomfields, for removed customfields.
  • Added "andWhere" function to parameter to VmTableXarray load function, added function loadOrderingCurrentItem
  • VmTable cleaned ordering, added function loadOrderingCurrentItem
  • PHP 8 compatibility, bugs may still occur.


  • Ordering for products
  • All nasty warnings like "Warning: Parameter 1 to plgVmShipmentWeight_countries::plgVmOnSelectCheckShipment() expected to be a reference, value given in /var/www/vhosts/..../libraries/joomla/event/event.php on line 70"
  • time for coupons is from now on not "NOW" but "timestamp_utc"
  • Fix for 1054 Unknown column 'Array' in 'where clause after update to 3.8.6 Fix for ordering of products if products of subcategories shown
  • The order detail links in the email consider the case, that neither guest link, nor registered is set
  • Feature that registered users must activate themself
  • getUserInfoInUserFields getting the right joomla user data per given id
  • Missing cart error message in js
  • Missing '' for constant VMPATH_ROOT in installer script
  • Removed useless \n in Sample shop decription
  • getVendorAddressFields when a administrator and vendor edits another vendor.
  • category model calls to clearCategoryRelatedCaches
  • language of shipment plugin in order view
  • added chosenDropDowns in cart default shopperform
  • little fix for custom cartlayout
  • Copyright years updated, renamed variables and other minors
  • fixed a lot warnings of the type "Deprecated: Required parameter $isSite follows optional parameter $selectedCategories in /var/www/vhosts/.../administrator/components/com_virtuemart/helpers/shopfunctions.php on line 652". So we are already prepared for PHP8.

VirtueMart 3 component (core and AIO)

Security Release VirtueMart 3.8.6 Closing an XSS Vulnerability

A new XSS was found by 4N_CURZE ( It took a while to reproduce it, because it was caused by the manufactuer dropdown, which is not always activated. The problem itself was easy to fix, although the value was whitelisted everywhere else, it was missing for the manufacturer drop-down list.

Since the previous release some features got added. The long desired multicart system got implemented. Multicart means for a multi-vendor shop, that there is an extra cart for each vendor. So when a customer buys products from different vendors he needs to do a checkout for every vendor. This system is very interesting for real marketplaces, which offer products of different vendors.

Another nice new feature are payment/shipment restrictions by coupons. This can be used to offer customers other payment methods over the phone, such as bank transfer for example. Or it can be used for marketing campaigns like "use this coupon to get free shipment".

The textinput plugin can now be used for mandatory text, as we have introduced a required characters check. iStraxx contributed the toggleCartButton.js with MIT license for the required characters check.

StAn of RuposTel has provided a useful overhaul of the VirtueMart recaptcha system. It now works according to the new Joomla standards and works with any joomla captcha plugin. Read more about this on

VirtueMart 3 component (core and AIO)



  • Added MultiCart system
  • Cart module, replaced link to cart against button, old links should still work
  • Vendor dropdown for Categories.
  • Added the feature that subvendors can check orders, but only if at least one product of them is on the order.


Extended features

  • Added shipment/payment restriction by Coupon
  • Added required chars to the textinput plugin
  • Added layout orderdone for weight_countries plugin, which can be used to override the standard output
  • Added a warning to the vmconfig if the price config is overwritten by shoppergroups.
  • Product edit view and model, added filter for published/unpublished, added searching of products in multiple categories



  • Added VM config setting ReInjectJLanguage, which replaces the Joomla JLanguage object with VmLanguage
  • Update for the VirtueMart System Plugin, for multilanguage as it may be useful to load the VM config always first
  • Replaced $languages = JLanguageHelper::createLanguageList against $JLanguages = JHtml::_('contentlanguage.existing')



  • XSS leak fixed in manufacturer dropdown
  • Recaptcha Overhaul by StAn of RuposTel



  • PayPal refund configuration option to prevent VM generating a request for PayPal refund
  • Small paypal enhancement, inspired by RuposTel and written by Quorvia



  • category model added function getChildCategoryListObjectByCachedOption which is now used by getChildCategoryList and getChildCategoryListObjectByCachedOption  
  • function getSafePathFor can now be used to create any kind of subfolder
  • custom model, directTrigger for plgVmDeclarePluginParamsCustomVM3 and plgVmGetTablePluginParams vmplugin.php enhanced function declarePluginParams
  • Fixed customfield model cache. We load now always all attributes and cache that. and we use directTrigger for plgVmDeclarePluginParamsCustomVM3
  • user model, added cache
  • user model, set the function "setId" to deprecated. The use of the internal id as pointer is useless. The function getUser should now be called with id, but usese as fallback the old $this->_id construction
  • userfield model added JPluginHelper::importPlugin('user'); to the getUserFieldsFor function
  • iStraxx added the toggleCartButton.js with MIT license, need for the textinput required letters. 
  • Invoice, the product is always reloaded to create the item. 



  • Small fix for coupons using the correct language
  • Fixed that Calculation rules were not including the given end day, because the hours and seconds were not set
  • added registration of Vm Controller and View to massxref.php
  • vmTable warning if a key of the params is accidently empty
  • Added _genericVendorId to vmtable and fallback 
  • tables/order_items.php added the very important $this->_genericVendorId = false to fix virtuemart_vendor_id of order items.
  • Updates for the joomla fullinstaller
  • little fix for updatesmigration in case of multivendor store
  • little fix for the tableupdater to prevent notice.
  • important fix for the backend user view to ensure that the correct addresses are loaded.
  • fixes for tcpdf to work on higher php versions
  • fixed function updateCategory for the xref data
  • fixed tooltip in config (check for existing lang key did not work the old way anylonger)
  • mail_raw_pricelist.php replaced $item->product_final_price against $item->product_subtotal_with_tax

Skrill Merchant On Boarding, VirtueMart 3.8.4

Great update of the Skrill Plugin

Trusted by millions across the globe Skrill meets the needs of more than 156,000 businesses worldwide providing a convenient and secure way to send and receive money in nearly 200 countries and 40 currencies.

Our payments platform comes with an exclusive reduced fee offer of 0.9% on Debit Card/Prepaid Card/Credit Card (VISA, Mastercard, Maestro) transactions, and 0.5% fees on Rapid Transfer transactions.*
*Fees apply to new merchants only within restricted industry sectors. Terms and conditions apply.

CCRT ShoppingCartPartners 900x516 EN CTA

What this module does for you:

  • Free and quick setup
  • Access credit cards and 100+ local payment solutions with 1 easy integration
  • Take advantage of the Skrill multicurrency account, giving you access to 40+ currencies
  • High-security standards and anti-fraud technology
  • Seamless payment experience across mobile, tablet and desktop
  • Connect with millions of Skrill account holders


  • Additional payment options and control over how they are displayed
  • Customizable gateway with embedded page and redirect functionality
  • Instant settlement
  • Enhanced reporting and transaction status viewing
  • Refund capability within VirtueMart

What your customers will like:

  • Easy ways to pay safely online – no sign-up required to make payments
  • Convenient and immediate payments – pay with a bank account, or debit and credit cards without any hassle
  • Multiple local payment options allowing customers to pay how they want
  • Internationally recognized and trusted brand

Don’t have an account? Sign up for free today!


VirtueMart 3 component (core and AIO)

VirtueMart, List of Bugfixes:

    • PayPal Smartbuttons should not redirect in checkout if called without redirect option
    • removed useless mod_virtuemart_product_helper and other minors
    • enhanced displayIt function, it resolves now all parameters to an array and only the non empty ones are written. It is also possible now to remove the parameter src completly or replace it with another name. For example when the array has 'src' => 'data-src', then the parameter src is renamed to data-src and filled with the correct URL.
    • enhanced lazyLoad configuration, added GUI option in template tab of vm config
    • css addtocart, addtocart-disabled and notify, All buttons should have the same height.
    • New language variables for new reviews feature.New language variables for new reviews feature.
    • Mediahandler adjustment php7.4
    • order updateBill sql a plus was not commented
    • country table added UNIQUE to the indexes of country 2 and country 3 code.
    • added Paraguay states
    • removed old jquery.min we use now always the joomla one.
    • created GUI for hidden config pricesbyCurrency, extended it by one option (restrictiv)
    • Pagination for coupon analytics
    • fixed wrong invoice numbers generated if fired in the order edit view
    • translated address in cart (translated countries)
    • fixed router in case sef is disabled and an array is used in the url
    • it could happen that payment or shipment was not set due a conflicting js, the js is now unbound for these radios
    • renderMetaEdit added real option for "index, follow".

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.