Epicor Sales Order Import with DMT Sales Order Combined from Customer Purchase Order PDFs

Epicor Kinetic loads sales orders in bulk through the DMT Sales Order Combined template or the REST API.

PDF, JPG, PNG, BMP, HEIC, TIFF

Submit your purchase orders

PDF, scan, or email attachment
Every order line captured
One row per line, grouped by PO
Plans from $49 a month

Overview

Epicor Kinetic loads sales orders in bulk through the DMT Sales Order Combined template or the REST API. Neither one reads the PDF your customer emailed. Upload that purchase order here and get the customer PO number, the dates and every line with part, quantity and price as rows your DMT file can take.

Why customer orders still get retyped into Epicor

DMT is quick once the file is right. Turning a customer PDF into that file is the slow part, and it lands on the order desk every morning.

DMT reads files, not documents

The Sales Order Combined template expects a CSV with Epicor column names. A purchase order printed by a buyer ERP has to become rows first, and today someone types them.

Grouping rules split orders

DMT starts a new sales order when the PONum and customer combination changes or the line number restarts. Get either wrong and one customer PO turns into several orders.

Price lists overwrite your price

Epicor applies its price list logic on import. Without the right columns, the price the customer printed is replaced and nobody notices until the invoice.

Buyer part numbers are not yours

Customers order by their own codes. Every line needs mapping to an Epicor PartNum, and a 60-line blanket release is 60 chances to key one wrong.

From customer PO to DMT sales order combined rows

Upload the purchase order your customer sent. The AI reads the header and every line and returns a spreadsheet with one row per line, header values repeated on each row, ready to map to the Sales Order Combined columns.

Reads any PO layout

No per-customer template. Digital PDFs, scans and photographed pages from any buyer system come back in the same column layout.

Every line, numbered

A 60-line order returns 60 rows in document order, so OrderDtl#OrderLine can run 1, 2, 3 without gaps and restart cleanly on the next PO.

PONum in its own column

The buyer PO number lands in a dedicated column, which is exactly the value DMT uses together with the customer to decide where one order ends.

The price the buyer printed

Unit price comes off the document for each line, so you can load it with the price lock column instead of letting a price list replace it.

How sales orders get into Epicor without typing

Epicor Kinetic gives an order desk two bulk routes. The first is the Data Management Tool (DMT), and for new orders the template most Epicor users reach for is Sales Order Combined, which carries header, line and release fields in one CSV. Column names follow the Epicor table and field, so header fields look like PONum or OrderHed#CurrencyCode and line fields look like OrderDtl#OrderLine, OrderDtl#DocUnitPrice or OrderDtl#LockPrice. The second route is the Kinetic REST API, which suits an integrator or an order portal writing orders directly. If you are still budgeting the system itself, our Epicor Kinetic pricing breakdown covers per-user cost and implementation.

Both routes assume the order already exists as clean data. Most customer purchase orders in the United States arrive as a PDF produced by the buyer ERP, a portal download or a scan. That document is the gap this page fills: it becomes rows you can paste straight into your DMT file.

The grouping rule that decides how many orders you get

The most common complaint about Sales Order Combined on the Epicor user forums is a file that creates one order per line. Community testing shows DMT starts a fresh sales order when the PONum and customer combination changes or when OrderDtl#OrderLine restarts. So every line of one customer PO carries the same PONum and customer, OrderLine counts 1, 2, 3, and the next PO starts again at 1. Set OrderNum to 0 and Epicor assigns its own order numbers. Because we return the customer PO number on every row and keep lines in document order, the grouping columns come out right without editing.

Keeping the customer price

Users on the Epicor forum report unit prices that do not load, or load and are then replaced. The documented fix has two parts: include OrderDtl#DocUnitPrice for the price, and when a customer price list would override it, add OrderDtl#LockPrice set to true. Adding OrderHed#CurrencyCode on the header avoids a currency surprise on accounts that buy in more than one currency. If you would rather Epicor price from its own lists, leave the price columns out and the extracted price stays in your spreadsheet as a check.

Dates and releases

Customer POs often carry one need-by date per line or several delivery dates for the same part. Forum reports show that loading several releases in one Combined file can stamp every release with the last date in the file, because of date prompts built into Order Entry. The workaround experienced users describe is to load headers and lines first, then add the extra releases in a second DMT pass. We return the requested date on each line, so both passes come from the same extracted file.

Map part numbers before the load

