Shopify

What B2B Wholesale Ordering on Shopify Should Look Like

Your wholesale buyers want to key in quantities and submit, not browse a retail cart. Here's what that setup actually requires on Shopify.

A warehouse worker in a canvas apron holds a tablet while checking stacked case-packed boxes on wooden pallets.

Your biggest accounts still call. They know what they want, they order the same twelve items every month, and somebody in your office types it into a spreadsheet and then into an invoice. Meanwhile your website sits there, taking retail orders from people buying one of something.

Somebody has probably told you a standard Shopify store is enough. It isn't, and the reason has nothing to do with how the site looks. A wholesale buyer needs their price, their case packs, and their last order in front of them within a few clicks. Retail checkout gives them none of that.

B2B wholesale ordering on Shopify can work well. By the end of this you'll know which pieces come with the platform, which have to be built, and where to start looking in your own business.

Why a retail checkout breaks down for wholesale buyers

A retail checkout is built to move one shopper toward one cart. It shows a price everybody sees, nudges the visitor toward a bigger order, asks for a card, and sends a thank-you email. That works fine for a homeowner buying a filter.

Your wholesale buyer is doing something else entirely. They have a purchase order to get out before lunch. They know the part numbers. They know their price because you quoted it to them six months ago. What they need is a screen where they can enter quantities against their own price list and submit.

When the website can't do that, the order comes in some other way. A call to the office. An email with a photo of a handwritten list. A reply-all chain about whether the 50-count box is still the same price as last time. Somebody in your office retypes all of it, and every retype is a chance to get a digit wrong.

The cost shows up in two places. Your office manager spends mornings taking orders that could have placed themselves. And some buyers order less than they would have, because asking you is more work than ordering from whoever made it easy.

Wholesale buyers are doing a job, not shopping

The person placing a wholesale order has a stock list in front of them and twenty minutes before their next task. They know what they need. They know roughly what it costs. They want to key in quantities, check the total, and send it to their boss or their accounts payable.

Design for the fewest keystrokes to a correct purchase order. That's the whole principle. Everything on the screen either gets them closer to a submitted order or gets in the way.

Lifestyle photos get in the way. Related-products carousels get in the way. A three-step retail checkout that asks about gift wrap gets in the way. So does a product page you have to open to see the price, when the buyer is ordering forty line items.

What helps: a search box that matches their part numbers, a table they can type into, running totals, and a PO number field. Boring screens. Buyers love boring screens.

Ask your three biggest accounts how they build an order today. If the answer is a spreadsheet, a printed sheet, or last month's invoice marked up in pen, that's the screen you need to build.

Price lists that load the moment a buyer logs in

A buyer who logs in and sees retail pricing is going to pick up the phone. Not to order. To complain.

That call costs you twice. Someone in the office has to explain the discount, then re-key the order by hand. The website did nothing except make the customer doubt you.

What a wholesale buyer needs is simple to say and harder to build: when they log in, every price on the screen is the price you already agreed on. No calculator. No blanket "less our discount" line in the footer. No coupon code emailed at the start of the quarter that nobody can find in August.

That means tying prices to company accounts, not to a single person's email. A contractor's purchasing agent, their office manager, and the owner all place orders. They should all see the same agreed pricing under the same company profile, with their own logins. Customer accounts that each carry their own private discount fall apart the week someone new starts.

Underneath that sit your price lists. Some accounts buy off a standard wholesale sheet. Some have a negotiated number on twelve SKUs and standard pricing on everything else. Some only buy a subset of the catalog and shouldn't see the rest at all.

Pull your current price lists into one place this week and count how many are genuinely different. That number tells you how much work the pricing side is, more than any plan comparison will.

Quantity rules that match how you actually ship

If you ship in full cases, the cart has to count cases. A buyer who types a piece count into a retail quantity box ends up with an order your warehouse can't pick and your invoice can't match. Then someone in the office calls them back to fix it, which is the phone order you were trying to avoid.

Quantity rules are how you stop that before it reaches the picking sheet. If you run B2B wholesale ordering through Shopify, you can set a minimum order quantity per product, an increment so quantities step up in case multiples, and in some setups a minimum for the whole order. The buyer sees the rule at the line item, adjusts, and moves on. No one gets an email three hours later explaining that the item only ships in fours.

The same rules carry your volume pricing. If the price drops at a case, a pallet, or a full truckload, the buyer should see the break applied in the cart while they're still deciding, not after they've asked for a revised quote.

Go through your catalog and mark every item that has a pack size, a minimum, or a price break. Most shops find the list is shorter than they expected, and it's usually the fast-moving items that carry all the rules. That list is what gets configured first.

The customer account should open on their last order

Most wholesale orders are the last order with two lines changed. The buyer knows what they want before they open the browser. Everything you put between them and that order is friction you're paying for in phone calls.

So the account dashboard should open on order history, and every past order should have a reorder button that loads the whole thing into the cart at once. Quantities editable. Items droppable. If something's gone out of stock or off the catalog, flag it on the line instead of silently dropping it.

