Duration: 23:51
☕ The Brew Masters Story: From B2C to B2B
Jago Busha, Business Analyst at Odoo's Antwerp office, kicks off with a thought-provoking question: "If your website were a salesperson, would you hire them?" Would they be your top performer? This framing sets the stage for understanding what makes a great B2B website: clarity, easy browsing, and seamless ordering.
The case study centers on Brew Masters, a coffee shop in Antwerp that started with a foldable table at the Saturday market. They grew into a successful B2C operation with a physical shop and thriving e-commerce site. But as B2B customers started approaching them ("Can I buy coffee in bulk?"), Brew Masters realized they weren't prepared.
Three major pain points emerged:
- Pack Variety: B2C customers buy 1 kilo; B2B customers want 10, 15, 20, 30 kilos. Managing this with product variants was a nightmare.
- Price Management: B2B customers negotiate volume discounts. Tracking custom pricing per customer in spreadsheets was error-prone and unsustainable.
- Online Ordering: Customers don't want to call or email. They want self-service ordering, 24/7.
Odoo solved all three problems—elegantly, with minimal customization.
📦 Packaging: Say Goodbye to Variant Hell
The Problem: Previously, different package sizes required separate product variants. If you sold coffee in 250g, 500g, 1kg, 5kg, and 10kg sizes, you'd need five variants per roast type. Multiply that by grind options, and inventory management became chaos.
The Solution (New in Odoo 19): Packaging on the website. Instead of variants, you define packaging options directly on the product. Customers select their desired package size, and Odoo automatically adjusts pricing based on the unit price.
Demo Walkthrough:
Jago shows the Brew Masters website. A customer browses to a coffee product (e.g., "Horizon Ember") and sees:
- Variants: Light roast, dark roast, espresso roast
- Grind options: Whole bean, ground coarse, ground fine
- Packaging options: 250g, 500g, 1kg, 5kg, 10kg
Select "5kg," and the price updates automatically. Select "10kg," and the price reflects the bulk rate.
Backend Setup:
In the product form, navigate to the Sales tab → Packagings. Define each package size:
- Name: 10 kilogram
- Reference Unit: 1 kilogram
- Quantity: 10
Odoo calculates the price as 10 × unit price. But what if you want custom pricing for bulk packages?
Custom Pricing per Package:
Navigate to the Prices tab on the product. Create a rule:
- Product: Horizon Ember (all variants)
- Minimum Quantity: 10 (10× 1 kilogram)
- Fixed Price: €20 per kilogram (instead of €23.25)
Save it. Now when customers select the 10kg package, they see the discounted bulk rate automatically.
Key Benefit: No more managing dozens of variants. One product, multiple packaging options, dynamic pricing—all out of the box.
💰 Price Lists: No More Spreadsheets
The Problem: Every B2B customer negotiates different pricing. Customer A gets 10% off, Customer B gets 15% off on specific products, Customer C has custom rates for everything. Managing this in spreadsheets is brittle and risky.
The Solution: Odoo Price Lists. Each customer (or customer segment) can have a custom price list. When they log in, they see their personalized pricing automatically.
Demo Walkthrough:
Jago navigates to eCommerce → Price Lists. He shows several examples:
- Default Price List: Standard pricing for everyone
- Franchisee, Retail Shop, Wholesaler: Segment-specific pricing
- Odoo (custom): A unique price list for a specific customer
He opens the "Odoo" price list and adds a product:
- Product: Saffron Mist
- Variant: All (applies to all roast/grind options)
- Fixed Price: €3 per kilogram (discounted from standard pricing)
Now, whenever the customer "Odoo" logs in, they see €3/kg for Saffron Mist—no manual adjustments, no spreadsheets, no errors.
Assigning Price Lists to Customers:
Navigate to the customer record (Contacts → Odoo) and assign the "Odoo" price list in the Sales & Purchase tab. Done. From now on, this customer sees their custom pricing across the entire catalog.
Pro Tip: Price lists can be time-based, quantity-based, or product-specific. For example, "Buy 50+ kg and get 20% off" can be automated with a single rule.
🔒 The "Zero Price" Strategy: Protect Your Pricing
The Problem: B2B pricing is confidential. Competitors shouldn't see your rates. Even legitimate customers shouldn't see pricing until they're verified and approved.
The Solution: Zero-price protection. Set a special price list where all products have €0 pricing. Enable the setting "Prevent sale for zero-price products." Now, unauthenticated visitors see products but not prices—and they can't add anything to the cart.
How It Works:
- Visitors browse the catalog. They see beautiful product pages with descriptions, images, and variants.
- No prices are displayed. No "Add to Cart" button appears.
- To see pricing and purchase, they must sign up for an account.
Self-Service Signup with Automatic Price List Assignment:
Customers click "Sign Up" and fill out a form:
- Name, email, phone
- Customer Type: Franchisee, Wholesaler, Retail Shop (dropdown)
The customer type field is linked to price lists. When they select "Wholesaler," Odoo automatically assigns the Wholesaler Price List to their account.
The business owner receives a notification: "New contact created on your website." They review the account, verify details, and approve access. Once approved, the customer logs in and sees pricing tailored to their segment.
Manual Override: If needed, the owner can reassign a customer to a different price list (e.g., move them from "Wholesaler" to a custom "Odoo" price list).
🛒 Customer Portal: Self-Service Made Easy
B2B customers want to manage their orders independently. Odoo's Customer Portal provides:
- Order History: View all past orders with details
- Invoices: Download PDFs
- Delivery Tracking: See shipment status
- Quick Reorder (New in Odoo 19): One-click reorder from any previous order
Quick Reorder in Action:
A customer logs into the portal, views their order history, and clicks "Order Again" on a past order. A popup shows all products from that order. One click, and everything is added to the cart. No searching, no manual re-entry.
Alternatively, from the Shopping Cart, customers can click "Quick Reorder" to see recent purchases and add them with a single click. Perfect for recurring orders (e.g., weekly coffee replenishments).
Checkout Enhancements:
Customers can:
- Add delivery addresses (multiple locations supported)
- Enter a PO number or customer reference (appears on invoices)
- Choose payment methods (credit card, wire transfer, on-account payment)
- Print order confirmations as PDFs
Everything is self-service. No phone calls, no emails, no manual intervention.
💳 Payment Methods: On-Account Credit
Q&A Insight: A common question: "How do we let customers order on credit (e.g., 30-day payment terms with a €30,000 credit limit)?"
Jago's Solution: Rename the "Wire Transfer" payment method to "On Credit." Set credit limits per customer in their contact record. When they select "On Credit" at checkout, Odoo automatically checks their credit limit and approves or declines the order accordingly.
This method works well for trusted B2B customers who have negotiated payment terms.
🎨 Customization Tips & Best Practices
Variants vs. Information-Only Attributes
Use Case: You want to display "Flavor Notes: Walnut, Caramelized Cane Sugar" on a product page, but these shouldn't be selectable options (like roast type or grind size).
Solution: Create separate attribute lines for each informational attribute. For example:
- Attribute: Flavor Note (Line 1) → Value: Walnut
- Attribute: Flavor Note (Line 2) → Value: Caramelized Cane Sugar
This displays the info without creating selectable options. Bonus: customers can filter/search by "Walnut" and find all products with that flavor note.
Managing Multiple Websites (B2B + B2C)
If you run separate B2B and B2C websites on the same Odoo database, assign price lists and payment methods per website:
- Zero-price list: Only on the B2B site
- On Credit payment: Only on the B2B site
- Standard pricing: Only on the B2C site
Navigate to settings for each price list or payment method and specify which website(s) it applies to.
Subscriptions for Recurring Orders
Customers can sign up for subscription-based purchasing (e.g., weekly coffee deliveries). Enable the Subscriptions app, configure products with subscription plans, and customers can choose between one-time purchases and recurring orders.
📊 Current Limitations & Roadmap
Acknowledged Limitation (as of Odoo 19):
You cannot currently restrict specific packaging options to specific websites. For example, if you want the 50kg package available only on the B2B site (not the B2C site), this isn't natively supported yet. However, the Odoo team is actively working on this for future releases.
Other Considerations:
- Credit Limit Visibility: Customers cannot currently view their remaining credit limit in the portal (requires custom development or inquiries at the product booth).
- Specialized Platforms: Highly customized portals (e.g., industry-specific dashboards) may offer more advanced features, but Odoo's out-of-the-box functionality covers 90%+ of B2B needs without custom code.
Viewpoint: Odoo Perspective
⚠️ Disclaimer: AI-generated creative perspective inspired by Odoo's vision.
Jago's presentation showcases what we've always believed: simplicity beats complexity. B2B e-commerce doesn't require bespoke platforms—it requires thoughtful, integrated tools that handle real business problems like packaging, pricing variability, and self-service ordering. The packaging feature in Odoo 19 eliminates variant explosion, which has been a pain point for years. The zero-price strategy protects confidential pricing while still showcasing products. And price lists—linked directly to CRM, inventory, and invoicing—ensure customers see consistent, accurate pricing without spreadsheets or manual errors. The Quick Reorder feature is a perfect example of listening to users: B2B buyers told us they place the same orders repeatedly, so we made it one click. That's how we build: solve real problems, ship fast, iterate constantly. And yes, we acknowledge gaps (like per-website packaging restrictions), but we're transparent about roadmaps. That's the Odoo way.
Viewpoint: Competitors (SAP / Microsoft / Others)
⚠️ Disclaimer: AI-generated fictional commentary. Not an official corporate statement.
Odoo's B2B e-commerce offering is solid for mid-market distributors and growing manufacturers. The packaging feature, price list flexibility, and portal self-service cover core use cases well. However, enterprises with complex B2B requirements—advanced contract pricing (tiered, volume-based, rebates), punch-out catalogs (cXML, OCI), multi-tenant buyer portals with approval workflows, EDI integrations for automated ordering, and credit management with dunning and collections—may find gaps. SAP Commerce Cloud and Microsoft Dynamics 365 Commerce provide deeper B2B-specific functionality, including integration with ERP credit management, sophisticated catalog personalization (per buyer, per contract), and robust APIs for third-party procurement systems. The "rename wire transfer to on-credit" workaround, while practical, highlights the lack of native credit management compared to platforms like SAP S/4HANA with embedded credit control. That said, Odoo's transparent pricing, fast implementation, and integrated back-office (CRM, inventory, accounting) make it attractive for businesses that don't need enterprise-grade complexity. The question is scalability: as B2B operations grow, will Odoo's architecture support the required sophistication, or will customers eventually need to migrate?
Disclaimer: This article contains AI-generated summaries and fictionalized commentaries for illustrative purposes. Viewpoints labeled as "Odoo Perspective" or "Competitors" are simulated and do not represent any real statements or positions. All product names and trademarks belong to their respective owners.