Complete Guide

Shopify Purchase Orders, CSV Imports & Invoice Matching

Create POs from spreadsheets or CSV, bring in supplier invoices, compare invoices with purchase orders and receipts, and manage receiving.

Comparing software rather than learning the workflow? See the Shopify purchase order app comparison.

AP
Abhishek Pandey · July 14, 2026 · Updated October 12, 2026

What is a purchase order?

A purchase order (PO) is a formal commercial document sent from a buyer to a supplier that specifies what products are being ordered, in what quantities, and at what agreed price. It is the foundation of every wholesale purchasing relationship — the document that turns a conversation about buying into a binding commitment.

For Shopify merchants, purchase orders serve three critical purposes. First, they give the supplier a precise specification to fulfil, reducing receiving errors and disputes. Second, they create a paper trail that connects incoming inventory to specific purchase decisions — essential for COGS tracking and supplier performance measurement. Third, they allow merchants to plan inbound inventory against open orders, reducing the surprise of unexpected deliveries or shortfalls.

Formal commitment to buy

A PO specifies exactly what you are ordering — products, variants, quantities, unit costs, and expected delivery date — before goods are shipped.

Receiving reference

When goods arrive, warehouse staff receive inventory against the PO. This ensures quantities are checked against what was ordered, not guessed.

COGS audit trail

Each line item on a PO records the purchase cost, enabling accurate margin calculation and supplier cost tracking over time.

Dispute resolution

When a supplier delivers the wrong quantity or product, the PO is the agreed specification both parties reference to resolve the discrepancy.

The purchase order lifecycle

Shopify's native purchase order has two statuses. Receiving, partial receipt, completion, and closure are tracked on the linked inventory transfer, not as additional PO statuses.

  1. 01

    Draft

    The PO is being created or reviewed. Edit its details, then export it as a PDF to share with the supplier if needed.

  2. 02

    Ordered

    The supplier has confirmed the order. Create a linked inventory transfer to track the shipment and receive inventory.

Other purchasing apps may use additional statuses such as sent, partially received, or closed. Those are app-specific workflow states; Shopify's native PO statuses remain Draft and Ordered.

Creating a purchase order

Shopify Admin supports native purchase-order creation. A PO can be saved as a Draft, exported as a PDF to share with the supplier, then marked Ordered after the supplier confirms. Create a PO-linked inventory transfer to track the shipment and receiving. See Shopify's current purchase-order instructions.

Supremo connects purchase orders to supplier and replenishment workflows, and supports emailing a formatted PO directly to the supplier. A useful PO includes supplier details, a destination, expected delivery date, products, quantities, unit costs, and any notes for the supplier.

Purchase order checklist

  • Select supplier and confirm current lead time
  • Add products from Shopify catalogue — include all active variants
  • Enter quantity and agreed unit cost for each line item
  • Set the expected delivery date
  • Review total order value and confirm budget approval
  • Send to supplier and record confirmation date

CSV purchase orders and three-way invoice matching

Supremo can create purchase orders from a PO spreadsheet or CSV. If you start with a supplier-invoice CSV, the import can create a corresponding purchase order and linked invoice record. This gives purchasing teams a way to bring existing spreadsheet workflows into their PO process.

For invoice review, Supremo supports three-way matching: compare the supplier invoice with the purchase order and the inventory received. Review those records together before invoice approval, and follow up on discrepancies through your normal purchasing or accounting process.

Supremo also connects inbound purchasing to outbound order handling in its Shopify warehouse and fulfillment workflow.

Receiving inventory against a purchase order

Receiving is the process of matching delivered goods to the open purchase order and updating Shopify inventory. A proper receiving workflow prevents two common failures: receiving more than was ordered (inflating inventory records) and failing to update inventory when partial deliveries arrive (understating available stock).

Full receipt

All ordered quantities arrive in one delivery. The linked inventory transfer records receipt, and Shopify inventory is updated for the accepted quantities.

Partial receipt

A subset of items or quantities arrives. The linked transfer records what was received, while the remaining quantity stays unreceived. Shopify inventory reflects accepted units only.

Over-receipt

If the supplier delivers more than ordered, verify and record the discrepancy before deciding whether to accept the excess into inventory.

