The purchase order import file
- Reference
- Inbound
- For: Admin, Warehouse Manager, Account Manager
- Checked on 27 October 2026
The columns of the CSV file that imports Purchase Orders, what each one takes, and what each reason for a rejected row means.
In short
This lists the columns of a Purchase Order import file and the reasons a row is rejected. Use it when you build a file from a client's spreadsheet, or fix the rows an import sent back.
The file
- A CSV file, with commas or semicolons between values.
- The first row names the columns, in any order and any capitals. Columns it doesn't know are ignored.
- Each other row is one expected line. Rows with the same
purchase_order_numberandclient_codemake one order. - The order's supplier, dates and notes come from its first row. Later rows can leave them blank.
- At most 2000 rows in one file. Split a longer file into several.
- Orders are imported as Drafts. An order with any rejected row isn't imported at all.
Columns
| Column | Needed | What it takes |
|---|---|---|
purchase_order_number |
Yes | The client's own number for the order, such as HB-PO-0142 |
client_code |
Yes | The client's code, such as HEB |
supplier_name |
Yes | Who the client ordered from |
sku |
Yes | The client's SKU, such as HB-LAV-BALM-50 |
expected_quantity |
Yes | A whole number of at least 1 |
supplier_reference |
No | The supplier's own order reference |
ordered_at |
No | The date the client placed the order, written YYYY-MM-DD, such as 2026-01-14 |
expected_delivery_date |
No | Written YYYY-MM-DD |
notes |
No | Notes on the order |
unit_cost |
No | Zero or more, with at most four decimal places, such as 2.85 |
line_notes |
No | Notes on the line, at most 1000 characters |
Hebden Botanicals' order HB-PO-0142 with two lines is two rows. Both give HB-PO-0142 and HEB, with HB-LAV-BALM-50 on one and HB-SALT-SCRB-200 on the other. Only the first needs the supplier and dates.
Why a row is rejected
The rejected rows download as purchase-order-import-rejections.csv, with the columns row, purchase_order_number, reason and message. Rows are numbered as a spreadsheet numbers them, with the header as row 1.
| Reason | What to fix |
|---|---|
| Missing value | Fill in the required value the row left blank. |
| Invalid value | Write the date as YYYY-MM-DD, or shorten the text, as the message says. |
| Unknown client | Use a client code that exactly one client has. |
| Client account refuses orders | The client is on hold, closed or past its last trading date. Ask its Account Manager. |
| Unknown product | Add the product to the client first, or correct the SKU. |
| Invalid quantity | Give a whole number of at least 1. |
| Duplicate purchase order | The client already has an order with that number. Use a new number. |
| Product repeated on the order | Put the product's whole quantity on one row. |
| Conflicting order details | Make the order's supplier, dates and notes match its first row, or leave them blank. |
| Order not imported | Another row of the same order was rejected. Fix that row and import the order again. |
Still stuck? Email [email protected]