Posted in Concepts

Multivendor, Multistore, Marketplace

Multivendor is the commonly used word for very different ideas to use a shop with different vendors. We categorise them in 3 main fields. The main concept is that a shop belongs always to a legal entity, the vendor. A single vendor store just works always with virtuemart_vendor_id = 1. Almost any entity in VirtueMart has a vendorid. Products, categories, calculation rules, payments, shipments, medias, coupons, (users), and so on. When a manager without own vendorid logs into the store he gets the id=1. Also important is the attribute "shared", it allows any vendor to use the entity.

1. Wares and Cash flow is done by the mainvendor

This is used for commission handling or for sales agents. It uses a "mixed" cart, that means products of different vendors can be in the cart. VirtueMart handles 4 modes for the vendorId of the cart, the vendor is set

  • always to the mainvendor (with id=1)
  • by the first product
  • logged in vendor (agent)
  • selectable by shopper (shopper selects his agent)

This solutions are implemented completly and any variant is used in a live store. If a shoper is buying with a cart, which does not belong to the mainvendor, an xref table keeps the relation between vendor and shopper. This maybe enhanced to keep relations for any product, not just by the vendorid of the cart.

2. Wares flow by the vendor, cash flow by the mainvendor

Not used yet, but it should also work, besides the automatic messaging system which sends automatically emails to the vendors.

3. Wares and cash by the vendor

This solution requires multicart, that means any product is collected in the cart with the corresponding vendor. This means that we can create more than one cart, depending by the vendor. This is not implemented yet, but planned. Methods are configurable by vendor already.

It is possible to use one cart for different vendors as long the cash flow is always going over the main vendor. If every vendor should have its own payment or shipment method, it makes no sense to have all the products in one cart. Customers might have to initiate 3 seperate payments for 5 products in the cart, you will incur massive legal problems, it is bloody difficult to generate different invoices, ...and so forth. So we will solve that like the big players. Every vendor will get his own cart. The carts bear the vendor_id and every product is directly added to the correct cart. Then the customer can go through each of the carts and do the checkout.

How to activate

Activate your desired mode in the vm config, first tab. Then go to the userlist and select the desired user and make it a vendor. Be aware a pure joomla user cannot be toggled in the list, the edit screen must be used (a user created in joomla is missing the vmuser table). After the user is toggled as vendor, the additional vendor tab appears in the edit view.

Missing at the moment is a userfield which allows users to register as vendor.


When there are problems to store the "shop", then there is a problem with the vendorid, this can happen due a migration. The table #__virtuemart_vmusers must be checked. It is important that any virtuemart_vendor_id is used exactly one time.

Another method to solve problems like this is to use the second tab of the tools view and to use the button "Set store owner". The user id is written in the last column of the user list.

Multistore, Multishop

means different stores on one installation. This is to be avoided, because it's at the expense of flexibility, security and performance. It makes sense though, to create a shop with a shared database using a joomla multisite component. For example in case a big company has different shops serving different countries. But it is too simple conceived that you can have completly different stores on one joomla/vm2 installation to spare maintaince. There are a lot of cheaper and more flexible methods available.