PrestaShop is a great ecommerce platform for B2C, but it offers few advanced features for B2B commerce. The first obstacle, ironically, is the B2B function itself. Going to Store Parameters > Customer Settings, we find the option “Enable B2B mode.” Merchants often activate it, but this feature is not only useless, poorly designed, and aimed at foreign markets, but it also creates confusion for both the customer and the merchant; confusion that often leads, especially in mixed ecommerce, to wrong choices. When in reality, it would be enough to look at what marketplaces like Amazon are already doing to manage the needs of business customers.

Many obstacles mainly concern micro, small, and medium enterprises, which are the reference point of the CMS.
I remember what these terms mean:

  • a micro enterprise refers to companies with fewer than 10 employees and a turnover of up to 2,000,000 euros.
  • a small enterprise is a company that employs fewer than 50 employees and has a turnover of up to 10,000,000 euros.
  • A medium enterprise is a company that employs up to 250 employees and has a turnover of up to 50,000,000 euros.

Precision is essential, even though we often talk about SMEs, the Italian production fabric; not everyone is clear about what they are.

B2B User Registration

In mixed B2B and B2C e-commerce, it is required that the B2B customer can select the type during account creation, and if they choose B2B, it remains deactivated and has additional fields to fill out in order to request access to the reserved price lists. For this issue, there are countless third-party modules, including our own in development.

I still believe that the approach of Amazon Business is much more correct, meaning a B2B user registers as B2C and then from their user panel, requests to be converted to a business account. This option integrates a set of functions that should be taken as an example. In pure B2B commerce, this problem does not arise; the user registers and will then be activated by the merchant. In many cases, the merchant's need is to create the reseller user and send them the access data; all manageable natively by PrestaShop, but it lacks the vital (for regulations) ability to force the customer to change their password upon first access.

Hide the prices

In B2B e-commerce, the need is to hide prices from those who are not logged in. PrestaShop natively allows this, but it lacks an important feature, namely the ability to write on the product page, where the add to cart button should be, that to see the prices, one must log in. It seems like a trivial function, but many B2B customers then call the seller to ask why they cannot see the price and why they cannot purchase the product. And all this for an expired session. There are several modules that offer this possibility, and even a simple modification to the theme's TPL allows for its integration.

Attention should also be paid to ensuring that prices are hidden everywhere, even when using third-party modules, as it can happen that prices are visible in the search preview, in related products, and in other parts of the e-commerce site.

Front-end messages for B2B clients

A highly requested feature is the ability to display messages dedicated to a specific user group, even at the individual product level. This function will be available in our B2B module currently under development.

SDI and PEC fields

Although electronic invoicing is mandatory in Italy, there is no native solution from PrestaShop to integrate the SDI and PEC fields; there are many solutions, including our module, but each integrates that data differently, creating a very varied ecosystem, and the absence of a standard makes integrations more difficult. This data should be placed on the billing addresses, not on the account as many solutions often do for simplicity. Unfortunately, a rule that prevents modifying the ps_address table by adding the two fields PEC and SDI to it, hinders the publication on Prestashop Addons of the most valid, simple, widely integrated, and robust solutions to manage this data which, although it is true that they are not mandatory for electronic invoicing, every B2B customer requires them to be provided to the merchant.

B2B commerce and management software

The first issue when approaching B2B commerce concerns integration with management systems. When we talk about B2B, we immediately refer to large companies that often use very complex management systems more related to accounting management than to inventory. Often, these management systems are outdated and do not offer modern integration possibilities. They are unable to use PrestaShop's APIs, nor the XML and JSON formats, even though electronic invoicing has brought about a renewal in the sector. It is not uncommon to encounter old systems like AS/400, or systems so outdated that communication can only occur through tab-delimited text files, which make one dream of the antiquated CSV format.

PrestaShop's APIs are a resource, which I discussed in: Basic Guide to PrestaShop WebService. However, there is a lack of clear documentation, accompanied by examples that allow companies developing management systems to understand and use this technology to connect their product to the CMS. As a result, many integrations are done through direct data injection via SQL into the Ecommerce platform's database. This solution causes endless problems that do not only concern data reading; the most common issues are the lack of execution of PrestaShop hooks that trigger various procedures when data is modified. For example, if we update a product, the CMS executes certain actions anchored in the update procedure. Actions that are often linked to additional modules that in turn update their own data and perform other actions ranging from sending an email to customers who have requested to be notified when the product is available again, to deleting the data from the cache, up to synchronizing the new quantity with the Marketplaces. Direct data injection via SQL often causes referential errors that lead to making the ecommerce unstable or to difficult-to-solve 500 errors that take the store offline. This choice is due to timing; a more organized and detailed documentation of PrestaShop's APIs could lead developers of often customized management solutions to use them. Unfortunately, the open-source and stand-alone nature of the CMS prevents imposing the APIs as SaaS platforms do, which deny direct access to the DB and are not subject to this erroneous practice.

B2B customer price list management features

The necessity is the most common issue regarding mixed B2B and B2C e-commerce, namely the ability to include multiple price lists and quantity discounts. Here, there are no major problems; PrestaShop allows for specific prices to be set for customer groups, categories, and quantity discounts. This can also be done at the individual customer level. So there are no issues on this point with PrestaShop; certainly, the fact that infinite price lists can be set up, and even a price list for each customer, can expose a retailer to misuse and not dedicating time to planning. The most common problem concerns integration with management software; few management systems allow the use of specific prices for reseller price lists. Even Danea, which is currently well integrated with PrestaShop, is limited in the number of manageable price lists and does not allow for indicating multiple discounts/prices specific to customer groups for a product. For example, while it is possible to manually indicate a price for a single unit and a price for bulk purchases of a product by a reseller customer, no management software currently allows for this management.

