Importing & Exporting Purchase Orders
You can export purchase orders from Endless for reporting and review, and you can also import purchase orders in bulk with a CSV file.
Importing Purchase Orders
To import purchase orders, open the purchase orders list and use the import action to upload a CSV file.
How It Works
Purchase order import is an upsert workflow keyed on PO Number, and it groups rows with the same PO Number into a single purchase order with multiple line items.
- If the
PO Numberdoes not already exist, Endless creates a new purchase order. - If the
PO Numbermatches an active purchase order, Endless updates that purchase order. - If the
PO Numbermatches an archived purchase order, the import fails.
Newly created purchase orders start in Draft status and the Pre-Production milestone, regardless of any dates you set on that row.
When a row updates an existing purchase order, blank cells are treated as no change and will not replace existing values.
The entire file is validated before any purchase order is created or updated. If any row is invalid, the whole import fails and nothing is changed. After a successful import, Endless reports how many purchase orders were created and how many were updated.
Before You Begin
Use PO Number and Item SKU values consistently, and decide whether each row should create or update a purchase order. Because the whole file must be valid before anything imports, review every reported error before re-uploading rather than fixing them one at a time.
Columns
Required Columns
PO Number- Main identifier used to match an existing purchase order for updates. Required on the first row for each purchase order. Up to 50 characters, using only letters, numbers, underscores, hyphens, and periods.
Item Fields (Optional)
Item SKU- Must match an existing product SKU in your company. Leave blank for a header-only row that only sets purchase order fields. Up to 40 characters.Item Qty Ordered- Quantity ordered for that line item. Defaults to1whenItem SKUis present and this is left blank. Must be zero or greater.Item Unit Cost- Cost per unit for that line item. Must be zero or greater.Item Lead Time- Lead time in days for that line item. Must be zero or greater.
Purchase Order Details (Optional)
Supplier Name- Must exactly match the name of an active supplier in your company.Incoterms- Use an Incoterms abbreviation such asFOB,EXW, orDDP.Payment Terms- Free text, such asNet 30.Special Instructions- Free text notes for the purchase order.Financial Status- Options areunpaid,partially_paid,paid.Cost Allocation Status- Options areincomplete,complete.
Date Fields (Optional)
Issue DateConfirmed DateExpected DateExpected Complete DateShip Date- Can be set even when creating a new purchase order, which is useful for backfilling a historical purchase order that has already shipped. SettingShip Datedoes not change the purchase order's status or milestone.
Date fields accept YYYY-MM-DD (for example 2026-07-15), MM/DD/YYYY or M/D/YYYY (for example 7/15/2026), and written-out dates like July 15, 2026. Dates are read month first, so day-first formats such as 15/07/2026 are not supported and may be rejected or read as a different date.
Other exported columns, such as Status, Milestone, Line Count, Unit Count, totals, contact fields, and supplier contact details are not editable through import.
Updating Existing Purchase Orders
When a row updates an existing active purchase order, blank cells are ignored and do not clear existing values.
For line items, Endless matches imported rows to existing purchase order lines by Item SKU within the purchase order:
- If the SKU already exists on that purchase order, Endless updates the supported line fields:
Item Qty Ordered,Item Unit Cost, andItem Lead Time. - If the SKU is new to that purchase order, Endless adds a new line item.
- If an existing line item is not included in the CSV, it is left unchanged.
- If the same
Item SKUappears more than once for the samePO Numberin one file, the import fails.
For header fields, Endless uses the first non-blank value for that PO Number. If the same header field has conflicting non-blank values across rows for the same PO Number, the import fails.
You can create or update only header fields by importing a row with PO Number and the header fields you want to set, leaving Item SKU and the other item fields blank.
Import Rules
- The uploaded file must be a CSV file
- Rows where both
PO NumberandItem SKUare blank are skipped - Item rows with a blank
PO Numberare treated as part of the previous purchase order - Any row that includes item quantities, costs, or lead times must include
Item SKU - Existing archived purchase orders cannot be updated by import
- Unsupported columns are ignored and listed in the import result
CSV Examples
This is the smallest valid file:
PO Number,Item SKU,Item Qty Ordered
PO-1001,SKU-RED-S,10
This example creates one purchase order with two line items and sets several header fields:
PO Number,Supplier Name,Incoterms,Payment Terms,Expected Date,Financial Status,Item SKU,Item Qty Ordered,Item Unit Cost,Item Lead Time
PO-1001,Acme Manufacturing,FOB,Net 30,2026-07-15,unpaid,SKU-RED-S,10,12.50,14
,,,,,,SKU-BLUE-M,5,14.00,14
This example sets only header fields, with no line items:
PO Number,Supplier Name,Expected Date
PO-1002,Acme Manufacturing,2026-08-01
This example backfills a historical purchase order that has already shipped:
PO Number,Ship Date,Item SKU,Item Qty Ordered
PO-2001,6/1/2026,SKU-RED-S,25
PO-2001 is created with its Ship Date set, even though it is a new purchase order. Its status and milestone are still Draft and Pre-Production.
Troubleshooting
If a row created a new purchase order when you expected an update, the PO Number most likely did not exactly match an existing purchase order — check for typos, extra spaces, or a different format than what's in Endless.
If the entire import failed, remember that one invalid row fails the whole file — nothing is created or updated until every row is valid. The failure notification lists the reasons and the affected PO Number values, so check each reason against the columns above.
If a date was rejected or imported as an unexpected date, check that it is written month first — day-first formats such as 15/07/2026 are not supported.
If Ship Date does not seem to affect a purchase order's status, that is expected. Status and milestone are managed separately from the dates you import.
Recommended Workflow
The safest workflow is to export purchase orders from Endless, keep the rows you want to update, edit supported import columns, and import the file back into Endless. Starting from an export helps preserve valid PO Number and Item SKU values.
Before importing, remove or leave any export-only columns you do not intend to edit. Unsupported columns are ignored and listed in the import result.
Exporting Purchase Orders
Purchase orders export gives you purchase order data in CSV format. It is useful for reporting, reconciliation, operational review, and sharing purchase order details outside Endless.
Included Data
The default purchase order export is designed for export, edit, and reimport workflows. It includes purchase order header fields plus the supported item fields: Item SKU, Item Qty Ordered, Item Unit Cost, and Item Lead Time.
The first row for each purchase order includes purchase order-level data. Additional item rows for the same purchase order leave the purchase order header columns blank. If a purchase order has no active line items, it still appears in the export, with the item columns left blank.
The complete purchase order export is the verbose reporting version. It includes additional supplier details, contact details, derived totals and counts, audit person fields, and product reference fields that are not intended for reimport.