Skip to main content

Creating Purchase Orders

There are four ways to create a PO in Synplex. All four result in the same PO form — they differ only in how you get there and how much is pre-filled.


Method 1: Manual Creation

  1. Go to Purchase Orders and click Create PO. The page title is Create draft purchase order.
  2. Select a supplier from the dropdown. Synplex will automatically set the PO currency to that supplier's default currency. If the supplier has a Supplier Product record for any items in the table, the supplier SKU and unit price are also auto-filled for those rows.
  3. Add line items. Each row requires: product/variant, order quantity, unit price, warehouse location. Discount, tax, and notes are optional. Per-row totals are calculated automatically as quantity × unit price − discount + tax.
  4. Set the incoterm (default: DAP). Options: DAP, DPP, CIF, FOB, EXW, FCA.
  5. Set the order date and requested delivery date.
  6. Set the Sync receipts to Shopify toggle — controls whether receipt quantities from this PO are pushed to Shopify inventory when goods are received. Defaults to the shop-level setting in Settings. Can only be changed while the PO is in draft status.
  7. Review the Cost summary panel (right side): shows subtotal, additional costs, general discount, and total cost.
  8. Click Save. The PO is always saved as draft — there is no send step at creation.

Open a saved view filtered to products that need reordering — for example, Status = Running Low, Grade = A. Multi-select the rows, click Add to PO, and choose Create new PO or Add to existing PO. Synplex passes the selected items with their inventory level data (available stock, daily sales rate, recommended order qty, days of coverage, stock assessment) pre-populated into the PO item table. Items with a procurement strategy of produce are excluded automatically. This method keeps you focused on high-priority items and eliminates the risk of accidentally ordering products with healthy stock.


Method 3: From the Supply Plan

Go to Demand & Supply Plan → Supply Plan. Click Convert to PO on any recommended order. The item list is pre-filled from the supply plan with supplier, quantity, and expected delivery date already set.


Method 4: CSV Import

Use the Import button on the Purchase Orders list page to bulk-create POs from a CSV file. This is the recommended method for migrating historical PO data or creating many purchase orders at once.

How it works

The import is a two-phase process:

  1. Parse & preview — upload your CSV file and click Parse file. Synplex validates the headers and shows a summary (number of POs, line items, and shipments detected) before anything is written to the database.
  2. Start import — click Start Import to confirm. The import runs as a background job. You will receive an email when it completes.

Required columns

ColumnDescription
poNumberPurchase order number. Use the same value for all rows belonging to the same PO.
supplierNameExact name of an existing supplier. The supplier must already exist in Synplex.
productVariantSKUSKU of the product variant. Must exist in your Shopify store.
quantityQuantity to order. Must be a positive number.
unitPriceUnit price for the line item. Must be a number.

Optional columns

ColumnDescription
requestedDeliveryDateExpected delivery date. Format: YYYY-MM-DD. Must be the same for all rows of the same PO.
confirmedDeliveryDateConfirmed delivery date. Format: YYYY-MM-DD. If provided, the PO is automatically confirmed and one shipment is created per unique date per PO.
orderDateDate the order was placed. Format: YYYY-MM-DD. Defaults to today.
poNotesFree-text notes for the purchase order.
shopifyLocationExact name of the Shopify location for this line item. Also used to assign the shipment location. If omitted, no location is assigned.
syncPOreceiptToShopifytrue or false. Defaults to false. Must be the same value for all rows of the same PO.
quantityAnnouncedAnnounced quantity for the shipment item. Triggers shipment creation if provided.
quantityAcceptedAccepted quantity for the shipment item.
quantityDefectDefect quantity for the shipment item.

Status behaviour

POs are always created as draft initially. Status is promoted automatically based on the data present in the CSV:

  • No confirmedDeliveryDate or shipment quantity columns → stays draft
  • confirmedDeliveryDate or any shipment quantity provided → automatically promoted to confirmed and one shipment per unique delivery date is created

Important notes

  • Multiple rows with the same poNumber are grouped into one purchase order with multiple line items.
  • PO-level fields (supplierName, orderDate, requestedDeliveryDate, poNotes, syncPOreceiptToShopify) must be consistent across all rows for the same poNumber.
  • Suppliers must already exist in Synplex before importing — create them first if needed.
  • Location names must exactly match the Shopify location names in your store.
  • Product variants are matched by SKU — ensure all SKUs exist in your Shopify store before importing.
  • Duplicate PO numbers are rejected — each poNumber must not already exist in your shop.
Sync receipts to Shopify

Only set syncPOreceiptToShopify to true for purchase orders that were created in Synplex and do not yet exist in Shopify. Setting it to true for a PO already created in Shopify will create a duplicate inventory receipt.

A sample CSV template can be downloaded directly from the Import modal.


Supplier Auto-suggestion

When arriving at the PO creation page with pre-selected items (from the inventory table or supply plan), Synplex checks the primary supplier set on each item's inventory item record. If 70% or more of the unique SKUs share the same primary supplier, that supplier is automatically pre-selected. If SKUs have mixed or missing primary suppliers, a dismissible warning banner appears showing how many SKUs use a different primary supplier than the one selected, and how many have no primary supplier set. The PO can still be saved regardless — it is a warning, not a block.


Validation: MOQ, Pack Size, and Minimum Order Value

Two layers of constraints are checked simultaneously on every row and shown as inline validation messages. The PO cannot be saved if any row has a validation error.

Supplier-product level (set on the Supplier Product record for this specific variant):

ConstraintRuleError shown
MOQTotal qty ordered for this variant across all locations must meet or exceed the supplier-product MOQMOQ not met: X/Y
Pack sizeTotal qty for this variant must be a multiple of the pack sizePack size not met: must be multiple of N

Use the Scale to MOQ/pack bulk action button to auto-adjust selected rows to the nearest valid value.

Supplier level (set on the Supplier record itself):

ConstraintRuleError shown
Min order qty per SKUApplies to every SKU on the POSupplier MOQ not met: X/Y
Min order valueTotal PO value must meet or exceed this amountOrder value not met: $X/$Y

PO Currency

The PO currency is automatically set to the selected supplier's default currency when a supplier is chosen. If the supplier has no currency configured, it falls back to the shop's Shopify base currency. You can override it manually at any time before the payment status reaches invoiced — after which the currency field is locked.


Adding Products via the Resource Picker

On the creation form you can also add products using the Shopify resource picker (a product search modal). Synplex fetches inventory levels for the selected variants filtered to procurement strategy = purchase. If no inventory level exists for a variant, a blank row is added with location and quantity set to defaults. Duplicate variant + location combinations are deduplicated automatically. Maximum 250 variants per PO.


What Happens on Save

  • The PO is created with status = draft
  • All line items are created with status = draft and quantityPending = quantityOrdered
  • The user is navigated to the Purchase Orders list
  • No supply plan regeneration is triggered at draft creation — this happens when the PO is confirmed or completed