There are several modules that can help us manage mixed B2B and B2C e-commerce, including Hide Product for user group, which allows us to hide products from certain customer groups. PrestaShop allows categories to be made inaccessible to certain customer groups, but it is not possible to do this with individual products.

Hide products from a user group.

Another very useful module for B2B commerce is: Show additional prices (currencies, taxes, discounts) which allows us to display the price in various ways; it will be possible to show the price including VAT, below the price excluding VAT. One of the most requested features in business-to-business e-commerce. The module also allows us to display the price dedicated to another customer group, for example, to retailers; it will be possible to show not only the price dedicated to them but also the retail price of the product to the end consumer.

B2B Prices

Functionality for managing partial order fulfillment in B2B.

In B2B commerce, a highly requested activity is the partial order fulfillment. This function involves the ability to select the products and their respective quantities that are immediately fulfilled upon receiving an order, and to create a new order that references the original order. This is known as order splitting, where the original order is modified with the quantities and products that are shipped immediately, and the remaining items are moved into a new order, which will then be managed by the seller and the customer based on their contractual agreements. For this functionality, you can use our module Partial Order Delivery Management.

Bulk Order Functionality and Quotations

In B2B commerce, in some cases it is necessary to provide the possibility of creating wholesale orders; such an order is more similar to a purchase quote request, which will then be managed and finalized by the seller and re-sent to the customer for approval. There are third-party modules for this purpose, even if not specifically designed for this functionality, for example: Roja45: Quotations Pro

Useful Checkout Functions for B2B Customers

The possibility to add the following information to the order during Checkout:

  • Purchase order number
  • GL Code
  • Cost Center
  • Location
  • Project Code
  • Department

These are internal data of the customer making the purchase, often related to the need for control and authorization for the purchase. Such functions should be activatable and manageable from the customer's business account. In this regard, the system used by Amazon Business serves as a valid guideline.

Among these functions, an interesting feature is also the ability to send the order as pending approval. This is still an advanced functionality related to B2B that targets large companies. In this case, it is also predictable that there will be a need for multiple authorized accounts (people) to make purchases on behalf of the client company. Therefore:

  • Central Account that has access to purchasing settings and preferences
  • Multiple accounts that can purchase on behalf of the company
  • Ability to impose payment methods and spending limits for each purchasing department.

Deferred shipping cost calculation feature

In B2B e-commerce, especially for international shipping, the calculation of shipping costs is variable and very complex, often based on volumes and complex calculations for pallet formation. Customs duties and issues such as packaging diversity, for example, polystyrene, are banned in many countries. Especially from small wholesalers, there is a demand for the ability to receive orders without selecting the courier and to manually manage the entry of shipping costs in agreement with the customer. There are forms for modifying orders, but none are specifically designed for this issue and especially that have adequate functionality.

Another request concerning large companies is the volumetric calculation of shipping costs; the complexity in this case is high, and currently, there are no valid solutions. However, it is worth mentioning a module that can partially meet this need, allowing the customer to request a quote for shipping and complete the order after receiving it. The module is: Request Shipping Quote - Custom Shipping Rate

Here, the acquisition of PrestaShop by MBE should, in my opinion, lead to a highly integrated and advanced module for calculating shipping costs. A module that, through APIs, can provide the actual cost price, even for difficult areas, could be very useful in B2C e-commerce as well, and encourage the selection of MBE over other competitors. A similar solution exists for UPS, but not for Europe.

Purchase analysis functions for B2B clients

In the case of B2B users, there is often a need to provide analysis on purchases and exports that go far beyond the historical orders of PrestaShop.

In conclusion

PrestaShop is suitable for the B2B sector, but it currently requires customizations to equip it with those essential features. It is true, however, that there are not many alternatives; competitors like Magento or WooCommerce do not offer much more, in fact. B2B solutions are mostly customized, with the majority linked to management systems, which in this case are very scarce and limited. Today, no one can think of doing everything; if I am dealing with e-commerce platforms, I shouldn't even have the time to think about creating an accounting management system, a field in which I would not have sufficient experience and knowledge. Successful B2B e-commerce platforms are tailor-made, but even using the PHP Laravel framework, development costs and times are unsustainable for micro and small enterprises, and difficult to manage with market changes for medium-sized businesses.

Those who know PrestaShop will have noticed that I did not mention the multi-store feature, a native function of the CMS, but complex and unreliable. Since Monti allowed the creation of mixed B2B and B2C businesses in 2013, without the obligation to separate the two activities, creating a B2B and B2C in a multi-shop is just an unnecessary complication. However, there are situations where multi-shop is the only alternative, including the existence of separate warehouses and divergent product catalogs between B2B and B2C.

Citing Eric Steven Raymond, the clash between "the cathedral and the bazaar" shows all the advantages of open-source projects in quickly finding solutions and adapting to changes. And this is still true today, even more so for e-commerce platforms.

Our PrestaShop modules for B2B

Author: Loris Modena

SENIOR DEVELOPER

Per Ind Loris Modena, owner of Arte e Informatica, started working in the IT sector in 1989 as a system administrator responsible for the maintenance and installation of computer systems. He began programming for the web in 1997, focusing on CGI programming in PERL and later transitioning to programming in PHP and JavaScript. During this time, he became familiar with the Open Source world and the management of Linux servers.

Product added to wishlist