Suppose you are focused on providing products or services to other businesses (B2B) instead of individual customers. In that case, you might wonder if standard eCommerce software is the right choice for business-to-business transactions. Business customers often have unique needs and challenges, such as customized orders and compliance standards.
Indeed, the purchasing process can be quite different in that case. Usually, the final purchase decision involves a lot more people. Multiple people might be involved in adding products to the cart. Somebody else could be responsible for adding shipping, payment, and invoicing details, and sometimes, an additional person has to approve it. When dealing with organizations, it is common to have individually negotiated discounts, shipping, or payment terms. Even if using the same shop for B2B is possible, it makes sense to make a few adjustments that will make orders for organizations easier.
Example features
Let’s examine what features in the shop will accommodate business users and how they might look. Our B2B module includes all the necessary features to facilitate complex operations in the business-to-business eCommerce landscape effectively. Some of the key features include:
- Organization management with permissions – The designated account within the organization has to be able to add and remove other members and assign them permissions to other features within the organization.
- Shared cart – all organization members should be able to add products to the same cart, so later, it can become one order
- Shared billing data managed by an organization admin
- Shared shipping address
- Order management with the ability to pay for the orders
- Ability to view organization invoices
- Ability to restrict promotion to a single organization so it has a custom discount
- Ability to restrict shipping methods or payment methods to just some organizations.
How can we implement all of these in the organization management
You will need to create a new resource for storing organization data, as described in Sylius’ documentation. This will allow you to store organizations’ names and additional relevant information, such as tax identification data. Thanks to the Sylius Grid Bundle, you will also be able to see and manage organization details in your Sylius admin dashboard. Additionally, administrators can set specific individual prices for products tailored to the needs of different users, allowing for greater flexibility in pricing strategies.
Next, you will need to create an association between the User entity and the organization, giving it additional properties, like ‘role within the organization’, or ‘is this association verified by the organization administrator. Extending Sylius CustomerType and the relevant template will be required to allow customers to add additional data during the registration process. You can create additional controllers to handle the approval process by organization admins, and finally, you can implement a feature that allows basic user management within an organization. This feature can be enhanced by implementing customer groups pricing lists, which allow businesses to create customized pricing lists for different categories of customers.

Sharing carts and orders within an organization can be implemented by modifying the Order entity, which is used for both carts and orders. You will need to add an association between the cart and the organization if this is a cart created by an organization user. Conveniently, Sylius uses CartContext for getting the current user’s cart and this can be extended with logic needed for cart sharing within the organization. Some adjustments will be needed where orders are displayed to show orders made within organizations properly. This can be further optimized by using tailored pricing lists, enabling a more personalized pricing strategy that can include discounts or promotions for targeted customer segments.
Addresses can be modified in a similar way. You will need to add an association with the organization, create a place to manage organization addresses for organization admins, and finally extend Sylius AddressType to allow organization users to use organization addresses as a shipping destination. This approach can be particularly beneficial for specific customer groups, allowing businesses to tailor pricing and promotions for different categories of customers such as wholesalers and distributors.

Organization orders list can be implemented using Sylius resource bundle and grid bundle. You will need to add appropriate configuration, filtering, and custom templates but it should be possible to get nice looking views, consistent with non-organization users view, without much code.

Using the Sylius invoicing plugin, by modifying its grid configuration, it should be easy to add basic invoicing functionality for organizations without much coding. However, you may also decide to implement your own custom invoicing feature. Similar to organization orders list, it should be possible to display invoices – no matter how they are created in the system, without much new code. Some template changes and some configuration will be needed. Thanks again to Sylius resource & grid bundle combo.

Handling an organization’s promotions, shipping methods, and payment methods can all be handled in a similar fashion. For each, you will need to create a rule, the rule’s configuration form, and the rule checker combination. Rules will allow You to restrict methods and promotions when new methods and promotions are added by the general shop administrator. I suggest you also use a grid bundle and create new grids to show promotions and methods applicable to selected organizations. This can really help you not to get lost if you have a lot of individually assigned methods.
How long will it take with just a few clicks?
As you can see, changes do not seem very complicated, but there are a lot of them. With just a few clicks, you can manage various aspects of your online store. There are many places, especially in the templates, where you need to take into account whether it is an individual customer or maybe a customer buying for an organization case and display things correctly. Quick shopping features allow users to add multiple items and variants with minimal navigation, enhancing the overall purchasing experience.
Some of the features you might not need, or maybe you want some different ones, maybe personalized wishlists that can be created by the user but added to the cart by any user in the organization. Or perhaps you need some complicated custom invoicing feature. Numerous categories can streamline the shopping experience by allowing users to quickly place wholesale orders using product identifiers. Maybe you have already customized your shop heavily, and all these changes will be more complex than they seem at the simple Sylius installation.
There is also another way, you could use organization plugin that is a part of B2B suite Sylius Plus module. Among other features it already includes described organization functionality.
Online stores in the B2B sector often deal with larger transaction volumes and minimum order quantities (MOQ), which differentiates them from standard B2C stores. This allows for cost efficiency and competitive advantage through negotiation.
If you have any questions about the blog, or the functionality and implementation of eCommerce B2B, please contact us! We will answer all your questions.