Guide

A purchase order is four jobs, and most tools only do two.

Forecasting is what makes a purchase order correct. The purchase order is what merchants actually came for. This page walks the full loop, from a buying decision to stock on the shelf, and is specific about the stage that quietly costs real money: whether a sent order counts as stock on its way.

Written August 2026. The Proviand behaviour described here is what the code does in production. Shopify's native purchase order behaviour was checked against Shopify's own documentation in August 2026, and Shopify ships changes often, so treat the dated claims as dated.

The four stages

Every purchase order goes through the same four stages, whatever tool you use:

  1. Draft. A buying decision becomes a document: this supplier, these products, these quantities, this location.
  2. Send. The document reaches a human at the supplier in a form they will act on.
  3. Incoming. The units on that order count as stock on its way, so nothing recommends you buy them again.
  4. Receive. The delivery arrives, in full or in part, and the units land in Shopify at the right location.

Stage 1 and stage 4 get all the attention because they are visible. Stage 3 is the one that costs money, and it is invisible until it has already cost you.

Stage 1: the draft should come out of a decision, not a blank form

The useful test for this stage is how much typing it takes. If you have already looked at a buying table and decided to order eleven products, creating a purchase order should not mean re-entering those eleven products.

In Proviand you tick rows in the buying table and get drafts back. The grouping is one draft per supplier and location, because that is the unit a supplier can actually fulfil. Rows with no supplier assigned collect into their own draft rather than being dropped. Quantities come pre-filled from the recommendation, unit costs from your product settings, and the expected date is set to today plus that supplier's lead time.

Drafts are editable, and only drafts. Once an order is sent, the quantities are frozen, because the number in your system needs to match the number the supplier is reading. If the order was wrong, you cancel it and send a new one. Cancelling is available from draft and from sent, and nowhere after that.

Stage 2: sending

Sending is the stage most likely to be quietly manual. Plenty of tools produce a purchase order and then leave you to attach it to an email yourself.

Proviand emails the order to the supplier address on file, as an HTML table a person can read in their mail client and as a plain text version underneath it. If there is no email address on the supplier, the order still moves to sent and the app tells you no email went out, rather than silently pretending one did. On the Plus plan the same email carries a PDF attachment, which is what suppliers who file paperwork actually want.

Worth saying plainly: drafting is free in Proviand, and sending and receiving are part of the Starter plan at $29 a month.

Stage 3: the double-order trap

The expensive one. If a sent purchase order does not count as incoming stock, your next forecast still sees a shortfall, and tells you to buy the same thing again. You order 200 on Monday. On Tuesday the buying table still shows you short. You order 200 more. Six weeks later you own 400 units of something that sells 3 a day.

This is not hypothetical. It happens because "the order exists" and "the order counts" are two different facts in most systems.

Proviand's rule is that a purchase order counts as incoming from the moment it is sent, and only then. Drafts do not count, because a draft is a thought rather than a shipment. What gets counted is the outstanding amount on each line, which is the quantity ordered minus whatever has already been received, and it is counted against a specific variant at a specific location. A pallet heading to your Rotterdam warehouse does nothing for the shelf in the shop.

That number is then added to Shopify's own incoming quantity, so both sources of truth are in the total:

incoming = Shopify incoming + open Proviand PO units

And a product is only flagged for reordering when it is genuinely short with everything on its way accounted for:

flagged when on hand + incoming ≤ reorder point

Shopify's native flow has the same trap in a different place, and it is worth knowing about even if you never install anything. In Shopify's admin, marking a purchase order as Ordered does not by itself create incoming inventory. The purchase order records the commercial agreement; a separate linked inventory transfer handles the shipment. Until you create that transfer, the stock is on order in one screen and invisible in another. If your buying decisions read the inventory screen, and the transfer has not been created yet, you are looking at exactly the shortfall that makes you order twice.

Stage 4: receiving, including the half that shows up

