inFlow Sales Order Import From Customer Purchase Order PDFs

Wholesale customers email purchase orders as PDFs, and someone retypes each one into inFlow.

PDF, JPG, PNG, BMP, HEIC, TIFF

Submit your purchase orders

Any layout, any length
One row per line item
Excel, CSV or JSON
Plans from $49 a month

Overview

Wholesale customers email purchase orders as PDFs, and someone retypes each one into inFlow. Upload one here and get the customer PO number, order date and every line with item, quantity and price, laid out for the inFlow order import CSV.

Why wholesale orders still get retyped into inFlow

inFlow imports orders from a spreadsheet, but customers do not send spreadsheets. They send PDFs, and the rows have to be built first.

The PDF is not a spreadsheet

inFlow needs one row per order line. A customer PO arrives as a document, so someone copies every line across by hand.

Unmatched names create new products

inFlow matches lines on product name or SKU. A name that differs by one word creates a new product instead of hitting your stock.

Repeated order details on every row

Order number, customer and date must repeat on each line of an order, with those lines kept together. Easy to break while pasting.

Zero prices slip through

When a product has no price in inFlow and the file has none either, the line imports at $0 and nobody notices until invoicing.

From customer PO to inFlow import rows

Upload the purchase order your customer sent. The AI reads the header and every line on every page and returns rows you can map straight into the inFlow import file.

No template per customer

A one page reorder and a six page order come back in the same column layout, with nothing to set up per buyer.

Item codes kept apart

The buyer item number and the description land in separate columns, so one lookup maps them to your inFlow product names or SKUs.

Order details repeat per line

PO number, order date and customer sit beside every line, which is the layout inFlow expects for a multi-line order.

Spreadsheet or JSON

Excel and CSV suit the inFlow import screen. JSON suits a script working against the inFlow API.

Where inFlow sales order entry still costs you hours

inFlow is inventory and order management software for small wholesalers, distributors and product brands. Orders from your online store or sales channels can arrive through integrations. The orders that do not are the ones a business customer emails as a PDF purchase order. Somebody opens the attachment, finds the customer in inFlow, adds each product, types the quantities and prices and checks the details against the PDF. For a 30 line order that is a slow, error-prone job, and it repeats every day an order desk is open.

inFlow has an import for exactly this, but it starts from a spreadsheet. PurchaseOrders does the step in front of it: it turns the customer PDF into rows, so the import and a quick review are the only manual work left.

How the inFlow order import file is built

inFlow documents the import in its support center. You build a spreadsheet with one row per order line, save it as a CSV, and import it from the Import option in the main menu. The same file layout is used for sales orders and purchase orders.

Five columns are required. OrderNumber identifies the order. Customer (or Vendor for a purchase order) names the party, and inFlow creates the customer if it is new. OrderDate is the date the order was created. ProductName or ProductSKU says what is on the line, and ProductQuantity is required, so the import fails without it. Optional columns cover the unit price, a pricing scheme, invoiced and paid dates, the amount paid and serial numbers for serialized products.

For an order with several lines, the order-level details are repeated on each line, and the lines of one order must sit next to each other. Interrupting the sequence tells inFlow it is a different order. Save as CSV UTF-8 when the data has special characters such as accented names.

Matching products: the rule that causes most bad imports

inFlow uses the product name in the file to find the product on the order line. If no product with that name exists, the import creates a new product record. ProductSKU can stand in for ProductName when the SKU already exists in inFlow. This is the detail that decides whether an import is clean. A customer who prints a part number and a long description gives you text that is almost never your exact product name, and a near match becomes a duplicate product with no stock behind it.

The fix is a mapping step before the import. Extraction returns the buyer item number and the description in separate columns, and you run the item number through a short cross-reference sheet that returns your exact inFlow SKU. The first time a customer orders you build the sheet, and after that their orders map in a minute. Test with a two line order and confirm both lines show your existing products before you load a batch.

Prices, totals and order status