Backorder tracking

For delayed items, record expected arrival separately from available stock. The way apps track backorders varies by product.

When receiving against a PO in Supremo, inventory is updated in Shopify immediately upon marking items as received — no manual stock adjustment required. Each receiving event is timestamped, creating a full audit trail of when each unit entered your inventory.

Landed costs

The unit cost on a purchase order is the price your supplier charges. But the true cost of that inventory unit — the landed cost — includes every expense incurred to bring it into your warehouse: freight, insurance, customs duties, port handling, and last-mile delivery.

Merchants who calculate margins using only the supplier unit price systematically understate their true COGS. This leads to pricing decisions and profitability analyses that do not reflect reality. The error compounds across high-volume SKUs and becomes significant when freight costs are volatile.

Landed cost components

  • Supplier unit price
  • International freight
  • Insurance
  • Customs / import duties
  • Port and handling fees
  • Last-mile delivery
  • Broker fees
  • Currency exchange costs

A landed cost can be allocated across a PO in several ways: by quantity (total additional cost ÷ total units received), by value (proportional to each line item's purchase price), or by weight (proportional to each line item's unit weight). Allocating by value is the most common approach for mixed-product purchase orders.

Frequently asked questions

A purchase order is a record of the products, quantities, costs, supplier, and destination a Shopify merchant agrees to buy from a supplier. Shopify Admin supports basic native POs with Draft and Ordered statuses; after a PO is Ordered, a linked inventory transfer tracks the movement and receipt of the goods. Apps such as Supremo connect purchasing to broader replenishment and inventory workflows.

Yes. Shopify Admin supports basic purchase orders that can be saved as Draft or marked Ordered, then exported as a PDF to submit to a supplier. A PO-linked inventory transfer tracks shipment and receiving, including partial receipts. Inventory apps such as Supremo can extend the workflow with supplier and replenishment operations.

Yes. Supremo can create purchase orders from a purchase-order spreadsheet or CSV. Importing a supplier-invoice CSV can also create a corresponding purchase order and linked invoice record.

Yes. Supremo supports three-way matching by comparing a supplier invoice with its purchase order and the inventory received. Review the matched records as part of invoice approval.

A purchase order is sent from the buyer to the supplier before goods are delivered — it is a request or commitment to buy. An invoice is sent from the supplier to the buyer after delivery — it is a request for payment. The PO number is typically referenced on the invoice, allowing merchants to match received invoices to their original purchase orders for accounts payable reconciliation.

A partial receipt occurs when a supplier delivers only some of the items on a purchase order. In Shopify, receiving progress is tracked on the PO-linked inventory transfer: record the quantity that arrived, and keep the remaining quantity unreceived until it arrives. This keeps the PO's Draft or Ordered status distinct from the transfer's receipt progress.

Landed cost is the total cost of a unit of inventory by the time it arrives at your warehouse, including the purchase price, freight, insurance, customs duties, and any handling fees. Tracking landed cost per purchase order gives you an accurate cost of goods sold (COGS) figure — which is essential for correct margin calculation. Merchants who only track the unit purchase price routinely underestimate their true COGS.

A backorder occurs when a supplier cannot fulfil a line item immediately and commits to delivering it at a later date. A purchase order system that tracks backorders gives merchants visibility into when delayed stock is expected to arrive, enabling better customer communication and fulfilment planning. Without backorder tracking, merchants often discover stock shortfalls only when a customer order cannot be fulfilled.

Shopify Admin lets you export a purchase order as a PDF to submit to a supplier; its documentation does not describe a native send-by-email control. Supremo can email a formatted PO directly to the supplier contact on record, in addition to its broader inventory workflows.

There is no practical limit to the number of open purchase orders you can manage simultaneously in a dedicated inventory app. Most growing Shopify merchants have between 5 and 30 open POs at any given time, spread across multiple suppliers. Good inventory systems filter and group POs by status (draft, sent, partially received, complete) so you can quickly see what needs attention.

More in this guide

Start managing purchase orders on Shopify

Supremo gives you a complete PO workflow — create, send, receive, and track supplier orders directly inside your Shopify store.