Purchase orders CSV
One row per order line. Rows with the same PO number make one purchase order, so an order of three products has three rows. PO number, Supplier and Quantity ordered are required. Every other column can be left out of the file, or left blank.
Download the purchase orders template, or press Download template in Shelfcast with Purchase orders chosen. Its made-up example is one order of two lines.
Imported orders don’t change stock in Shopify. Wait for Shelfcast’s first sync to finish before you import purchase orders, so your products and locations are there to match, and import your suppliers first.
Columns
Section titled “Columns”The order’s details come from its first row. On the order’s other rows, these columns are ignored, so you can repeat the details or leave them blank.
| Column | What to write | Also accepted |
|---|---|---|
| PO number (required) | The order’s number. Every line of an order has the same one. Example: EXAMPLE-PO-1 |
Purchase order number, Purchase order, PO, Order number, Number, PO ID |
| Supplier (required) | The supplier’s name, on the order’s first row. A name Shelfcast doesn’t know yet adds a new supplier. Example: Example Supplies Co. |
Supplier name, Vendor |
| Status | Where the order is. See statuses below. Blank means Draft. Example: Ordered |
State |
| Location | The name of the Shopify location it’s delivered to, in any capitals. Blank, or a name that doesn’t match, means your first active location. Example: Main warehouse |
Destination, Ship to, Warehouse, Receiving location |
| Ordered at | The date the order was placed. Blank means the day you import it. Example: 2026-01-15 |
Order date, Ordered on, Date ordered, Created at, Created, Date |
| Expected on | The date it’s due. Example: 2026-01-29 |
Expected date, Expected, Due date, ETA, Expected at |
| Supplier reference | The supplier’s invoice or order number. Example: INV-1001 |
Supplier invoice, Invoice number, Invoice, Reference |
| Notes | Any text. | Note |
These columns are read from every row, one order line each:
| Column | What to write | Also accepted |
|---|---|---|
| SKU | The product’s SKU in Shopify, in any capitals. Example: EXAMPLE-MUG-BLUE |
Variant SKU, Product SKU |
| Barcode | Any of the product’s barcodes in Shopify, exactly, leading zeros included. | UPC, EAN, GTIN |
| Product | The product’s name. Used only when Shelfcast can’t find the product. Example: Example mug |
Product title, Title, Item, Product name, Description |
| Variant | The variant’s name. Used only when Shelfcast can’t find the product. Example: Blue |
Variant title, Option |
| Supplier SKU | The supplier’s own code for the product. Example: ES-1001 |
Supplier code, Vendor SKU, MPN |
| Quantity ordered (required) | A whole number of 0 or more. Blank means 0. Example: 24 |
Qty ordered, Ordered, Quantity, Qty, Order quantity |
| Quantity received | A whole number of 0 or more. Blank means 0. Example: 0 |
Qty received, Received |
| Unit cost | What one unit cost: a number of 0 or more, in the supplier’s currency. Blank means 0. Example: 4.50 |
Cost, Cost price, Price |
Statuses
Section titled “Statuses”Shelfcast reads the status by what it contains, in any capitals:
| The status contains | Imported as |
|---|---|
| nothing (blank), “draft” or “pending” | Draft |
| “partial” | Partially received |
| “cancel”, “archiv” or “void” | Cancelled |
| “receiv”, “closed” or “complete” | Received |
| anything else, such as “ordered”, “open” or “sent” | Ordered |
They’re checked from the top, so “Partially received” is Partially
received, but “Not received” is Received. Change statuses like that to
Ordered before you import. A file with no Status column imports every order
as a draft.
How rows are imported
Section titled “How rows are imported”- A PO number that’s already in Shelfcast is left alone, so importing the same file twice doesn’t duplicate anything.
- Products are found by SKU, whatever the capital letters, then by barcode. Lines for products Shelfcast can’t find are still imported, with the product, variant and SKU from the file, but they aren’t linked to a product.
- Suppliers are found by name, whatever the capital letters. A name that
doesn’t match a supplier in Shelfcast exactly adds a new supplier, so spell
each name the way it is in Shelfcast or your suppliers file:
Acme CoandAcme Co.become two suppliers. The order’s currency is the supplier’s, or your store’s if the supplier has none. - Received quantities and costs are kept. Additional costs, such as freight, can’t be imported. The order’s Details say it was “Imported”.
- Forecasts refresh when the import finishes.
Open imported orders (Ordered or Partially received) count as incoming in suggestions. When the rest arrives, receive it in Shelfcast and it’s added to what’s available in Shopify.
Why a row is skipped
Section titled “Why a row is skipped”An order is imported whole or not at all. If any of its rows has a problem, none of its lines are imported. The row with the problem says what to fix, and the order’s other rows say “Purchase order … was left out because row … can’t be imported. Fix that row and import the file again.” Once it’s fixed, import the whole file again: orders that came in the first time are skipped, and the fixed order comes in whole. Or press Download skipped rows for a file of just those rows, every row of each left-out order included, with the reason in an Error column. Fix them and import that file. → When rows are skipped
| Message | What to do |
|---|---|
| “PO number is blank. Give every line of an order the same PO number.” | Fill in the PO number. |
| “Supplier is blank on the first row of purchase order …, which is where the order’s details are read from.” | Fill in the supplier on the order’s first row. |
| “Ordered at must be a date, written like 2026-01-15.” | Write the date as year-month-day, or leave it blank. See how dates are read. |
| “Expected on must be a date, written like 2026-01-29.” | Write the date as year-month-day, or leave it blank. |
| “Quantity ordered must be a whole number of 0 or more, like 24.” | Write a whole number, without a minus sign. |
| “Quantity received must be a whole number of 0 or more, like 24.” | Write a whole number, or leave it blank for none. |
| “Unit cost must be a number of 0 or more, like 4.50.” | Write the cost as a number, or leave it blank. |
| “Purchase order … is already in Shelfcast, so its lines were left out rather than imported twice.” | Nothing, if it’s the same order. If it’s a different one, give it another PO number. |
| “Shelfcast hasn’t read your locations from Shopify yet. In Settings, press Sync now next to Products and stock, then import the file again.” | Do that. The first sync usually reads them within a few minutes of installing. |
→ Import a CSV explains how numbers and dates are read, and how to save a CSV from your spreadsheet.