If a product already has a price in inFlow, the default pricing scheme applies. If it has none, the import assumes $0, so a price column from the customer PO is worth carrying through. The order total is calculated by inFlow from unit price times quantity plus taxes and shipping, and cannot be imported, so check the total on screen against the total printed on the customer document. A mismatch usually means one line was misread or a freight charge is missing.

Orders can be imported as Open, meaning unfulfilled and unpaid, or as Complete. Status also depends on the amount paid. A Complete import without an amount paid results in an order that is fulfilled but uninvoiced. For new customer POs, Open is almost always what you want, because the goods have not shipped yet.

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: the customer PO number, order date, ship-to and bill-to, and for each line the buyer item number, description, quantity, unit and price. It does not log into inFlow and does not create orders. You add your SKU and the exact customer name as it appears in inFlow, and paste the rows into the import file under the inFlow column names. Teams that clear a pile of attachments each morning use bulk purchase order upload to process up to 50 files at once.

Customer PO number versus your order number

OrderNumber has to be unique and is yours. The number your customer printed on their purchase order is theirs, and it is the one they quote on a late shipment or a disputed invoice. Keep it somewhere you can find it, such as the order notes or a custom field, so it survives into the invoice. Extraction gives the customer PO number in its own column, so carrying it across is a mapping choice, not something anyone retypes.

When the volume makes this worth paying for

The math is simple. If the order desk keys 12 wholesale POs a day at 15 lines each, that is 180 lines typed by hand, and every one is a chance to transpose a quantity or pick the wrong product. Extraction does not remove review, it turns typing into checking. The same approach works on other inventory systems. Teams on Zoho use the Zoho Inventory sales order import, distributors on Fishbowl use the Fishbowl sales order import, brands on Cin7 use the Cin7 sales order import, and businesses that keep orders in QuickBooks use the QuickBooks sales order import. The wider picture is on sales order entry automation.

Customer PO field to inFlow import column

What comes off the customer document and where it goes, using the column names in the inFlow support article on importing orders.

From the customer PO inFlow import column Note
Your order number OrderNumber Required and unique
Customer company name Customer Created if it does not exist yet
Order date OrderDate Required
Buyer item number mapped to your SKU ProductSKU Works when the SKU already exists in inFlow
Product name ProductName A name that does not match creates a new product
Quantity ProductQuantity Required, the import fails without it
Unit price ProductUnitPrice Otherwise the product pricing scheme applies, or $0
Customer PO number Order notes or a custom field Keep it for invoices and disputes
Serial numbers ItemSerials Separate multiple serials with a line break in the cell

How the workflow runs

Four steps from the customer attachment to an order in inFlow.

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 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 products

Add your SKU and the exact inFlow customer name, then export CSV using the inFlow column names.

Tip: Order details repeat on each line, so they fill down.

4

Import and check the total

Import from the main menu, open the order and compare the total with the customer document.

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

Why order desks use this in front of inFlow

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

inFlow sales order import questions, answered

inFlow imports orders from a CSV file, not from a PDF. You build a spreadsheet with one row per order line and import it from the main menu. PurchaseOrders reads the PDF and returns those rows, so you map the columns and import instead of typing each line.

Build a spreadsheet with one row per order line and the required columns OrderNumber, Customer, OrderDate, a product name or SKU, and ProductQuantity. Save it as a CSV, then use the Import option in the main menu. Repeat the order details on every line and keep one order together.

OrderNumber, the customer, OrderDate, ProductName or ProductSKU, and ProductQuantity. The import fails without a quantity. Unit price, pricing scheme, invoiced date, paid date, amount paid and serial numbers are optional.

inFlow matches order lines on the product name in the file. If a name does not match an existing product exactly, a new product record is created. Use the ProductSKU column when the SKU already exists, and map customer item numbers to your exact names first.

When a product has no price in inFlow and the file has no unit price, the import assumes $0. Carry the unit price from the customer purchase order into the file, or set the product pricing scheme in inFlow before you import.

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 inFlow 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 inFlow or create orders. You load the rows through the inFlow import screen or your own integration.