Partial deliveries are normal. Suppliers short-ship, split shipments across two pallets, and back-order the one thing you needed most. A purchase order tool that only understands "received" is a tool that has not met a supplier.

In Proviand, receiving happens on the order itself. You can receive everything at once, or type quantities line by line for what actually turned up.

Receiving a delivery in Proviand: each purchase order line shows ordered, already received, and a field for the quantity arriving now

Three things happen when you confirm, in this order, and the order matters.

First, the requested quantities are clamped to what is still outstanding on each line. Receive 30 against a line with 20 outstanding and 20 is what gets applied. This sounds pedantic until you have watched someone type into the wrong row.

Second, the units are written to Shopify: a positive adjustment to the available quantity at the purchase order's location, with the reason recorded as received and a reference back to the specific order, so the movement is traceable from Shopify's own inventory history. The write carries an idempotency key, which means a network retry cannot apply the same delivery twice.

Third, and only after Shopify has accepted the change, the purchase order is updated. Each line's received count goes up, and the order moves to partially received, or to received when every line is complete.

A partially received purchase order in Proviand, showing ordered against received per line with the remainder still outstanding

Writing to Shopify before updating our own records is a deliberate choice. If the Shopify write fails, nothing is recorded, and you can retry a receipt that did not happen. The other order gets you a purchase order that says the stock arrived and a shelf that disagrees, which is the worse of the two failures by a distance.

The remainder stays outstanding, and stays counted as incoming, until it arrives or you close the order.

Why Shopify's Vendor field is not a supplier record

Shopify has a Vendor field on the product. One text field, on the product, not the variant.

Buying decisions need more than a name, and they need it per variant:

Proviand keeps those per variant, with defaults, currency and payment terms on the supplier record. The rounding then happens where it belongs: the recommended quantity is rounded up to the MOQ, then up again to a whole number of cases.

What Shopify's native purchase orders do now

Checked August 2026, and more capable than the internet gives them credit for. You create purchase orders under Products, assign a supplier, add products by hand or CSV or barcode scanner, and set quantity, supplier SKU, cost and tax per line, plus payment terms, currency and notes. Fields auto-fill from the last order you placed with that supplier. There are two statuses, Draft and Ordered, and marking an order as ordered cannot be undone. Receiving runs through a linked inventory transfer, which does support partial receipts.

The gaps, as of August 2026: you cannot email a purchase order from the Shopify admin, so sending means downloading a PDF and attaching it yourself. Historical purchase orders cannot be imported, which matters if you are coming off Stocky, unavailable after 31 August 2026. And the supplier data that drives a forecast, lead time and MOQ and case pack, has nowhere native to live.

The longer version of this comparison, including when native is genuinely the right answer, is on do you even need a purchase order app.

You may not need an app for this

If you have one or two suppliers, lead times inside a couple of weeks, and you are already creating native purchase orders and their transfers without forgetting, Shopify's built-in flow is enough. It is free, it is in the admin you already use, and a subscription on top of it will not make your buying better. Attaching the PDF to an email yourself takes about forty seconds.

An app starts earning its keep at the point where the deciding is the hard part rather than the paperwork: enough products that a weekly review stops happening, lead times long enough that a wrong call costs a month, several suppliers with different minimums, or more than one location.

Proviand is also the wrong tool for some stores outright. If your demand comes from drops, pre-orders, or a catalogue that turns over completely every season, a forecast built on trailing sales has nothing useful to say, and the purchase orders it drafts will be confidently wrong. Buy on judgement and use Shopify's native purchase orders for the paperwork.

Where the numbers come from

Everything above assumes the quantities are right. That is a separate job, covered in how Shopify inventory forecasting actually works: the seven inputs behind a reorder number, the arithmetic, and how to check a number you do not trust.

Proviand drafts the purchase orders from those numbers, sends them, counts them as incoming, and receives them back into Shopify. Every figure on the way shows its work.

Install Proviand

Coming off Stocky with open purchase orders? Email [email protected] and I will walk through the migration with you.