Skip to main content

How do I turn a customer’s purchase order into a Shopify draft order?

Shopify has no built-in import for a purchase order your customer sends you: you either retype every line into Admin → Orders → Drafts, or use an app that reads the file and creates the draft for you. If you use an app, the part that matters is not the reading, it is what happens to the lines it is not sure about. NeatPO reads the file, matches each line to your catalog, stops on anything uncertain, and creates exactly one draft order only after you approve it.

No install needed for the sample. Plans start at $149/month, billed by Shopify, with a 7-day trial.

Do it now

  1. Upload the purchase order (CSV, XLSX or a PDF with selectable text) in NeatPO’s Inbox, or forward the email to your store’s private NeatPO address.
  2. Review each line beside the original: confirm the variant, the quantity in units you sell and the price source. Anything uncertain is listed as an issue.
  3. Approve, then click Create draft order. The draft opens in Shopify with the PO number and source file in its note.

Doing it by hand in Shopify

In the Shopify admin, open Orders → Drafts → Create order, pick the customer, then search for each product and type its quantity. For a 40-line order that is 40 searches, and the errors it produces are quiet ones: the 1 litre instead of the 500 ml variant, 2 entered where the order said 2 cases of 12, last season’s price copied from an old email.

Shopify’s CSV import does not help here. It imports products, customers and inventory, not a buyer’s order. Bulk order importers exist, but they expect your column layout, and your customers do not use your column layout.

Why the review step is the product

Most purchase-order tools advertise touchless entry: the file arrives, a model reads it, a draft appears. That works until the model maps “Shampoo 1L” to the 500 ml variant because it was the closer string, and nobody looks because nothing asked them to.

NeatPO treats every guess as a question. An exact SKU match or an alias you confirmed earlier can select a variant; everything else is offered as a suggestion with its reason. A quantity in cases waits for a conversion rule. A catalog price that disagrees with the PO price is shown side by side. A number like 1.250 that could mean one and a quarter or one thousand two hundred and fifty becomes an issue, not an assumption.

What gets created, and what never does

Exactly one Shopify draft order per approved purchase order. Shopify’s draftOrderCreate call has no idempotency key, so a network timeout could otherwise produce two drafts; NeatPO records every attempt in its own ledger and, when the outcome is unknown, reads Shopify back before deciding anything.

It never completes the order, charges a card, sends an invoice, fulfils or emails your customer. Those stay in Shopify, with you.

It gets faster with the same customer

The first order from a salon chain needs the most review: their product codes, their packaging words, their agreed prices. Each of those can be saved as a rule for your store: an alias, a packaging conversion, an agreed price. Rules apply to future documents only and are never created behind your back.

The honest limits

  • Scanned PDFs and photos of paper orders are not read on the current deployment: no OCR or extraction model is configured, so such a file is reported as unreadable rather than guessed at.
  • Up to 20 MB, 30 PDF pages and 300 product lines per file.
  • It does not connect to ERPs, EDI or supplier portals, and it does not import a Shopify product CSV — that is a catalog, not an order.
  • The App Store listing is in review; until it is live, installation is a guided pilot.

Checked against the product on October 7, 2026.