Shopify B2B & the wholesale channel
The Shopify B2B feature set is six things: company accounts, catalogs, price lists, payment terms, quantity rules and a separate checkout. Each one exists because a specific thing goes wrong when you try to sell wholesale through a consumer storefront, and the fastest way to understand the set is to look at the problem before the feature.
This walkthrough is deliberately not a settings tour. Where a toggle lives changes; what a wholesale brand needs it for does not.
Company accounts: the problem of the four people
A consumer order involves one person who browses, pays and receives. A wholesale order routinely involves four: a buyer who picks the assortment, an owner who approves the spend, an accounts contact who pays, and a store manager who receives the pallet.
Model that as a customer record and you get the mess most brands recognise. Three email addresses that are all the same account. Orders attributed to whichever person was logged in. A shipping address that is right for one location and wrong for the other two.
A company record holds the account itself. Locations sit under it, each with its own address, tax treatment and terms. Buyers sit under it too, each with their own login, and any of them can place an order that belongs to the company rather than to them. When the buyer leaves the shop, you remove the person and keep the account.
This is the feature that makes the rest coherent, because catalogs, pricing and terms all attach to the company. It is also the one that is hardest to fake on a standard plan, which is the honest argument for the upgrade discussed in is Plus B2B worth it.
Catalogs: the problem of showing the wrong assortment
Not everything you sell retail should be sold wholesale, and not every stockist should see everything you sell wholesale.
A gift set built for consumer holiday traffic may have no wholesale margin. A distributor may need case-pack configurations that would confuse a single boutique. A key account may have negotiated a colourway nobody else gets for a season. And your discontinued line should not be visible to a new buyer at all.
A catalog is the answer: a defined assortment, assigned to a company. Change what a company can order by changing which catalog they hold, rather than by tagging products one at a time. The assortment strategies that follow from this — and the trap of building one catalog per account — are covered in B2B catalogs.
Price lists: the problem of the discount that leaks
Wholesale is not a discount. It is a different price, for a different transaction, with a different cost structure behind it.
Treating it as a discount produces four specific failures. Codes get shared and end up on a coupon site. Promotions stack, so a seasonal offer lands on top of trade pricing. Your reporting shows retail revenue net of discounts rather than wholesale revenue, so gross margin by channel becomes an export exercise. And rounding gets ugly — a percentage off a 27-dollar item gives you prices no buyer wants to see on a line sheet.
A price list replaces the price. Fixed amounts per SKU, optionally with volume breaks, assigned to the company. The list is what a buyer sees, what appears on the order, and what your reports count. How to structure the tiers, and why fixed beats percentage-off in almost every case, is in B2B price lists.
Payment terms: the problem of the card at checkout
Shops do not pay for stock with a card at the moment of ordering, or at least they prefer not to. They expect to receive goods, sell some, and pay on a schedule. Net 30 from the invoice date is the common expectation; net 60 appears with larger accounts; prepayment is normal for a first order from a brand a buyer does not know yet.
Terms attached to the company do three things a manual process cannot. They apply automatically, so you stop granting terms verbally and forgetting. They record a due date rather than an open-ended pending state, so you know what is late. And they let you set different terms for different accounts without a spreadsheet.
The mechanics are simple; the cash-flow consequences are not. Offering net 30 to a growing account means funding their inventory out of your working capital, which is a real decision with a real failure mode, laid out in net terms on Shopify.
Quantity rules: the problem of the order for one
Your case pack is six. A buyer orders five. Now you either break a case, ship a partial and absorb the packaging waste, or write an awkward email to a new account.
Quantity rules stop the problem at the cart: a minimum quantity per SKU, an increment so quantities step in sixes, and optionally a maximum where allocation matters. Combine that with an order-level minimum and you get the two halves of a real wholesale minimum — enough total spend, and enough of each item to be worth picking and packing.
Most brands set these once and forget them, which is the point. The upstream decision — what the case pack should be in the first place — matters far more and is covered in quantity rules and case packs.
B2B checkout: the problem of the consumer flow
The consumer checkout is optimised to remove friction for a person spending sixty dollars on impulse. A buyer spending 3,000 dollars on stock has different needs and no impulse at all.
They need to attach a purchase order number, because their accounting system requires it. They need to pay on account rather than with a card. They need shipping that reflects freight or a negotiated arrangement, not your parcel rates and certainly not your threshold for included shipping. And they do not need the upsells, the loyalty prompt or the marketing consent box.
The B2B checkout handles those differences, and the specific gaps between the two flows are worth reading before you configure anything, in the B2B checkout.
What the feature set does not include
Three gaps to plan around, because brands discover them mid-build.
It is not a line sheet. Buyers still want a document. A PDF with item numbers, case packs, wholesale price, suggested retail and your terms is what gets forwarded to a business partner and what gets carried around a trade show. The store complements it; it does not replace it.
It is not a sales channel. Nothing in the feature set brings a buyer to your login page. Wholesale demand comes from outreach, markets, reps, marketplaces and existing relationships. If you do not yet know which shops or distributors carry products in your category, paste a product link into WholesalePilot and the preview shows the kinds of buyers that would plausibly stock it, which is the question to answer before configuring a portal.
It is not a rep tool out of the box. If you have sales reps writing orders on behalf of accounts at markets, check how ordering on behalf of a buyer works for your setup before you assume it is covered.
How to sequence the build
Do it in this order and you will not rebuild.
Decide pricing and case packs first, because everything else inherits them. Write your terms policy second — opening minimum, reorder minimum, lead time, payment terms, damage handling — so you are configuring a decision rather than making one per account. Build two or three tiers, not one per customer. Create companies for the accounts you actually have. Then configure catalogs, then checkout, then invite buyers in as they reorder rather than all at once.
The whole configuration is a few days of work. The decisions it encodes are what determine whether the channel is profitable, and those are worth a week of thinking.
Questions brands ask about the B2B features
Do these features need a separate store? No. Same store, same products, same inventory pool. A trade buyer logs in and the storefront behaves differently for them.
Can consumers see wholesale prices? Not through the storefront, because pricing is bound to the company and needs a logged-in buyer. Check your product feeds separately, since those read the catalog rather than a session.
What if I am not on the plan that includes all of this? Several pieces have workable substitutes — tagged customer groups, draft orders, an ordering portal app. Draft orders plus a tagged customer group cover the first several accounts; an app takes over once the admin becomes repetitive.
Can one company have different prices at different locations? Pricing attaches at the company level in the usual setup, with locations differing on address, tax and terms. If a chain genuinely needs different prices per location, model them as separate companies and accept the reporting cost.
Does this work for international wholesale? Price lists can be currency-specific, which is the main requirement. The harder parts of exporting — duties, incoterms, compliance labelling — sit outside the platform entirely.