A wholesale storefront can look deceptively simple: authenticate a buyer, show a negotiated price, accept an order, and send it to fulfillment. The hard part is preserving the business context at every step. A person may buy for one branch today and another tomorrow; one company may have separate tax settings, shipping addresses, payment terms, and product access by location. The price on screen must match the order record, and the order handed to an ERP must remain traceable if a network call fails.
This guide uses a hypothetical outdoor-supply brand that sells to consumers and to wholesale retailers with several branches. The example is illustrative, not a customer deployment or a claim about results.
01 | Start with the current plan capability, not the plan label
Shopify B2B is available on Basic, Grow, Advanced, and Shopify Plus. Features depend on plan, configuration, or rollout status, so check the live store’s plan, API version, and admin controls before designing around a capability. The B2B features by plan and B2B requirements and considerations are good starting points.
One concrete catalog limit affects early modeling: on Basic, Grow, and Advanced, a store can assign up to three active catalogs across all B2B markets combined. That is a store-wide limit, not three per market. Direct catalog assignment to a company location is a Plus capability. A store that can express its initial tiers with a small set of market catalogs may not need location-specific assignment on day one; a business whose branches need individual assortments or negotiated prices should model that requirement and confirm plan fit before implementation.
Source: Shopify Help Center
02 | Model the company, location, and contact separately
Use the structure that reflects the commercial relationship. The company is the parent organization. A company location is the buying context for a B2B transaction. A customer is the human contact who signs in and acts for the business. Shopify describes locations as independently configurable for details such as shipping and billing addresses, tax settings, pricing, payment terms, checkout settings, and contacts; the company and customer guide explains the roles, and the CompanyLocation API object documents the transaction context.
For the hypothetical outdoor supplier, “North Ridge Outfitters” could be one company with separate city branches. Each branch may need its own ship-to address, tax treatment, and terms. A purchasing manager can be a contact with permission to buy for one or more assigned locations. Do not treat the contact’s email or customer ID as the company identity. On sign-in, the experience must resolve which company location the buyer is acting for and show a clear way to switch when the contact is authorized at multiple branches.
Before importing records, agree on source-of-truth identifiers for company, location, contact, address, and tax registration. Decide how duplicates, renamed branches, closed locations, and staff turnover will be handled. Activate new customer accounts for B2B: Shopify’s current requirements say legacy customer accounts cannot be used for B2B orders and customers.
03 | Choose a blended or dedicated storefront deliberately
A blended store shares one online store for retail and wholesale buyers, while presenting a different contextual experience where supported. It can reduce duplicated merchandising and brand work when retail and wholesale share products, content, and operational ownership. But the team must check which content, discounts, payment options, apps, and checkout customizations can distinguish the two audiences. Shopify’s store-type guidance and its compatibility notes should be reviewed against the current configuration.
A dedicated B2B store can make sense when wholesale has a distinct assortment, commercial language, navigation, or operating team.
Use a decision workshop to map real buyer journeys rather than choosing by URL preference. Can the retailer find case packs, technical documents, reorder tools, and account terms? Can a retail customer avoid seeing wholesale-only products and prices?
Source: Shopify Help Center
04 | Design catalogs and pricing around overlap
Start with a product-access matrix. Rows are products or variants; columns are retail, wholesale tiers, markets, and any company locations that require exceptions. For each cell, record whether the item is visible, its intended price source, minimum or maximum quantity rules, increments, volume breaks, currency, and effective date.
Shopify catalogs can control product availability and pricing, with price adjustments or fixed prices, and can support quantity rules and volume pricing. See Shopify’s catalog documentation. Basic, Grow, and Advanced can assign up to three active catalogs across B2B markets total; Plus also allows direct company-location assignment.
When a location receives both market and location catalogs, Shopify’s documented pricing behavior depends on that relationship; the more specific company-location catalog can determine the displayed item price in an overlap. Multiple catalogs assigned at the same level have their own rules. Do not reduce this to a universal “lowest price wins” assumption. Review the current catalog rules, then verify the rendered price and checkout line for each relevant overlap in the store’s actual setup.
The hypothetical supplier might sell a tent as a retail unit and to a retailer in case packs. If the example uses order increments of six or twenty-four, label them as that supplier’s hypothetical commercial rules, not general Shopify defaults. Decide how pack quantity is represented in the product model, how inventory is counted, and whether the ERP expects eaches or cases. Keep the source of each price and quantity rule legible to merchants so a commercial exception can be reviewed instead of hidden in theme code.
05 | Design the procurement UI in Figma around states
A polished catalog screen is only one state in a purchasing workflow. In Figma, map the decision points: signed out, account pending, signed in without an assigned location, one location selected, multiple locations available, no catalog match, restricted item, quantity below minimum, valid quantity, unavailable inventory, draft submitted, and order confirmed. Add responsive layouts, keyboard focus, validation errors, empty states, and loading or retry behavior for integrations that inform availability.
Make the buying context visible near the page title and cart: company name, selected location, currency, and any relevant order constraints. Give buyers a deliberate location switch and confirm that changing it refreshes prices, product availability, shipping, and terms. Do not use a generic “Wholesale” badge as a substitute for showing which branch is buying. Where the design includes a contract price, show unit and extended totals consistently and explain pack sizing in the product’s own commercial language.
Create a clickable prototype for the whole journey and annotate which values are native Shopify data, theme presentation, an extension, or external ERP/WMS data. That boundary matters when the design is implemented. WESWOO’s brand and Figma design work can align procurement screens with the retail identity while making account context and purchasing rules easy to scan.
06 | Keep Liquid or headless presentation context-aware
A Liquid storefront can use Shopify’s native theme and customer context, with targeted templates and sections for B2B purchasing. Keep business rules in Shopify’s supported configuration or integration layer where possible; avoid burying price entitlement or company identity in fragile client-side checks.
A headless storefront offers greater control over the buyer experience and can fit a broader digital platform, but it also means the implementation team owns more of the account journey, data fetching, cache behavior, and integration testing. Make sure the storefront preserves company-location context through product discovery, cart, checkout handoff, and order confirmation. Authentication alone is not enough; the active purchasing location must be part of the request and state model.
Document the boundary: Shopify is authoritative for the B2B transaction and catalog behavior it manages; an ERP may own customer numbers, credit status, or product master data; a WMS may own fulfillment availability. Define which system wins when updates arrive out of order. Shopify’s B2B APIs support app-based catalog management, but API access, scopes, version, and plan-dependent operations need to be verified in the target store. Liquid or headless, use contract tests around context selection and inspect the final cart and order rather than trusting a product-page mock.
Source: Shopify Help Center
07 | Separate merchant review from buyer-side approval
An order submitted as a draft for review is a merchant-side workflow. Shopify lets a merchant require B2B orders to be submitted as drafts by company location, so the merchant can review or change an order before confirming it. It does not by itself create an arbitrary internal approval chain in which one buyer submits and another buyer at the customer’s company approves. The B2B feature overview describes draft submission as merchant review.
If the retailer needs buyer-side controls—such as spend limits, department approval, or a second approver—write that workflow separately. Determine whether an existing procurement or ERP system owns it, whether an app covers the requirement, or whether custom development is justified.
Payment terms are another separate dimension. Assign terms by company location where the commercial agreement requires it, and confirm what the buyer sees at checkout and on the resulting order. A draft awaiting merchant review should not look like a confirmed order or imply that credit approval has happened. In the interface, use distinct statuses and clear next steps for “submitted for merchant review,” “awaiting buyer approval” if a separate workflow exists, “confirmed,” and “payment due.”
08 | Map ERP order flow, retries, and reconciliation
Before connecting systems, draw the data contract. Map Shopify company and location IDs to ERP customer and ship-to codes; map variant IDs and SKUs to ERP item identifiers; and agree how tax, currency, PO number, discounts, freight, payment terms, and fulfillment status are represented. Store cross-system identifiers in stable fields and record the source of truth for each. Validate addresses and item mappings before an order becomes eligible for export.
Treat the integration as a state machine, not a one-time webhook. An order can be created, held for merchant review, confirmed, partially fulfilled, canceled, or updated. Define which states the ERP should receive and when. Make the application idempotent: receiving the same event again should not create a second ERP order. Use a durable queue or equivalent retry mechanism, bounded backoff, and a dead-letter path for cases that need human repair. Do not report success until the ERP acknowledges the mapped order.
Plan reconciliation in both directions. Agree how manual edits, returns, partial shipment, and cancellation propagate. Shopify supports integrations with ERP and other systems, but the connector’s behavior depends on the mapped systems and design; the B2B integration guidance is a starting point, not an API guarantee. WESWOO’s Shopify development and ERP/WMS integration work should make these ownership and recovery rules explicit before the first pilot order.
09 | Validate with an acceptance matrix and staged pilot
Build a matrix that crosses buyer identity, company location, catalog overlap, payment terms, inventory state, and order outcome. Include at least one retail user, one wholesale user with one location, and one contact authorized for multiple locations. Test a correct price, a location-specific exception, a product excluded from a catalog, and a quantity-rule boundary. Verify the account must use new customer accounts, and test invitation, login, recovery, and permissions.
For every case, inspect three views: what the buyer sees, what Shopify stores on the cart or order, and what the ERP/WMS receives. Confirm company location, line prices, quantities, PO number, addresses, tax treatment, and terms at each boundary. Exercise retries by replaying an integration event in a controlled environment; confirm duplicate delivery does not create duplicate ERP orders. Test a deliberately invalid SKU or address and verify that it enters a visible repair path instead of disappearing.
Run a pilot with a small set of consenting wholesale accounts and a representative order mix. Expand only after the business owner, operations team, and technical team agree that the acceptance cases pass and unresolved exceptions have clear owners.
10 | Make the implementation fit the operating model
A successful B2B storefront connects brand expression to commercial operations. WESWOO can bring together Shopify B2B planning, brand and Figma design, Liquid or headless development, Plus capability assessment when the requirements call for it, ERP/WMS integration, and testing for an incremental release. The starting point is a documented model of companies, locations, contacts, catalogs, approvals, payment terms, and order states, checked against the current Shopify store and the systems that will exchange data with it.
For the hypothetical outdoor-supply brand, that means the buyer knows which branch is purchasing, sees the catalog and terms intended for that branch, and can place an order whose identifiers and commercial details remain consistent through ERP and warehouse processing. The practical deliverables are a capability and data map, a blended-versus-dedicated recommendation, a pricing and product-access matrix, a Figma procurement prototype, a storefront implementation plan, integration contracts, and an acceptance and pilot checklist.
No single plan tier or architecture is right for every wholesaler. Start with the buyer and operations workflows, verify current Shopify capabilities, and make every system boundary testable. To discuss a Shopify B2B build or integration plan, visit WESWOO.
Written with AI assistance and reviewed against the linked primary sources. Screenshots are excerpts from official Shopify Help Center documentation and are included for technical discussion. Sources are identified in each image caption.



Top comments (0)