ddtcorex

05 Aug 2026 · 2 min read

Magento 2 B2B: quotes, negotiation, and company accounts

How Magento 2 B2B actually works — company accounts, shared catalogs, and the quote/negotiation flow on a production-shaped local stack.

The B2B module turns Magento 2 from a store into a buying platform for organizations. This post builds on the multi-store & B2B intro and goes into the flows that matter for enterprise buyers.

Companies and structures

A company owns a hierarchy of users with roles and permissions. Buyers aren't isolated accounts — they belong to a team with approvers, so a purchase order can require sign-off.

Shared catalogs & custom pricing

B2B supports shared catalogs with per-company price tiers and visibility. The same SKU can show different prices and availability depending on the logged-in company — a scope problem beyond store views.

The quote / negotiation flow

This is the B2B differentiator:

  1. A buyer adds items and requests a quote instead of checking out.
  2. The merchant proposes revised prices / quantities.
  3. The buyer accepts, declines, or counters.
  4. On acceptance, the quote converts to an order.

It's a stateful, multi-step negotiation — not a single checkout. Model it with status transitions, not ad-hoc flags.

Quick order & requisition lists

B2B buyers reorder in bulk (SKU + qty grids) and save requisition lists for repeat purchases. These UX patterns assume high-frequency, low-touch ordering.

Test it locally

B2B needs the full stack — multiple customer contexts, the message queue for async company processing, and correct scopes. Stand up a production-shaped local environment with Govard so the company/quote flows behave like production, including the cron-driven background jobs.

Where this fits

B2B is the high-complexity end of the "Magento 2 in practice" arc. Before adopting it, weigh the operational cost against the revenue model — the earlier performance and audit posts are what keep a B2B store healthy at scale.

Next in this series: Magento 2 cron & the message queue — /blog/magento2-cron-queue

magento2b2barchitecture