Customers order by their own codes, so keep a mapping sheet per account from buyer part number to your PartNum and apply it to the extracted rows before the DMT run. The extraction keeps the printed part number exactly as it appears next to the description, so an unmapped code shows up as an empty cell you fix in seconds instead of a DMT error on line 47.

When the order volume is high

If Monday starts with 30 customer POs in the shared inbox, run them through bulk purchase order upload, up to 50 files in one pass, and get one consistent file back for DMT. Long orders are covered by purchase order line item extraction, which returns every row rather than a summary. Teams writing orders through the Kinetic REST API pull the same data as JSON from the purchase order API.

Same workflow, other systems

If part of the business runs elsewhere, the pattern is the same with different field names. See Acumatica sales order import, NetSuite sales order import and Business Central sales order import. For the buying side of Epicor, where you issue the purchase order to a supplier, use Epicor purchase order import. Distributors on Prophet 21 rather than Kinetic load orders through SISM files instead of DMT, which Prophet 21 order entry automation walks through field by field.

Customer PO field to Epicor sales order combined column

What comes off the customer document and which DMT column it usually fills. Confirm exact column names against the template in your Kinetic version.

DMT column Level Where it comes from Notes
Company Header Your Epicor company ID. Fixed value
OrderNum Header Set to 0. Epicor assigns the number
CustNum or CustID Header The buying company, matched to your customer. Customer must exist
PONum Header The purchase order number the customer printed. Groups lines into one order
OrderHed#CurrencyCode Header The currency on the document. Avoids price surprises
OrderDtl#OrderLine Line Line sequence in document order. 1, 2, 3, restart per PO
PartNum Line The customer part number, mapped to yours. Part must exist or be allowed
OrderQty Line Ordered quantity on each line. One row per line
OrderDtl#DocUnitPrice Line The unit price the buyer printed. Needed for the price to load
OrderDtl#LockPrice Line Set to true when you keep the buyer price. Stops price list override
Need-by date Line or release The delivery date the buyer asked for. Extra releases in a second pass

How the import runs

Four steps from the customer attachment to sales orders in Epicor Kinetic.

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: Portal downloads and forwarded attachments work the same way.

2

Review and Map

Check the header and lines on screen, then map buyer part numbers to your PartNum and the customer name to its customer ID.

Tip: Keep the mapping sheet; the same account sends the same codes.

3

Build the DMT file

Download CSV, rename the columns to the Sales Order Combined names you use, and set OrderNum to 0.

Tip: Save the renamed header row as your template for every future batch.

4

Test one order, then load

Run a single two-line PO through DMT, open it in Order Entry, then load the full batch.

Tip: Check PONum, both lines and the unit price before the big run.

Why order desks use this in front of Epicor

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

Epicor sales order import questions, answered

Use the DMT Sales Order Combined template for bulk loads. Build a CSV with one row per order line, header fields such as Company, CustNum and PONum repeated on each row, line fields such as OrderDtl#OrderLine, PartNum and OrderQty, set OrderNum to 0, and run it through DMT. Integrators can use the Kinetic REST API instead.

Because the grouping columns change between rows. DMT starts a new order when the PONum and customer combination changes or when OrderDtl#OrderLine restarts. Keep PONum and the customer identical on every line of one PO and number the lines 1, 2, 3 without restarting.

It tells Epicor to generate the sales order number itself. Use 0 for new orders and let the PONum and customer columns decide which lines belong together. Put a real order number only when you are updating an order that already exists.

Usually the price column is missing or a price list replaces it. Include OrderDtl#DocUnitPrice with the price, and if the customer has a price list that overrides it, add OrderDtl#LockPrice set to true. Adding OrderHed#CurrencyCode on the header also helps on multi-currency accounts.

Not through DMT, which reads structured files. A customer purchase order that arrives as a PDF has to become rows first, typed by hand or extracted, before DMT or the REST API can create the sales order.

Load headers and lines first, then add the extra releases in a second DMT pass. Forum users report that loading several releases with different dates in one Combined file can give every release the last date in the file, and leaving the need-by and request date columns out of the first pass avoids it.

In the PONum field on the sales order header, shown as the customer PO on Order Entry. It is separate from the Epicor order number and lets your team find the order when the customer calls with only their own reference.

No. PurchaseOrders reads the customer purchase order and returns structured data as Excel, CSV or JSON. It does not install in Epicor and does not run DMT or create orders. You load the rows through DMT, the REST API or your own integration.