Creating a PO
There are several distinct entry points for starting a purchase order. Each one prefills a different amount of information based on where the signal came from. Pick the one that fits how you decided what to buy.
On this page
Section titled “On this page”- Creation paths
- The min/max creation flow
- What gets prefilled
- Sales-orders wizard: choosing a destination
- Multi-supplier selection
- Custom items (variants not yet in Shopify)
- Importing from Stocky
- Operator preferences that affect creation
- See also
Creation paths
Section titled “Creation paths”| Path | Where it starts | Prefilled |
|---|---|---|
| From the Forecast page | Select rows on the Forecast page → Actions → Create PO. | Quantities from the displayed Actual Reorder QuantityReorder quantityThe number of units to order. Starts as a raw target (cover demand until the next reorder), then adjusts for MOQ, pack size, incoming stock, back orders, and EOQ. Read more → (including EOQ uplift where shown), unit cost where available, MOQ + pack size info, originating forecast view. You choose a supplier or leave supplier blank to review supplier grouping. |
| From Forecast (in-app) | Supply Orders → Purchase Orders → Create Purchase Order → Create from Forecast. | A supplier (required — the run is limited to its variants) and a location, then either a saved forecast view used as-is or a one-off forecast configuration (model, history period, lead time, variant filters). Logistified runs the forecast itself and orders each variant’s Actual Reorder Quantity — note this path does not apply the EOQ uplift the Forecast page shows. The view it ran is stamped on the PO. |
| From Min/Max | Supply Orders → Purchase Orders → Create Purchase Order → Create from Min/Max. | Variants at or below their Reorder PointReorder pointThe inventory level at which you should reorder. Calculated as the demand you expect during your lead time plus a safety stock cushion. When on-hand drops to this level, it's time to send a PO. Read more → or Min InventoryMin inventoryA per-variant minimum stock level you set as an override. Displayed on the Forecast page's In Stock cell and used by min/max replenishment workflows. Does not change the forecast model's reorder math. Read more → — counting incoming stock on open POs — with quantities to refill toward Max InventoryMax inventoryA per-variant maximum stock level you set as an override. Displayed on the Forecast page's In Stock cell and used by min/max replenishment workflows. Read more → or Target InventoryTarget inventoryA per-variant target stock level you set as an override. Used by min/max replenishment workflows as the "refill to" target. Read more → . Supports variant filters, an editable preview with per-line removal, and an optional back-order split. See The min/max creation flow below. |
| From Sales History | Supply Orders → Purchase Orders → Create Purchase Order → Create from Sales History. | A supplier is required, and the run covers only that supplier’s linked variants. Each quantity is the units sold in the window you pick — no MOQ or pack-size rounding is applied here. You can restrict the sales to the PO’s location and optionally include zero-sales items at quantity 0. |
| From Sales Orders | Supply Orders → Purchase Orders → Create Purchase Order → Create from Customer Orders — or Supply Orders → Orders → select orders → Actions → Create PO from selected orders, which opens the same wizard with those orders already picked. The order picker lists every synced Shopify order; there is no unfulfilled-only filter. | Variants on selected orders, quantities aggregated. You then choose a destination: a new PO, an existing Draft PO, or a multi-supplier split. See below. |
| Manually (blank) | Supply Orders → Purchase Orders → Create Purchase Order → Create Empty PO. | A blank Draft PO. You can start without a supplier, but pick a real supplier before you rely on supplier email, supplier defaults, supplier currency, supplier-specific pickers, or supplier-credit workflows. |
| From CSV / XLSX import | Supply Orders → Purchase Orders → Create Purchase Order → Import from CSV/XLSX. Bulk upload through the unified import parser. | All line items from the file, mapped to variants by SKU / barcode. |
| From Stocky import | Supply Orders → Purchase Orders → Create Purchase Order → Import from Stocky. | Stocky-format file mapped to Logistified PO fields. Rows are matched to existing variants — Shopify ID first, then SKU; unmatched rows can optionally be imported as custom items. See Importing from Stocky below. |
The Forecast path is the most common — it’s what most operators use day-to-day. The Sales-orders wizard is the most powerful for inbound-demand-driven replenishment.
The min/max creation flow
Section titled “The min/max creation flow”Create from Min/Max walks through three steps — Supplier, Location & Details, and Min/Max Settings — then calculates a preview before anything is created.
- Supplier (optional) — pick a supplier to limit the run to its linked variants and pull unit cost, supplier SKU, lead time, MOQMinimum Order QuantityThe smallest quantity a supplier is willing to ship in a single PO line. Logistified rounds reorder suggestions up to the MOQ (or the next multiple of the pack size) so suggestions are immediately actionable. Read more → , and pack sizePack sizeThe packaging increment your supplier ships in — for example, 12 to a case. Logistified rounds order quantities up to the nearest multiple of pack size. Read more → from the supplier ↔ variant linksSupplier–variant linkThe relationship between one supplier and one variant — the supplier's SKU, product name, product URL, variant notes, barcode, cost, MOQ, max order qty, pack size, and lead time. A variant can have many links; one is marked primary. Read more → (order quantities are rounded up to meet MOQ and pack size). Or choose Skip (all suppliers) to scan every variant — MOQ and pack size are then treated as 1, so nothing is rounded.
- Location — trigger and refill thresholds are always read for the location you pick. If your shop has exactly one location, it’s selected automatically.
- Trigger — which variants qualify: Below Reorder Point (the default) or Below Minimum Inventory. The comparison is At or below threshold (≤) by default, or Strictly below threshold (<). It counts on-hand stock plus outstanding incoming units on open purchase orders, so a shortfall an open PO already covers doesn’t trigger.
- Refill — how high to top up: Up to Max Inventory (the default) or Up to Target Inventory.
- Variant filters (optional) — narrow the run by vendor, product type, tags, and more before previewing.
A Location-Specific Inventory switch (on by default) decides whether on-hand and incoming quantities are counted at the selected location only, or across all locations combined. Trigger and refill thresholds still come from the selected location either way. With the switch off, the preview is badged Global inventory and its On hand / Incoming columns are relabeled (all locations).
Preview shows up to two tables — in Split Into Back Orders mode, Will be ordered is replaced by separate Main PO and Back Order PO tables:
- Will be ordered — one row per variant with on-hand, incoming, the threshold, and the order quantity. Every row has a remove (trash) button; removed variants are left out of the created PO entirely.
- Skipped. Already covered by open POs — variants below the trigger on on-hand stock alone, whose shortfall existing open purchase orders already cover. Each row links to the covering PO(s). These rows are informational only — they aren’t part of the PO and can’t be removed.
The PO only ever contains variants that were in the preview — with quantities (and the single/back-order split) recalculated against current stock at creation, so they can differ from what was previewed.
An Order mode control decides how the order is written:
- Single PO (the default) — everything on one purchase order.
- Split Into Back Orders — a main PO that refills stock from 0 up to your target/max, plus a separate back-orderBack orderA customer order placed when the product was already out of stock. Shopify keeps the order open; Logistified counts the missed units toward your next reorder so you eventually fulfil it. Read more → PO for the oversold portion (variants with negative on-hand) that fills inventory back up to 0. The back-order PO reuses your PO name with “(Back Order)” appended and the main PO’s number with “-1” appended. If everything you’re ordering is oversold, only the back-order PO is created (with a normal PO number); if nothing is oversold, you get a single PO. The create button tells you what you’ll get — Create 2 POs, or Create PO with the line count in brackets.
Caveats:
- Removals only apply to the current preview. Going back a step and previewing again restores every removed row.
- Removing every row disables creation — run a new preview to start over.
- In a split, if the main PO is created but the back-order PO fails, you’ll see a Back order PO not created warning; the main PO still exists, so only the back-order portion needs recreating.
What gets prefilled
Section titled “What gets prefilled”When the PO opens after creation:
- Supplier — set when you choose one, or set per PO when you use a split-by-supplier path. Forecast-created POs do not automatically choose a supplier just because selected rows have primary suppliers.
- Currency — inherited from the chosen supplier. If there is no supplier yet, choose one before sending or using supplier-specific finance workflows.
- Tax rate — inherited from the supplier’s default when a supplier is chosen; otherwise it uses your purchase default until you change it.
- Payment terms — inherited from the supplier’s default when a supplier is chosen (for example “Net 30”). With no supplier — or a supplier that has none — it starts at No Payment Terms.
- Carrier — not a purchase-order field at all. Carriers are recorded per shipment on the PO’s Payment & Delivery tab; see Shipments.
- Originating forecast view — stamped automatically when created from the Forecast page.
- Line item quantities, cost, supplier SKU — from the supplier ↔ variant link when available.
Everything is editable while the PO is still Draft.
Sales-orders wizard: choosing a destination
Section titled “Sales-orders wizard: choosing a destination”After you pick orders and review the aggregated items, the wizard’s last step asks where those items should go:
- Create a new purchase order — pick a supplier (optional) and a name, then create a fresh Draft PO for the items.
- Add to an existing PO — search for and select a Draft PO at the same location. The items are always added as new lines; quantities are never merged into a line already on that PO. The source Shopify orders are linked to it alongside whatever was already linked.
- Split across suppliers — items are auto-grouped by their recommended supplier, with a chance to reassign unassigned or misgrouped items first. By default each group creates its own new PO, but you can instead point a group at one of that supplier’s existing Draft POs; where a line for the same variant is already on that target you choose Combine (quantities added) or Replace (quantity overwritten). This is the only destination where quantities can merge into a line that already exists on the target PO.
Only Draft POs at the matching location show up as “existing PO” targets.
Multi-supplier selection
Section titled “Multi-supplier selection”When the rows you select span multiple primary suppliers — common in the Forecast and the Sales Orders wizard — the safest path is to split into one PO per supplier.
In the Forecast dialog, choosing one supplier creates a single PO using that supplier and its defaults. Treat that as a supplier choice, not a strict supplier filter: review the line items before sending, especially if the selected rows originally pointed to different suppliers. The split path creates the supplier-specific POs in one operation. Each PO gets stamped with the same origin (forecast view or sales-order batch).
Custom items (variants not yet in Shopify)
Section titled “Custom items (variants not yet in Shopify)”You can add a line for a product that doesn’t yet exist as a Shopify variant — a custom itemCustom itemA line on a purchase order for a product that doesn't yet exist as a Shopify variant. You convert it into a real Shopify variant later, usually when you receive. Read more → . Once the PO reaches In Progress — and while it is Partially Received, Received, or Completed — each custom-item line gets an Add as product to Shopify action that creates a real Shopify product (as a Draft product) and attaches the reference to the line. The PO line remains a custom-item line with that Shopify reference attached; it is not identical to a normal Shopify-linked line.
Used when you’re ordering something you haven’t yet decided to sell, or a one-off batch. See Adding line items → Custom items.
Importing from Stocky
Section titled “Importing from Stocky”Import from Stocky reads your Stocky purchase items report (CSV/XLSX). Multiple POs in one file are grouped automatically, and suppliers and locations are auto-matched where possible. Each row is matched to a variant in your Logistified catalog — first by the file’s Shopify ID column, then by SKU. Because the Shopify ID is tried first, a row with no SKU at all can still match; such rows show the ID as #12345… in the preview’s SKU column. A Shopify ID cell that is blank, 0, or mangled by Excel into scientific notation (e.g. 4.94515E+13) is treated as missing, and the row falls back to SKU matching.
Rows with no identifier at all — no SKU, no Shopify ID, and no product or variant title — are dropped, as are rows whose quantity is zero or negative and rows that fail validation (a missing Purchase Order value, for example); the preview notes how many rows were skipped and why. Rows that resolve to the same variant are merged, with their quantities summed.
The preview’s summary bar counts the matched items; when at least one row matched by Shopify ID, hovering the items matched badge shows the Shopify-ID vs. SKU split. If any rows match nothing, a second badge counts them — “unmatched (will be skipped)” or “unidentified → custom items”, depending on the checkbox below — next to a Remove all unmatched button (each expanded PO also has its own Remove unmatched). Every line’s status icon has a tooltip explaining how that line matched.
When at least one row matches no variant, a Create unidentified items as custom items checkbox appears under the summary. It’s off by default: unidentified rows are simply skipped and the import proceeds without them. Tick it, and those rows are imported as custom itemsCustom itemA line on a purchase order for a product that doesn't yet exist as a Shopify variant. You convert it into a real Shopify variant later, usually when you receive. Read more → instead — title, SKU, and cost come straight from the file. The Cost origin selector doesn’t apply to these lines: even with Shopify / Supplier selected, custom items always take the file’s cost, since there’s nothing else to fall back to. When custom items were created, the result screen adds a Custom Items tile counting them.
Custom items created this way work like custom items added by hand — see Custom items above — with one difference: they land in whatever status the imported PO carries, so a delivered Stocky PO arrives with its custom items already Received.
Each PO in the preview has its own editable Name, Location, Supplier and Status, with Set all statuses / suppliers / locations controls above the list. The status is prefilled from the file: every line received → Received, some → Partially Received, otherwise Draft. A PO whose status is anything other than Draft must have both a supplier and a location — otherwise it is dropped from the run and the footer warns that those non-draft POs “need a supplier and delivery target”. Draft POs missing those details still import, with a softer reminder to fill them in before sending. Partially Received is also rejected when nothing (use In Progress) or everything (use Received) in the file is marked received.
Operator preferences that affect creation
Section titled “Operator preferences that affect creation”These defaults live elsewhere in the app; this is the reference for what gets used at PO creation.
| Preference | Where set | What it does |
|---|---|---|
| Default payment terms | Suppliers → Supplier detail. | Stamped on the PO header. Editable per PO. |
| Default currency | Suppliers → Supplier detail. | Inherited at creation. |
| Default tax rate | Settings → Tax Rates, then linked from the supplier row. | Inherited at creation. |
| Carrier list | Settings → Carriers. | Fills the carrier picker on a PO’s shipments. |
| Supplier–variant link | Suppliers → Supplier detail → Variants tab. | Drives MOQ, pack size, lead time, unit cost at creation. |
| Originating forecast view | Forecast page state at creation time. | Stamped automatically for audit. |
See also
Section titled “See also”- Dropship POs — shipping straight to a customer’s address instead of a location.
- Deliver to another supplier — having a second supplier take delivery and hold the goods for you.
- Adding line items — every way to add a row, including the Assemblified raw-materials split.
- Forecast → Creating a PO from the forecast — the Forecast-side cross-link.
- Lifecycle & statuses — what happens after Draft.
- Settings — all the operator preferences.