Cin7 Sales Order Import for Cin7 Core and Cin7 Omni From Customer Purchase Order PDFs

Wholesale customers still email purchase orders as PDFs, and someone keys each one into Cin7.

PDF, JPG, PNG, BMP, HEIC, TIFF

Submit your purchase orders

Any layout, any length
Buyer item number on every line
Excel, CSV or JSON
Plans from $49 a month

Overview

Wholesale customers still email purchase orders as PDFs, and someone keys each one into Cin7. Upload one here and get the customer PO number, ship-to and every line with item number, quantity and price, ready for the Cin7 Core CSV import or the Omni spreadsheet.

Why wholesale orders still get keyed into Cin7

Channel orders sync on their own. The PDF orders from retail and wholesale buyers are still typed in by hand, one line at a time.

Every buyer sends a different PO

Department stores, boutique groups and distributors each print their own layout, often with sizes and colors spread across a grid.

The CSV template is unforgiving

Cin7 Core groups lines by customer name and invoice number and skips any line whose total, SKU or address does not validate.

Their item numbers are not your SKUs

Buyers order with their own codes. IDR expects your SKU and product name in separate columns, so many POs still need hand matching.

Buying season means a backlog

Forty prebook orders in one week turns the order desk into a typing pool, and one wrong quantity ships the wrong size run.

From customer PO to Cin7 sales order rows

Upload the purchase order your customer sent. The AI reads the header and every line on every page and returns rows you can paste into the Cin7 import.

No template per customer

A one page reorder and an eight page prebook come back in the same column layout, with no setup per buyer.

Buyer item number kept

Their item number and the description land in separate columns, so one cross-reference sheet maps them to your SKUs.

PO number on every row

The customer PO number repeats beside each line, ready for Customer PO No in Omni or your grouping key in Core.

Spreadsheet or JSON

Excel and CSV suit the Core and Omni imports. JSON suits a script that posts sales through the Cin7 API.

Order desk with printed customer purchase orders ready to enter as sales orders

Where Cin7 sales order entry still costs you hours

Cin7 is built for product brands and wholesalers that sell through several channels at once. Shopify, Amazon and B2B portal orders flow in on their own through integrations. The orders that do not are the ones a buyer at a regional chain, a boutique group or a distributor emails as a PDF purchase order. Somebody opens the attachment, finds the customer in Cin7, adds each SKU, types the quantities and prices, and checks the ship-to. For a 40 line wholesale order with sizes and colors that is a long, error-prone job, and it repeats every morning during the buying season.

Cin7 gives you three ways in for those orders. Cin7 Core has a CSV import for sale tasks and an AI add-on called Intelligent Document Recognition. Cin7 Omni has a spreadsheet import with column mapping. PurchaseOrders does the reading step in front of any of them: it turns the customer PDF into rows, so the import or the review is the only manual part left.

Importing sale tasks via CSV in Cin7 Core

In Cin7 Core the bulk route is the sale tasks import. You open Sales, then the Sales screen, click Import, choose the Sale tasks tab and download the CSV template. Cin7 is strict about that template. The header row must stay exactly as it is, all columns must be present in the template order, and the user needs the Sales: Purchase/Sale CSV Import permission. One file can hold up to 100 sale tasks.

The file is not one row per order. Each line has a RecordType in the first column, and lines are grouped into one sale by two mandatory fields: CustomerName in the second column and InvoiceNumber in the third. Every sale needs at least two records, the Invoice record that carries the header, both addresses, terms, location and price tier, plus at least one invoice line with a stock product. Imported sales arrive as authorized sale orders. Cin7 Core cannot import them as drafts, and the import creates new sales only, so you cannot export an order, edit it and re-import it to change it.

The validations are where hand-built files fail. Product must be the SKU of a non-deprecated stock product. Quantity must be positive, with up to 4 decimals. Price rounds to 7 decimals and discount to 2, from 0 to 100. The line Total must equal price, less discount, times quantity, rounded to cents. The Invoice record needs shipping and billing address line 1, city, province, postcode and a valid country, the tax rule must be an active one, and the invoice date must be in the past. Invalid lines are skipped, and Cin7 offers a download of the invalid lines with the error beside each one.

Intelligent Document Recognition and when it is enough

Cin7 Core also sells Intelligent Document Recognition (IDR), an add-on that reads received purchase orders and turns them into sales. You go to Sales, Import, choose IDR and upload PDF, JPG, BMP or PNG files of up to 5 MB each. After recognition you check the AI mapping, approve, and match each order line to a product in your inventory from a dropdown. Cin7 says IDR learns from each purchase order received from the same sender, and it can be trialed for 30 days.

The help article is clear about what IDR expects. Only one document per file. A customer is required. SKU and product name are required fields and must sit in separate columns. That last rule is where many real customer POs fall short, because a buyer prints their own item number and a description in one cell, not your SKU. If your customers send tidy one-order PDFs with your SKUs on them, IDR may be all you need. If they send multi-order files, their own part numbers, or a backlog of forty attachments at once, extracting the rows first and loading them in one CSV is faster.

Importing sales orders into Cin7 Omni

Cin7 Omni imports sales orders from a spreadsheet, not from a PDF. You go to Sales, Sales Orders, Actions, Import Sales Orders, upload the CSV or paste the data, map the columns, run Test and then Import New Sales Order. The rules matter. Every order needs a unique Order Ref that no other transaction uses, not even a purchase order. Item Code must match an existing product. Company, First Name or Last Name must match a CRM contact, or you choose to create one. Each spreadsheet must stay under 1,000 sales orders and 10,000 rows, with no order over 500 line items.

