QuickBooks Online and Desktop both have sales orders, and neither one reads the purchase order your customer emailed as a PDF. Upload it here and get the PO number, ship-to and every line with quantity and price back as a CSV or Excel file your sales order importer can load.
Submit your purchase orders
Drop documents here, or click to file
Up to 50 files per batch
Uploading...
Buyers who will never send EDI still send purchase orders as PDFs. Someone reads each one and keys it into a sales order, line by line, customer by customer.
Retail chains, contractors and small shops all format their POs differently. Template-based capture breaks on the next new customer.
Customers order by their own codes. Matching each one to your QuickBooks item by hand is where most keying errors start.
A 60-line restocking order takes twenty minutes to key and one wrong quantity means a short shipment and a credit memo.
SaasAnt, Zed Axis and similar tools load files well. None of them reads the PDF, so the spreadsheet still gets typed by hand.
PurchaseOrders is a document data capture layer. It reads the customer purchase order and returns structured rows. It does not connect to QuickBooks, does not hold your login and does not create sales orders or invoices. Your importer does the load, so nothing posts without you.
PO number, customer, bill-to, ship-to, order date, requested ship date and terms each come back separately, ready to map.
Customer part number, description, quantity, unit of measure, unit price and extended amount for every line on the order.
The full line table shows on screen before download, so a case price that should be a unit price gets caught before it reaches an invoice.
CSV or Excel goes straight into your importer. JSON and the API suit a team that already scripts its QuickBooks loads.
QuickBooks Desktop has had sales orders for years, but only in Premier and Enterprise. You turn them on under Edit, Preferences, Sales and Customers, on the Company Preferences tab. On Enterprise, the Sales Order Fulfillment Worksheet and Pick, Pack and Ship are limited to the Platinum and Diamond subscriptions, which is why most distributors who run on sales orders are on one of those two tiers.
QuickBooks Online is the newer story. Intuit now documents native sales orders on QuickBooks Online Plus, QuickBooks Online Advanced and Intuit Enterprise Suite, and on Simple Start or Essentials with the paid Inventory add-on. A sales order is converted to an invoice from the Action menu, its status moves to Invoiced and then to Paid, and in 2026 Intuit added custom fields, attachments, bundles and a one-step conversion from a sales order to a purchase order. A lot of what ranks for this topic still says QuickBooks Online has no sales orders at all. That was true for a long time and it is not true now.
Neither version reads a customer purchase order for you. The built-in QuickBooks Online importer handles lists such as customers, vendors and products, plus invoices, and sales orders are not on that list. QuickBooks Desktop imports lists from Excel and transactions through IIF, and bulk sales order loads in practice go through a dedicated importer such as SaasAnt Transactions or Zed Axis. Those tools are good at what they do. They load a spreadsheet. They do not read the PDF your customer attached to the email, which is where the typing actually happens.
That PDF is the step PurchaseOrders covers. Upload the customer purchase order and you get the PO number, the customer and ship-to address, the order and requested dates, terms and every line with its item code, description, quantity, unit of measure and unit price, as a CSV file or Excel. For long orders the value is in line item extraction: a 60-line restocking order from a retail customer comes back as 60 rows, not a summary.
The customer name has to match exactly. Importers match the customer against the full name as it appears in QuickBooks, including the Customer:Job form on Desktop. A PO signed by Acme Supply Co. will not match a QuickBooks customer called Acme Supply Company. Keep a small lookup of how each customer names itself on its paperwork and how you named it in QuickBooks, and apply it before you load.
The customer item code is not your item. Your customer orders by its own part number. QuickBooks knows your item name or SKU. A file keyed straight from the customer document either fails on every line or, if your importer auto-creates missing products, quietly adds dozens of duplicate items. Turn auto-create off and map customer part numbers to your items with a cross-reference column. Because the extracted file keeps the customer code and the description in separate columns, that lookup is one formula.
The PO number field is short. In the QuickBooks Desktop data format the PO number on a sales order holds 25 characters. Some large buyers issue longer references with a prefix, a release number and a line suffix, and those get cut or rejected. Decide the rule once, for example keep the last 25 characters or move the full reference into the memo, and apply it every time.
A sales order import file is flat: one row per line. The importer decides which rows belong together by the sales order number. SaasAnt states it directly: to group lines, the same sales order number must appear on every line. If you use the customer PO number as the grouping key, a customer who sends two POs with the same number (a revision, or a reorder) will merge into one order. Adding a date or a counter to the key avoids it.
A US wholesale distributor, manufacturer or food supplier on QuickBooks Desktop Enterprise or QuickBooks Online Plus or Advanced, receiving purchase orders from customers as PDF attachments and keying them in as sales orders. Usually a customer service rep or an office manager, often ten to fifty orders a day, many from buyers who will never send EDI. If that is you, sales order entry automation explains the wider workflow, and purchase order extraction for wholesale distribution covers the industry side. When orders pile up after a weekend, bulk purchase order upload clears the queue in one pass.
If you receive thousands of customer orders a month and want them to post into an ERP without a person reviewing a file, that is an order automation platform, not a capture tool. The two established names are compared honestly on our Esker alternative and Conexiom alternative pages. Both are quote-only and implementation-led. And if the purchase orders you need to load are the ones you send to your own suppliers rather than the ones you receive, the QuickBooks purchase order import page covers that direction, including the IIF route on Desktop.
Only the importer routes load a whole batch, and none of them reads a PDF on its own.
| Route | What creates the sales order | Best fit |
|---|---|---|
| Manual entry | Staff read the PDF and key each line | A few orders a week |
| Order management or B2B portal app | Orders placed in the app sync to QuickBooks | Customers willing to order through your portal |
| Spreadsheet importer | A file of orders loaded by SaasAnt, Zed Axis or similar | Orders already in a spreadsheet |
| PurchaseOrders plus your importer | Rows extracted from the customer PDF, loaded by you | Customers who email PDF purchase orders |
Extraction removes the typing. The import, the fulfillment and the invoice stay in QuickBooks.
Drag in the PDF or scan exactly as it arrived. There is no template to build for each customer.
Tip: A morning of orders can go in together.
Confirm quantities and prices, then apply your customer part number to item lookup and your customer name lookup.
Tip: Turn off auto-create in your importer so a missed mapping fails loudly.
Download CSV or Excel and load it with your sales order importer, grouping lines by one sales order number per order.
Tip: Load one order first and open it in QuickBooks before running the batch.
Not with the built-in importer. QuickBooks Online imports lists such as customers, vendors and products, plus invoices, but sales orders are not an import option. Native sales orders exist on Plus, Advanced and Intuit Enterprise Suite, and on Simple Start or Essentials with the Inventory add-on. Bulk loads go through a third-party app, so check whether that app creates a true sales order or an estimate or invoice instead.
Yes, through an importer. Sales orders exist in QuickBooks Desktop Premier and Enterprise. The native Excel import covers lists, so bulk sales order loads usually run through a tool such as SaasAnt Transactions or Zed Axis, which accept Excel or CSV and group rows into orders by a shared sales order number.
Build one row per order line with the customer name exactly as it appears in QuickBooks, a sales order number repeated on every line of the same order, your QuickBooks item, quantity and rate, plus the customer PO number. Load it with your importer and map each column once. Test a single order before loading a batch.
No. QuickBooks document capture is aimed at receipts and bills you pay, not at purchase orders customers send you. Extract the PDF to a spreadsheet first, then import that file as sales orders. PurchaseOrders returns the header and every line as CSV or Excel in one pass.
QuickBooks Desktop Premier and Enterprise, and QuickBooks Online Plus, Advanced and Intuit Enterprise Suite. Simple Start and Essentials get sales orders only with the paid Inventory add-on. On Desktop Enterprise, the Sales Order Fulfillment Worksheet and Pick, Pack and Ship are limited to the Platinum and Diamond subscriptions.
In the PO number field on the sales order, which carries through to the invoice so the customer can match your bill to their order. In the QuickBooks Desktop data format that field holds 25 characters, so decide in advance how you will shorten longer customer references.
Because the file used the customer part numbers, which do not exist in your item list, and the importer was set to create missing products. Turn auto-create off and map each customer part number to your own item with a lookup column before you load.
Open Sales Orders, find the order and choose Convert to invoice from the Action menu. The sales order status changes to Invoiced, and to Paid once the customer pays. On Desktop, open the sales order and use Create Invoice, which also lets you invoice a partial shipment.
No. PurchaseOrders reads customer purchase orders and returns the data as CSV, Excel, JSON or API output. It does not hold your QuickBooks login and does not create sales orders or invoices. You load the file with your importer, so the posting stays under your control.
The full order entry workflow.
How sales order OCR tools compare.
Capture built for distributors.
The purchasing side: POs you send.
Every line on long orders.
Clear a backlog in one pass.
See the CSV output shape.
When you need full order automation.