5 best open source platforms for B2B ecommerce
Tags: javascript, opensource, webdev, programming
Published: 2022-12-13 13:23:36

B2B ecommerce can be a complicated matter and imposes new requirements for an ecommerce platform compared to what is required to handle regular B2C commerce.

Getting an overview of the B2B features that are supported out-of-the-box in the different open source solutions available in the market can likewise be challenging. Therefore, I spent some time together with [Carlos Padilla](https://www.linkedin.com/in/carlos-padilla-3a7679139/) researching:

- What are the 10 most critical features to support a scaleable B2B ecommerce setup?
- How well do the 5 most popular open source platforms compare across these features?

Below is a summary of the findings.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dfoxbpg6ouv9qwvobko2.png)

## Why use open source for B2B commerce

### What is an open source commerce platform

Before jumping into it, let’s get the definitions right.

**Open source** refers to the source code of the platform being fully publicly available for anyone to view, modify, and distribute freely.

**B2B ecommerce** refers to the direct sale of products or services between two businesses through an online sales portal. For instance, between a manufacturer and a wholesaler.

### The benefits of open source commerce platforms

Businesses and their development teams often benefit from open source commerce platforms as they can take full control of the code base. This gives them the flexibility to build bespoke commerce setups. 

Newer open source commerce platforms have especially focused on the composability of the platform. This makes it possible for merchants to set up a tech stack of their preference while giving their development teams the possibility of mingling directly with the core to customize it to their preference. This is not possible with proprietary platforms.