A saved shopping list does the same job for buyers whose orders vary. They build the list once, then set quantities against it each time. Some buyers prefer uploading a CSV or pasting SKUs and quantities into a bulk entry field, which is worth having if your buyers work off their own ERP or inventory system.

This is the feature that takes phone orders off your office manager's desk. Nobody calls to place an order they could repeat in four clicks. They call because the website makes them hunt through a category tree for twelve things they bought last month.

Pull your last three months of orders and count how many are a repeat of a previous order from the same buyer. That number is the one reorder solves.

Placing a big order without a retail checkout in the way

A retail cart was built for someone buying two or three things. They browse, they add, they look at the cart, they add one more. Every step is a chance to show them something else.

A wholesale buyer with a purchase order in front of them has twenty lines to enter. On a retail store, that's twenty product pages, twenty quantity fields, twenty add-to-cart clicks, and a scroll back to the top each time. The cart was never asked to do this job, so it does it badly.

What works is one screen with a grid. Rows for SKUs, a column for quantity, a running total at the bottom. The buyer types or pastes a code, tabs over, types a number, hits enter, and the next row is ready. No page loads between lines. They can see the whole order at once and fix a quantity in the middle without starting over.

Then checkout gets short. Pick a shipping address from the ones on file, pick a PO number field, confirm the net terms, done. No upsells, no shipping calculator asking for a zip code the system already has, no account creation step for a company that's been buying from you for six years.

Open your own store and try to place a twenty-line order the way a buyer would. Time it. That number is what your buyers are weighing against picking up the phone.

What Shopify's B2B tools give you out of the box, and what has to be built

A good chunk of what wholesale buyers need is already in Shopify's B2B feature set. You can set up a company, attach multiple locations to it, and give named people at that company permission to order for one location or all of them. You can build price lists that apply only to a company, either as a percentage off retail or as fixed per-item prices. You can require a minimum quantity, set quantity increments so orders come in case packs, and assign payment terms so an invoice goes out instead of a card charge. Draft orders let your office build an order by hand and send it to the buyer to approve and pay — useful when someone calls anyway, or when a line needs a price you can't express as a rule.

What tends to need building is everything that depends on how your particular catalog works. One-click reorder from a past order is the common one. So is a bulk order form where a buyer pastes in a list of SKUs. Catalog logic past "this company sees this price list" usually needs work too: a product only certain accounts can see, a price that changes by annual volume, a pack size that differs by region, a product that must be ordered with another one.

The line between the two moves depending on your plan and how messy your catalog is. A clean catalog with three customer tiers and one pack size per item is mostly configuration. A catalog with special pricing negotiated per account over fifteen years is mostly a data problem before it's a software problem.

Pull up Shopify's B2B documentation and check your own list of what buyers need against it. The gaps are where the quote comes from.

Why the answer starts with your price list, not your Shopify plan

Most owners start by asking which plan they need. That question can't be answered by anyone who hasn't seen your pricing. Two companies on the same plan can have completely different builds, because one sells four tiers off a clean list and the other has twenty years of handshake deals sitting in a spreadsheet.

So do the audit first. Open your actual price lists and catalogs and write down what's really in there:

  • How many distinct price levels exist, and how many accounts sit at each one
  • How many accounts have a price that doesn't match any tier
  • Which products are restricted to certain buyers
  • Which items ship only in case packs, and whether the pack size is the same for everyone
  • Whether any price depends on how much a customer bought last year
  • Where that information currently lives — your accounting system, a binder, your sales rep's head

That list is the spec. Hand it to anyone quoting the work and they can tell you what Shopify's B2B features cover and what has to be built on top. Hand them a plan name and they're guessing.

Shopify Plus comes up in every conversation about wholesale because the B2B features are tied to it, and that's worth knowing. It still doesn't tell you whether your catalog fits. A shop with three tiers and consistent pack sizes may need almost nothing custom. A shop where half the accounts have negotiated exceptions has a data cleanup job in front of it, and that work happens regardless of which platform you land on.

Cleaning up the price list is useful even if you never build anything. It's the one step we'd do this week.

Native B2B tools versus apps like SparkLayer

Start with native and see where it runs out. Shopify's own B2B features for wholesale ordering are built into the platform, which means one less app bill, one less thing to break on an update, and one less vendor to call when an order goes sideways. If your pricing is a few tiers, your pack sizes are consistent, and your accounts don't have much in the way of special arrangements, there's a good chance you never need anything else.

Apps like SparkLayer exist because some catalogs don't behave. Hundreds of SKUs with different pack rules. Accounts with negotiated line-item exceptions. Ordering patterns that need a grid or a quick-entry screen rather than product pages. When your rules are more complicated than what's built in, an app is usually cheaper than custom code doing the same job.

The way to decide is to test your worst account against the native tools before you shop for anything. Pick the customer with the messiest pricing, set them up in a development store, and try to place their last real order. If it goes through correctly, you have your answer. If you hit a wall, note exactly where. That note is what tells you whether an app closes the gap or whether you need something built.

