Part 0 · 5 minutes
Before you start
Four things to have ready. None of them cost extra.
- A Shopify plan that includes B2B. Basic, Grow, Advanced or Plus.
B2B used to be Plus-only; it isn't any more.
- A theme from the last few years. Any Online Store 2.0 theme, which
includes Shopify's free themes (Dawn, Horizon, Trade and others). If your theme is
older than about 2021, the ordering page can't be added to it.
- Your wholesale pricing decided. Usually a percentage off retail
(for example 50%), or a fixed price per product.
- One real wholesale customer to test with. Their business name and
the email address they'll sign in with.
How Shopify B2B fits together
A company is the business you sell to. Each company has at least one
location (where it ships to and what it pays). People at that business
are contacts, and they sign in with their own email. A
catalog holds your wholesale prices and is assigned to the location.
Get those four right and everything else follows.
Part 1 · 5 minutes
Turn on customer accounts
Wholesale buyers must sign in, and Shopify's B2B only works with its current accounts
system. Buyers get a six-digit code by email; there's no password to forget.
- In your Shopify admin, click Settings (bottom left), then
Customer accounts.
Settings → Customer accounts
- Choose Customer accounts (the current version). If you see an option
called "Classic customer accounts", that's the old one and B2B can't use it.
- Click Save.
If your retail customers use the old accounts
You can leave classic accounts on for retail shoppers and still use current accounts
for wholesale buyers. Shopify calls this running both; your wholesale buyers use the
sign-in link on your ordering page.
Part 2 · 10 minutes
Add your first company
Do this once for a real customer. Once you've seen it work end to end, add the rest.
- Go to Customers, then the Companies tab.
Customers → Companies
- Click Add company. Enter the business name exactly as your buyer
would recognise it, then Save. Shopify creates one location for you
automatically.
- Open the location (it'll be named after the company). Add the
shipping address and, if you give terms, set
Payment terms such as Net 30. If you always take payment up front,
leave it as due on receipt.
- Still on the company, find Contacts and click
Add contact. Enter the buyer's name and email. This email is how they
sign in, so use the one they actually read.
- Give the contact permission to order. Shopify offers "ordering only" and "location
admin". Ordering only is right for most buyers.
What "good" looks like
On the company page you should see one location with an address, and at least one
contact with an email. If a company has no contact, nobody can sign in, and our setup
checklist will flag exactly that.
Part 3 · 15 minutes
Set your wholesale prices with a catalog
A catalog is Shopify's price list: which products a company can buy, and what they pay.
This is where your wholesale discount lives.
- Go to Markets, then Catalogs.
Markets → Catalogs
- Click Create catalog and give it a name only you will see, such as
"Wholesale 50%".
- Choose All products if every product is available to wholesale, or
Specific products to pick a list. You can change this later.
- Set the price. For a straight discount, use Overall adjustments →
Price decrease and enter your percentage. For individual prices, use
Manage products and pricing and type the price for each one. A fixed
price always beats the overall adjustment.
- Click Save.
- Assign the catalog to the company you just made. On Shopify Plus,
assign it straight to the company location. On Basic, Grow and Advanced,
assign it to a B2B market and put that company's location in that market.
The mistake that costs the most time
If a location ends up with two catalogs, Shopify charges the lowest
price across both. An extra catalog with no discount on it doesn't "add" retail
pricing, it can undo your wholesale pricing for products only that catalog contains.
Our setup checklist warns you when a location has more than one.
How many catalogs can I have?
On Basic, Grow and Advanced: up to three active catalogs across all your B2B markets,
which is plenty for "everyone gets the same deal" or a few pricing tiers. On Plus:
unlimited, and you can assign them to individual companies.
Part 4 · 10 minutes, optional
Minimums and case sizes
If you sell in sixes, or won't ship fewer than 12, tell Shopify. The ordering page then
enforces it while the buyer types, instead of you fixing orders afterwards.
- Open your catalog: Markets → Catalogs → your catalog
- In Products and pricing, click Manage, then
Manage products and pricing.
- For a product, set the minimum, the increment
(your case size) and, if you want one, a maximum.
- Save.
Volume pricing works too: set a lower price at, say, 24 units, and buyers see the break
when they reach it.
Part 5 · 2 minutes
Install B2B Quick Wholesale
- Install the app from the Shopify App Store. Your 7-day trial starts when you pick a
plan; nothing is charged until it ends.
- Open the app. It lands on Setup, a checklist that has already read
your store.
- Work down the list. Anything marked Needs fixing has a button that takes you
straight to the screen that fixes it.
The checklist is the instruction manual
It checks your companies, contacts, catalogs, prices, ordering page, theme and
shipping, and tells you in plain language what's missing. If it says you're ready, you
are.
Part 6 · 10 minutes
Create the ordering page
This is the page your buyers will use. The app makes it, then you add the order form to
your theme.
- On the Setup checklist, click Create the page. The
app creates a page at
/pages/wholesale-ordering.
- Click Add to theme. Your theme editor opens with the order form
ready to drop in.
- In the panel on the left, choose your wholesale source collection —
the collection holding the products wholesale buyers may order. Use an existing
collection or make one first.
- Click Save in the top right of the theme editor.
- Back in the app, refresh the checklist. The ordering page item should turn green.
The theme editor may preview a different page
That's normal and doesn't matter. Use the page picker at the top of the editor to
preview your ordering page if you want to see it while you set it up.
Optional settings worth knowing, all in that same panel:
- Match my theme's colours — on by default, so the page looks like the
rest of your store. Turn it off to pick your own accent colour.
- Categories — filter buttons across the top, one per line you type.
- Free shipping threshold — shows buyers how much more to add.
- Retail price (MSRP) — show the price they'll sell at next to their
cost.
Part 7 · 15 minutes
Wholesale shipping that retail shoppers never see
This is the part most stores get wrong. Without it, either your wholesale rates appear
for everyone, or your buyers pay retail postage on a pallet.
- In the app, open the Shipping tab.
- Enter your wholesale rate tiers, for example: $10 under $100, $20 from $100 to $250,
free above $250. The app creates rates with those names in every shipping zone that
needs them.
- Leave find my wholesale rates automatically on. It treats any rate
with "wholesale" in the name as wholesale, which is why the names matter.
- Turn the rules on. From then on, wholesale buyers see only wholesale rates, and
retail shoppers never see them.
- Decide who can use local delivery and pickup, if
you offer them.
Before you ever uninstall
Use Remove wholesale rates in the Shipping tab first. Uninstalling
removes the rules but leaves the rates behind, and every retail shopper would then see
them at checkout.
Part 8 · 10 minutes
Invite your buyers
There's no invitation to send from Shopify. Buyers simply sign in with the email you
added as a contact, so tell them where to go. Something like this works:
Subject: Your wholesale ordering page is ready
Hi [name],
You can now place your wholesale orders online, any time:
yourstore.com/pages/wholesale-ordering
Sign in with this email address and we'll send you a six-digit code — there's no
password to remember. You'll see your own pricing, everything you can order on one
page, and your last order ready to repeat.
Any trouble, reply to this email and I'll sort it out.
[your name]
Add the page to your main menu as "Wholesale
ordering" if you want buyers to find it without the link.
Part 9 · 15 minutes
Test it yourself, as a buyer
Do this before you tell anyone. Add yourself as a contact on a test company, using an
email you can receive.
- Open the ordering page signed out. You should see a sign-in prompt, not products.
- Sign in with your test contact's email and the code Shopify emails you. You land back
on the ordering page.
- Check the prices are your wholesale prices, not retail.
- Type a quantity below your minimum. It should snap up to the minimum.
- Add a few products. The bag at the top of your theme should update.
- Go to checkout. You should see only wholesale shipping rates.
- Open your store in a private window, signed out, and add anything to the cart. At
checkout you should see only your normal retail rates.
- Place the test order, then refund or cancel it.
If any of those go wrong
Go back to the app's Setup checklist first. It will usually name the cause. If it says
everything is ready and something still looks wrong, see below.
Part 10
When something looks wrong
| What you see | What it means | Fix |
| Buyer sees retail prices |
Their company location has no catalog, or has a second catalog with no
discount |
Assign your wholesale catalog to that location, and remove the extra one |
| The ordering page is blank |
The order form isn't on the page, or it's set to a different page handle |
Setup checklist → Add to theme, then Save in the theme editor |
| "Setup needed" on the page |
No wholesale collection is chosen, or the collection is empty |
Theme editor → the order form block → choose your collection |
| Buyer can't sign in |
They aren't a contact on a company, or you're on classic accounts |
Add them as a contact; turn on current customer accounts |
| Retail shoppers see wholesale rates |
The shipping rules are off |
App → Shipping → turn the rules on |
| Buyers see no shipping at checkout |
No wholesale rate covers their order total or their zone |
App → Shipping → check your tiers cover every total, including large ones |
| Prices look right, but the buyer is charged retail |
They're signed in as a personal customer, not as their company |
Have them sign out and back in; check they appear under the company's contacts |