This flexibility is the reason why the majority of the world’s top 250k ecommerce sites today use either open source or custom-built platforms to power their ecommerce setups. You can read more about this in [our recent Open Source B2B Ecommerce Perspective](https://medusajs.com/b2b-commerce-platform).

### Why does flexibility matter for B2B businesses

The benefits of platform flexibility are only amplified in the world of B2B-oriented businesses.

B2B is a complex area in commerce as you need to handle a lot of aspects that not considered in B2C. This includes customer groups, customer-differentiated pricing & discounts, separate B2B product catalogs, and more. 

In addition, the integration landscape becomes more complex due to the need for integrations with ERP systems, more advanced fulfillment systems, new omnichannel experiences on the frontend, etc.

This requires flexible systems that are geared toward handling more bespoke cases. That is the reason why most B2B businesses end up building completely from scratch or hacking their setup together using a proprietary platform.

## The 10 Most Important B2B Ecommerce Features

First, we identified the 10 most important features to have for an ecommerce platform that needs to support B2B cases. We determined the features based on conversations with existing B2B ecommerce managers & developers, along with requirement specifications from our own B2B cases.

Below are the 10 features:

- **Customer groups** are a way to group customers with similar characteristics. This feature helps define unique B2B and custom logic for one particular subset of customers, for instance, specific pricing, promotions, or access levels.
- **Price lists** allow setting different B2B prices for different customer groups. This is used to add a sale or override the pricing of one or more products based on specific conditions.
- **Sales Channels** allow separating B2C and B2B customer experiences. Businesses can define different products for different channels. For example, B2B customers can see and purchase different products than B2C customers on the same interface.
- **Dynamic order management** allows businesses to perform granular order handling for B2B customers, including creating a new order on their behalf, adding payments, defining shipping addresses, or changing the order status.
- **Bulk imports** allow for the handling of larger B2B product catalogs by importing them from files, such as CSV files. Resources can be products, orders, customers, prices, etc.
- **Multi-currency support** enables B2B customers to order in their local currency catering to global B2B customers.
- **Payment flexibility** means the ability to configure different payment methods based on regional settings. This allows global B2B customers to choose the payment method that is available in their region.
- **Product configurations** allow merchants to associate unlimited custom attributes and options with their products. For a B2B case, the product catalog can get very complex. So, advanced product configurations provide additional information about a product to help customers make better purchase decisions.
- **Advanced search** allows B2B customers with large catalogs to refine the search and discovery criteria and to display results quickly and accurately. Some advanced search strategies include typo tolerance, intuitive search, synonyms, keyword discovery, and faceted search.
- **Native headless ecommerce** refers to offering a solution where the frontend and backend of an ecommerce system are independent. From a B2B perspective, this allows businesses to offer omnichannel support by simultaneously developing different implementations for different channels. For example, developing a mobile application and a web app.

_**Legend**_

✅ = Supported

➕ = Supported via plugin

❌ = Not supported

## Medusa (JS/TS)

- ✅ **Customer groups** are available out-of-the-box and can be used for making discounts and promotions available for B2B wholesalers or retailer groups.
- ✅ **Price lists** are available out-of-the-box and allow you to specify custom pricing for each B2B customer group. Importing prices from a CSV file into a price list is available to better handle larger assortments.
- ✅ **Sales channels** allow you to manage order logistics and product data differently for each sales channel. You can create a B2B sales channel, specify which products are available in it, and process B2B orders in its own flow. You can do all of that from the same platform you manage B2C customers. At the moment of writing this, sales channels must be manually enabled using [feature flags](https://docs.medusajs.com/advanced/backend/feature-flags/toggle/).
- ✅ The **dynamic order management** allows you to create manual draft orders, add existing or custom products as purchased items, and specify custom shipping amounts. Moreover, you can cancel the draft order or mark it as paid.
- ✅ **Bulk imports** for products and prices are available out-of-the-box; you can see the import process and check its status or cancel it. It's also effortless to extend the functionality to import other resources like orders or customers by [creating batch jobs](https://docs.medusajs.com/advanced/backend/batch-jobs/create) with the Admin API.
- ✅ **Multi-currency support** is available out of the box; you can add multiple currencies and set product prices for each currency and region. Regions represent one or more countries and have their own currency. Customers can choose the region based on their currency and location.
- ✅ Medusa offers **payment flexibility** as you can specify which payment providers and methods are available for each region. Medusa offers plugins for [PayPal](https://docs.medusajs.com/add-plugins/paypal) and [Stripe](https://docs.medusajs.com/add-plugins/stripe), but there are many payment community plugins.
- ✅ Aside from basic product configuration such as general details or product collection, Medusa allows you to add **advanced product configurations** including unlimited options and variants, a metadata field to include any custom configurations, pricing per currency and region, and more.
- ➕ In Medusa, **advanced search** can be implemented by integrating any search engine. Medusa offers official plugins for [Algolia](https://docs.medusajs.com/add-plugins/algolia) and [MeiliSearch](https://docs.medusajs.com/add-plugins/meilisearch). By integrating these powerful search engines, you can utilize their advanced search functionalities. When you add or update products on your Medusa server, the changes are reflected on the indices in the integrated search engine.
- ✅ Medusa is a flexible **headless commerce** platform with a backend that holds all the store's logic and data. It offers Admin and Store REST APIs to interact with the backend. It also offers an intuitive Medusa admin and Jamstack storefront starters.

### Who should use Medusa

Medusa covers nine of the ten features, leaving out only one feature you can add by using plugins. 

Medusa is one of the newest solutions on the market but has been used in production since 2018. It provides a powerful and flexible solution built on a composable architecture making it easy to customize the solution to specific user needs.

Businesses with a B2B ecommerce model should consider Medusa as it provides scalability, extendibility, and strong customization options. It’s also a powerful solution for developers preferring Node.js as it is the most used option in the Javascript and Typescript categories.

## Magento (PHP)

- ✅ Magento uses **customer groups** to determine available discounts and taxes associated with the group. You can also set pricing rules for groups.
- ❌ **Prices lists** aren't offered, but it has catalog and cart price rules where you can apply discounts to specific products based on conditions. However, you can't override the price of products explicitly.
- ❌ The **sales channels** feature is not available in the open source version. This feature is available through extensions for Adobe Commerce but only supports specific sales channels such as Walmart or Amazon. However, it doesn't offer customizable sales channels.
- ✅ The **dynamic order management** lets you create manual orders from the Admin by selecting the customer and adding products. Also, you can fill up the order currency and apply coupon codes, payment, and shipping methods.
- ✅ **Bulk imports** are available out-of-the-box, allowing users to import many records in a single operation. They can import new products and update, replace, and delete existing sets of products.
- ✅ Magento supports **multi-currency** as it allows you to accept currencies from more than 200 countries worldwide. You can customize the currency symbols, change the displayed symbol of currencies, and import currency rates.
- ✅ **Payment flexibility** is supported by offering various offline methods such as cash on delivery, bank transfer payment, or check/money order methods that you can set for each store. For online methods, there are numerous integrations and gateways for third-party providers.
- ✅ You can edit the general product information and add media such as images or videos for **product configuration**. Also, you can customize product options and generate product variations with those options, and manage pricing and inventory.
- ✅ You must install and configure Elasticsearch or OpenSearch for a basic search or use the paid module Live search for an **advanced search**.
- ❌ Magento is not a **native headless commerce** platform. However, you can access its data through a REST API by making a new integration in the Admin panel or using the GraphQl API developed for the Storefront.

### Who Should Use Magento

Magento covers seven of ten parameters and lacks price lists, sales channels, and a native headless solution. Although Magento provides powerful ecommerce features, the lack of these important B2B features can make it an unfit platforms for B2B businesses.

Putting the missing features aside, B2B ecommerce models can consider Magento if they need a centralized ecommerce system and want to be on the market fast. Also, they want a convenient website builder that meets all their needs, such as integrations or automated wholesale web applications.

> You can [read this article](https://medusajs.com/blog/medusa-vs-magento-comparing-two-open-source-ecommerce-frameworks/) to directly compare Medusa and Magento in terms of ecommerce features and developer experience.
> 

## Sylius (PHP)

- ✅ **Customer groups** are available by default and are used to attach cart promotions to offer a discount to customers that belong to specific groups. You can't add customers in bulk to a group.
- ❌ **Price lists** are not available since Sylius provides product prices per channel. Inside each product, you must set a current, an original, and a minimum price for each channel.
- ✅ The **sales channels** feature is available out of the box. You can configure general information, shop billing data, currencies and countries, and look and feel for each channel.
- ➕ Sylius doesn't offer **dynamic order management** by default. However, there is an official plugin that allows administrators to create **manual orders**.
- ➕ Sylius doesn't have **bulk import** by default. However, there is an approved plugin in the community that allows importing countries, customer groups, payment methods, tax categories, customers, and products.
- ✅ Sylius offers **multi-currency support** because you can set the base currency for each channel. However, you can't specify the price of a product per currency.
- ✅ Sylius has **payment flexibility** because you can set different payment methods for each channel. They offer a default configuration to use PayPal and Stripe as payment providers.
- ✅ In Sylius, **configurable products** can have different variations and attributes. You can edit products' general information, set their categories, and add many product attributes and images.
- ➕ They have a grid filter to search by product name for a basic search. Sylius don't support **advanced search** by default, but you can use a plugin to extend Sylius’ basic search functionality with ElasticSearch.
- ✅ Sylius is a **headless native platform** that offers Admin and Shop APIs. A new unified Sylius API is still under development and is tagged as experimental.

### Who should use Sylius

Sylius covers six of ten parameters, but two can be added through integrations. It fails to provide some essential features that B2B ecommerce businesses need to create different user experiences for different types of customers.

On the other hand, a B2B ecommerce business can use Sylius if it wants to provide excellent conditions to maintain extensive data and have a proven track of flexibility towards customers' needs and scale of operations.

## Spree (Ruby)

- ❌ **Customer groups** are unavailable in Spree, and there isn't an official extension to add them.
- ❌ There are no **price lists**, and you can’t override product prices explicitly or bulk import prices. However, you can use promotions with rules and conditions to set custom pricing for products, users, and carts.
- ❌ In Spree, the **sales channels** feature is unavailable, and there isn't an official extension to add it.
- ✅ Spree offers **dynamic order management** by default. You can create **manual orders** from the admin panel, add products, quantities, and customer details, and choose the shipping method. You can also add order discounts and payments.
- ❌ **Bulk imports** are not supported, and there isn't an official integration to add this functionality. Some plugins can help to make bulk imports, but they seem outdated on GitHub.
- ✅ **Multi-currency support** is available out-of-the-box; each store can have multiple locales and currencies, but you can't specify the price of a product per currency. If there is more than one currency, visitors can choose which they would like to use to browse the store.
- ❌ Spree doesn't offer **payment flexibility** because you can't specify payment methods by region or country, even if you have multiple payment methods, including online and offline options.
- ✅ For **product configurations**, you can edit product details and taxonomies. You can also set product option types to manage variant types and add custom attributes and prices for each product.
- ➕ In Spree, there isn't any **advanced search** functionality. Still, you can add an Elasticsearch integration with an extension that allows full-text searching and advanced product filtering.
- ✅ Spree is a modular **headless ecommerce** platform with two APIs. You can build an application-to-application integration and leverage its permission sets based on resource access.

### Who should use Spree

Spree only covers four features out-of-the-box and one more through integrations. So, using Spree can be a challenge for B2B businesses as they have to implement these features themselves for a full B2B experience.

If B2B ecommerce businesses choose Spree they’ll benefit from its versatile, modular open-source ecommerce platform that allows for easy integrations. Also, Spree's order handling system is the best fit for business models needing to do multiple actions on their customers' orders.

## Prestashop (PHP)

- ✅ PrestaShop allows you to give customers certain privileges by assigning them to **customer** **groups**. By default, there are three groups available: visitor, guest, and customer. You can’t delete the default groups, but you can add new ones.
- ❌ **Price lists** aren't available by default and you can't override the price of products explicitly. It has catalog price rules to assign price reductions by category, brand, supplier, attribute, or feature, to a range of products using conditions.
- ❌ The **sales channels** feature is unavailable in Prestashop, and there isn't an official extension to add it.
- ✅ In Prestashop, **dynamic** **order management** is available by default. You can create **manual orders**, but they are called back-office orders. You can provide customer details, products, vouchers, and addresses and organize the shipping and payment. Also, you can send pre-filled orders to customers.
- ✅ **Bulk imports** are available out of the box. You can import everything into Prestashop: categories, products, customers, addresses, brands, suppliers, etc. You can also use other file formats besides CSV for the import.
- ✅ PrestaShop has **multi-currency support**, but you can't specify the price of a product per currency. You can add and configure new currencies to meet customers' needs. Currency exchange rates are calculated from one store's default currency unit.
- ✅ In Prestashop, you can set **payment methods** by currency, customer groups, or countries. Check and bank wire is the only payment methods enabled by default. However, you can install other payment modules from the Prestashop add-ons marketplace.
- ✅ You can edit product details on the **product configuration** page and add quantities, combinations, virtual products, and other stock-related options. You can set pricing options and manage your product's visibility, particular references, attached files, or suppliers.
- ➕ Prestashop has an internal search engine from which you can configure its behavior. Also, you can install a community or paid extension from their marketplace for **advanced search** functionalities.
- ❌ Prestashop is a web application, not a **headless native platform**. You can enable the shop's web service so third-party tools can access the data.

### Who should use Prestashop

Prestashop covers out-of-the-box six of ten parameters, and you can add one more feature through their marketplace integration.

For B2B ecommerce businesses looking for essential features like page management and a Multi-store to sell internationally, Prestashop could be a good option; it supports over 60 languages. Prestashop's administrative panel can be adapted to the business's needs and developed in line with the growth goals.

However, Prestashop doesn't offer price lists and sales channels nor provide a native headless architecture, which is unsuitable for B2B business models looking for extensibility and customization.

## Want more?

There are plenty of good resources to discover more about B2B and open source ecommerce:

- Download our Perspective on the Open Source B2B Ecommerce industry on our [B2B-page.](https://medusajs.com/b2b-commerce-platform)
- Check out our tutorial on how you set up Medusa to support B2B: [Part 1](https://medusajs.com/blog/medusa-b2b-part-1) & [Part 2](https://medusajs.com/blog/medusa-b2b-part-2).