One warning on apps. They sit between your store and your orders, so check how the app handles things when it's down or when you leave. Ask what happens to your price lists if you cancel. Ask whether orders still flow to your accounting if the app stops responding. Those answers matter more than the feature list.

The setup sequence most guides skip

Order matters. Most B2B feature lists read like a menu, and owners pick whatever looks easiest first — usually pricing, because that's the part they understand. Then they find out the price list has nowhere to attach, because the companies don't exist yet. So they redo it.

Build it in the order the data depends on itself. Companies and their locations first. Price lists and the catalogs they point at second. Markets, payment terms and login permissions last, once there's something real to apply them to.

Each step below takes a working day or less for a small catalog, and each one gives you something you can test before you move on.

Company accounts come first

In Shopify's B2B setup, the company is the customer, not the person. One company profile can hold several locations, each with its own shipping address, payment terms and buyers. That structure is what pricing and permissions attach to later, so it has to exist first.

Start by pulling your actual buyer list — the accounts you already invoice. For each one, you need the legal business name, the locations you ship to, and the people who are allowed to order for each location. If a customer has three branches that each order separately and get billed separately, that's three locations under one company, not three customers.

Set up a handful by hand before you import the rest. Log in as one of those buyers and look at what they see. Company accounts that are wrong at this stage break everything you build on top of them, and you'll find it faster by looking than by reading the import file.

Price lists and catalogs come next

A discount code on your retail catalog is not a wholesale price list. It falls apart the first time a buyer gets a discount on one line and net pricing on another, or buys something you don't sell retail at all.

Take the price lists you already send out and build from those. Each one becomes a catalog: a set of products, with the prices that account actually pays, attached to the companies that get it. Buyers who are on the same terms can share a catalog. The one account with a special deal on a single SKU gets their own.

Two things to check while you're building. Products you only sell wholesale should be in the catalog and hidden from the retail store. Products you only sell retail should be out of it.

Then log in as a buyer and compare the screen to the last invoice you sent them. The numbers should match.

Markets and permissions come last

Once the catalogs are right, you decide who gets to do what with them.

Permissions sit on the people inside a company account. One buyer places orders. Their boss approves anything over a set amount. The warehouse contact can see order status and nothing else. Shopify lets you set this per contact, and most shops need fewer rules than they think — a single ordering contact and one person who gets the confirmation covers a lot of accounts.

Markets handle where an account buys from: currency, shipping zones, which catalog shows up for a company in another country or another state with different freight terms.

Both of these hang off the company and catalog structure underneath them. Set them first and you'll be rebuilding permission rules every time a price list changes. Set them last and it's an afternoon of clicking.

Add each rule as a real account asks for it.

Common pitfalls when you bolt wholesale onto a retail store

The first one shows up in the warehouse. A wholesale buyer orders forty units of something you had six of, because the stock number on the storefront hadn't caught up with the last two retail sales and a return. Now you're short, the inventory count is negative, and somebody has to call the buyer back. Retail orders trickle out one unit at a time. Wholesale orders take the shelf in one click. Any lag in your stock sync that never mattered before matters now.

The second one is the one-off. A contractor calls, wants a pallet, and the office rings it up as a regular order with a manual discount. No company account, no price list, no record that this account gets that price. The next time he calls, nobody remembers what he paid. Do that a few dozen times and your sales history can't tell you what your real wholesale pricing is.

The third is reconciliation. Retail and wholesale pulling from the same stock pool is usually right, but your reports need to tell the two apart. If a draft order, a phone order and a storefront order all land in the same bucket with no tag, month-end turns into detective work.

Pick one: tag every wholesale order from this week forward. Even by hand. It makes the rest fixable later.

Questions owners ask about b2b wholesale ordering on shopify

Is Shopify any good for selling to other businesses? Yes, for most catalogs. Company accounts, logged-in pricing and buyer permissions exist in the platform. Whether your particular price list fits inside those tools depends on how your pricing actually works — flat percentage off is easy, a hand-built list with thirty exceptions and a few customer-specific case packs usually needs work on top. Check your plan's B2B features against a real customer's price sheet, not against a feature list.

Can I sell wholesale without building the whole thing out? You can. Draft orders let the office build an order and send a payment link, and a password-protected page with a form will take a reorder. Both work. Both still put a person in the middle of every order, which is the cost you're trying to get rid of. Treat them as a stopgap while you sort the pricing data, not as the finish line.

What's the best B2B app? The honest answer is that it depends on what the native tools already cover for you. Apps like SparkLayer fill gaps in quoting, reordering and order forms. If your gap is something else, a different app or a small custom build is cheaper than paying monthly for features you don't use. Name the gap first, then shop.

If you want someone to look at your price lists and tell you which parts are a setting and which parts need building, book a New Project Consultation.

More onshopifywebsites

Chris Hobbick

About the author

Chris Hobbick

I build and fix websites, Shopify stores and business software. I work directly with business owners to understand the problem and agree on the work and price.

Meet Chris →

The Newsletter

One useful idea. Once a week.

Practical notes on websites, online stores and the daily work software can help with.

Unsubscribe whenever you want.