The customer purchase order number has its own field, Customer PO No, so put the buyer number there and keep your own Order Ref separate. Products with size grids go in Item Option 3 in a quantity x size format, and options, alternative units and BOM components each have their own row conventions. Omni also handles EDI 850 orders from trading partners through its EDI connections, so this workflow is for the PDF and email orders that do not come through EDI.

What PurchaseOrders does in the workflow

PurchaseOrders is the reading step. It takes the customer purchase order, any layout and any length, and returns the header and every line as Excel, CSV or JSON: customer PO number, order date, ship-by date, ship-to and bill-to, and for each line the buyer item number, description, quantity, unit and price. It does not log into Cin7 and does not post orders. You add your SKU and customer name, which is usually a lookup against a short cross-reference sheet, and paste the rows into the Core sale tasks template or the Omni import. Teams that clear a pile of attachments each morning use bulk purchase order upload to process up to 50 files at once.

The same approach works on other inventory systems. Wholesalers on Zoho use the Zoho Inventory sales order import, distributors running Fishbowl with QuickBooks use the Fishbowl sales order import, and teams that keep orders in QuickBooks itself use the QuickBooks sales order import. The wider picture, including how to measure time saved per order, is on sales order entry automation.

Customer PO field to Cin7 import field

What comes off the customer document and where it goes, using the field names in the Cin7 Omni sales order template and the Cin7 Core sale tasks rules.

From the customer PO Cin7 Omni import field Note
Customer PO number Customer PO No Keep your own Order Ref unique and separate
Buyer company name Company, matched to a CRM contact CustomerName on the Core Invoice record
Order date Created Date Core needs an invoice date in the past
Ship-by or delivery date Delivery Date (ETD) Header field
Ship-to block Delivery Address 1 and 2, City, State, Postal Code, Country Core requires shipping address fields on the Invoice record
Bill-to block Billing Address 1 and 2, City, State, Postal Code, Country Core requires billing address fields too
Payment terms Payment Terms Core Terms must name an active payment term
Buyer item number Mapped to Item Code Must match an existing product SKU
Description Item Name Optional when Item Code is present
Quantity Item Qty Required; Core allows up to 4 decimals
Unit price Item Price Overrides the default price
Freight charge Freight Description and Freight Amount Core uses an additional charge line

How the workflow runs

Four steps from the customer attachment to a sale in Cin7.

1

Upload the customer PO

Drop in the PDF, the scan or the email attachment. Up to 50 files per bulk upload, with no per-customer setup.

Tip: Multi-page and multi-size orders work the same way.

2

Review the lines

Check the header and every line on screen, including the buyer item number, quantity and price.

Tip: Sort by item number to spot codes missing from your cross-reference.

3

Map to your SKUs

Add your SKU and the Cin7 customer name, then export CSV in the column order of the Core template or the Omni import.

Tip: Most header values repeat and fill down.

4

Test, then import

In Omni run Test before Import New Sales Order. In Core, download the invalid lines file if anything is skipped and re-upload the fixes.

Tip: Start with one order per customer the first week.

Why order desks use this in front of Cin7

1
Row per line item
3
Export formats, Excel, CSV and JSON
50
POs per bulk upload

Security and privacy

  • Bank-grade TLS encryption in transit
  • Your PO data is never sold or shared
  • US-based cloud infrastructure

Cin7 sales order import questions, answered

Cin7 Core can, through its Intelligent Document Recognition add-on, which reads PDF, JPG, BMP or PNG purchase orders of up to 5 MB and creates a sale for review. It needs one document per file, a customer, and SKU and product name in separate columns. Cin7 Omni imports sales orders from a spreadsheet, not a PDF.

Go to Sales, open the Sales screen, click Import, choose the Sale tasks tab and download the CSV template. Each line has a RecordType, and lines are grouped by CustomerName and InvoiceNumber. A file holds up to 100 sale tasks, and imported sales arrive as authorized sale orders, never drafts.

Go to Sales, Sales Orders, Actions, Import Sales Orders. Upload the CSV or paste the data, map the columns to Cin7 fields, run Test, then Import New Sales Order. Each order needs a unique Order Ref, existing product codes and a customer that matches a CRM contact.

Each spreadsheet must have fewer than 1,000 sales orders and fewer than 10,000 rows, and no single sales order can have more than 500 line items. Cin7 recommends smaller batches for complex orders. Larger imports are split across several files.

The usual reasons are a Product that is not the SKU of an active stock product, a line Total that does not equal price less discount times quantity, missing shipping or billing address fields on the Invoice record, an inactive tax rule, or an invoice date in the future. Download the invalid lines to see each error.

Yes. Cin7 lists Intelligent Document Recognition as an add-on on its pricing page, and the help says it must be included in or added to your subscription. It is one of the Core modules you can trial free for 30 days. Cin7 does not publish the add-on price.

Yes. It reads whatever the buyer printed and puts their item number and description in separate columns on every line. You map those to your Cin7 SKUs once with a cross-reference sheet, then the same customer orders map in seconds.

No. PurchaseOrders reads the customer purchase order and returns Excel, CSV or JSON. It does not connect to Cin7 or create sales. You or your integration load the rows through the Core sale tasks import, the Omni sales order import or the Cin7 API.