← All articles

Operations & fulfilment

Wholesale Fulfillment on Shopify: The Practical Setup

By Martin Mecar, founderOctober 15, 20266 min read

The Shopify admin can run your wholesale orders perfectly well. What it cannot do out of the box is tell them apart from your DTC orders, which is the actual problem. Left alone, a stockist order lands in the same queue as forty consumer parcels, gets picked by the same routine, and quietly poisons every report you run.

The setup below is what a brand doing its first ten to fifty wholesale orders a month needs. None of it requires a plan upgrade, and most of it is configuration rather than software.

Make wholesale orders visibly different

Start with the boring thing that fixes half the problems: tag every wholesale order the moment it exists.

Tag the customer as wholesale, tag the order as wholesale, and save a filtered view in the Orders list that shows only those. Now you have a wholesale queue you can work as a batch, which is how wholesale packing should be done — never interleaved with single parcels.

Add a second tag for the account name if you have accounts that reorder often. Then a question like "what has this boutique bought this year" is one filter instead of an archaeology project across email.

If the orders are arriving as emailed order forms rather than through the store, create them as draft orders and tag those. Shopify draft orders for wholesale covers the mechanics, including sending an invoice link the buyer can pay later.

Decide how wholesale stock is held

This is the decision that has real consequences, and there are three shapes of answer.

The simplest is one shared inventory pool: the same units are available to your store and to your stockists, first come first served. It is fine when wholesale is occasional and your stock levels are comfortable. It fails the first time a good weekend on the store eats a case a boutique had been promised.

The second is a second location. Create a location called something like Wholesale, move units into it, and set your online store to fulfil only from your main location. Now the wholesale stock is genuinely ringfenced, the store cannot sell it, and you can see at a glance what is committed to the channel. This is the setup most growing brands end up with.

The third is a separate store entirely, which buys you complete separation and costs you a second admin to keep in sync. It is rarely worth it below a serious volume of wholesale revenue. A separate wholesale store on Shopify weighs it up properly.

Whichever you pick, the underlying allocation question — how much of a limited run belongs to each channel — is a planning decision, not a software one, and it is in wholesale inventory management.

Hold the order until it is ready to pick

Wholesale orders often should not be fulfilled the day they arrive. Production has to run, or payment has to clear, or the buyer asked for a specific delivery week.

Shopify supports holding fulfilment on an order, which is better than the alternative most brands default to, which is leaving the order unfulfilled and remembering. A held order shows its status on the order page, so anyone looking at the queue can see the difference between "waiting on us" and "waiting on purpose."

Use the order timeline as the running log for that account. Every phone call, every date change, every "the buyer asked to push this to the first week of the month" goes in as a note on the order. When the account emails three weeks later asking what was agreed, the answer is on the order rather than in somebody's memory.

Partial shipments without breaking the invoice

Wholesale orders split more often than DTC orders. One scent is still curing, a case arrived damaged from your own supplier, a buyer wants half now for a window display.

Shopify handles this natively: fulfil the lines you have, leave the rest open, and the order carries two fulfilments with two tracking numbers. Two things to get right around it.

Tell the buyer before you do it, not after, and get agreement on whether the balance ships at your cost. Shipping the remainder separately usually should be on you, because the split was your constraint, not theirs.

And decide what happens to the invoice. Invoicing the full order and shipping in two goes is normal and simpler. Invoicing each shipment separately is cleaner for the buyer but doubles the paperwork and the reconciliation. Pick one, write it in your terms, and stay consistent. The invoice itself is covered in the wholesale invoice.

Packing slips that look like wholesale documents

The default Shopify packing slip is designed for a consumer parcel. For wholesale it is missing things and showing things it should not.

ChangeWhy
Add the buyer's purchase order numberShops match deliveries and payments by it
Show units per case beside quantityStockrooms count cases
Remove pricesThe stockroom does not need them
Add carton count, as one of threeProves the delivery is complete

The packing slip template is editable in the admin, and it is worth an hour. Print it for wholesale orders only, from the saved wholesale view, so your DTC slips stay as they are. The labels that go on the outside of the cartons are a separate job, and nothing in the admin prints them for you.

Shipping profiles, so rates stop lying

Your DTC shipping rates are built around one or two units in a mailer. Applied to five cases they produce a number that is either comic or ruinous.

Create a shipping profile for the wholesale customer group with its own rates: a flat rate per case by zone, or no rate at all if you add freight to the invoice after the pallet is built. Then wholesale orders stop quoting consumer postage, and your store stops offering a stockist the same threshold you offer a shopper.

If you are adding freight at invoice time rather than at order time, set the wholesale profile to a zero-rate option named clearly, so nobody mistakes it for shipping being included. The freight decisions underneath this are in wholesale shipping.

What the built-in business features add

Shopify's business-to-business features add company records, per-company price lists, payment terms attached to a company, and a login that shows the right prices without a discount code. On the fulfilment side the useful part is that orders arrive already identified as a company order, with the right terms attached, so the tagging above happens by itself.

Whether that is worth the plan it sits on depends on how many accounts you have and how much time the manual version is eating. Below a dozen accounts, draft orders and tags cost nothing and work. Above that, the admin overhead starts to argue for itself. Shopify B2B goes through what is actually included.

If the constraint is not the software but the account list feeding it, that is a different job. Paste your store link into WholesalePilot and look at the preview of retailers that stock products like yours before you spend a weekend on configuration.

Questions brands ask about wholesale fulfillment on Shopify

Can I run wholesale through my normal checkout with a discount code? It works for one friendly account and breaks fast. Codes leak, checkout takes payment when the account expects terms, and the revenue lands in your DTC reporting.

How do I stop my store selling stock promised to a stockist? Move the committed units to a separate location and exclude that location from online store fulfilment.

Should wholesale orders show in my store analytics? Not mixed in. Tag them and exclude the tag from your DTC reporting, or the conversion and average order numbers you make decisions on become meaningless.

Do I need a fulfilment app? Not for a first year of wholesale. Tags, a saved view, a second location and an edited packing slip cover almost everything an app would sell you.

Find the B2B buyers for your product

Paste a product link. We find matching wholesale buyers, email them in your name, and hand you the replies.

Keep reading