Dynamics 365 Supply Chain Management creates sales orders in bulk from the Sales order headers V2 and Sales order lines V2 entities, and both expect rows.
PDF, JPG, PNG, BMP, HEIC, TIFF
Submit your purchase orders
Drop documents here, or choose a file
Up to 50 files per batch
Uploading...
Dynamics 365 Supply Chain Management creates sales orders in bulk from the Sales order headers V2 and Sales order lines V2 entities, and both expect rows. Upload the purchase order a customer emailed and get the PO number, customer, ship-to and every line with part, quantity, unit and price, ready for Data management.
Dynamics 365 has a good bulk route for sales orders. It starts from a file, and most customers still send a PDF.
Headers and lines load through separate entities, and every line has to carry the exact sales order number of its header or the import fails.
Currency, terms of payment, delivery terms and the delivery address location are validated against setup, so a PO value with no matching code stops the row.
Customers order by their own part numbers. ITEMNUMBER has to be your released product, so each line needs a mapping first.
If nobody fills Customer requisition, the order desk cannot find the sales order when the buyer calls with only their own reference.
Upload the purchase order your customer sent. The AI reads the header and every line and returns a spreadsheet with one row per line and the header values repeated, ready to split into a Sales order headers V2 file and a Sales order lines V2 file.
No per-customer template. Digital PDFs, scans and photographed pages from any buyer system come back in the same column layout.
Lines return in document order with a sequence number, so header and line files stay in step and are easy to check against the PO.
The buyer PO number lands in a dedicated column that maps straight to CUSTOMERREQUISITIONNUMBER, so every order is searchable by the customer reference.
Quantity, unit and unit price come back side by side, so you can map EA, CS or BX to your unit symbols before the load.

Dynamics 365 Supply Chain Management and Dynamics 365 Finance create sales orders in bulk through data entities. Microsoft documents two of them for this job. Sales order headers V2 creates the order header with the customer, delivery and payment details, and Sales order lines V2 creates the lines with items, quantities and prices. You load them in the Data management workspace: create an import project, add both entities, attach an Excel or CSV source file for each, put the header entity first in the sequence and run the import. The same entities are exposed over OData as the SalesOrderHeadersV2 and SalesOrderLines collections, which is what an integration or a Power Automate flow calls.
Every one of those routes expects rows. None of them reads the PDF a customer attaches to an email. Customers on EDI or a portal can be connected by your partner; the ones who still email a purchase order end up with someone on the order desk keying lines into All sales orders. PurchaseOrders handles that front step. It reads the customer PO and gives you the rows, and Data management or your integration does the rest.
Microsoft marks four header fields as required. SALESORDERNUMBER is the primary key, ORDERINGCUSTOMERACCOUNTNUMBER is the customer who placed the order, INVOICECUSTOMERACCOUNTNUMBER is the account that gets the invoice (usually the same customer) and REQUESTEDSHIPPINGDATE is the date the customer wants the goods to ship. Optional fields that a customer PO often fills are CURRENCYCODE, PAYMENTTERMSNAME, DELIVERYTERMSCODE and REQUESTEDRECEIPTDATE. Each of those values has to exist in your setup first, so a PO that says Net 30 needs a matching terms of payment code.
The buyer purchase order number belongs in CUSTOMERREQUISITIONNUMBER, shown on the order as Customer requisition, and many companies also copy it into CUSTOMERSORDERREFERENCE, the Customer reference field. Fill it every time. When a buyer calls about an order, they quote their own PO number, not yours.
On the lines, Microsoft lists SALESORDERNUMBER (the link to the header), ITEMNUMBER, REQUESTEDSHIPPINGDATE and DELIVERYADDRESSLOCATIONID as required. Quantity goes in ORDEREDSALESQUANTITY, the unit in SALESUNITSYMBOL, and the price in SALESPRICE with LINEAMOUNT for the extended amount. The line key is INVENTORYLOTID, which needs the inventory lot number sequence set up; if you do not want to supply it, change the entity mapping to Auto-generated. Microsoft recommends a single thread for both entities, so large batches run one after the other rather than in parallel.
The export from PurchaseOrders is one row per line with the header values repeated. Keep one row per customer PO for the header file and every row for the lines file, give each PO the sales order number you will use in both files, and map the customer, the item and the unit. The customer usually resolves from the bill-to name and address on the PO; the delivery address location comes from the ship-to block, matched to an address already on the customer record. Build the mapping workbook once and reuse it for every batch. For the purchase side of the same company, where you load the POs you issue to suppliers, see purchase order import for D365 Finance and Operations, and for table level detail on that side, D365 purchase order tables.
Most rejected lines fail on the item. Buyers print their own part numbers and Dynamics 365 validates ITEMNUMBER against your released products. You can keep a mapping column in the workbook that turns each buyer part into your item number, or maintain external item descriptions for the customer so the cross reference lives in Dynamics 365 itself. Either way it is set up once per customer. The extracted data keeps the buyer part number and description next to each other, which makes the first mapping fast. After the run, open the import project, check the execution summary and the staging data for errors, correct the source rows and import again.
Distributors and manufacturers on Dynamics 365 Supply Chain Management whose larger customers still send purchase orders as PDF attachments: industrial and electrical supply houses, food and packaging suppliers, contract manufacturers and medical distributors. Typical volume is a few dozen to several hundred customer POs a week. Running a smaller Microsoft system? Business Central sales order import covers the same workflow with configuration packages. The general version of the workflow lives on the sales order entry automation page, and a Monday inbox of 40 POs goes through bulk purchase order upload in one pass.
PurchaseOrders does not connect to Dynamics 365, does not run Data management projects and does not call OData. It reads customer purchase orders and returns Excel, CSV or JSON. You load the rows through Data management, the Excel add-in, an integration your partner builds or a flow you already run. Your pricing, credit limits, reservations and release rules in Dynamics 365 stay exactly as they are.
What comes off the customer document and which data entity field it usually fills. Confirm against the entity version in your environment before the first load.
| Field | Entity | Where it comes from | Notes |
|---|---|---|---|
| SALESORDERNUMBER | Headers and lines | The sales order number you assign per customer PO. | Required on both, must match |
| ORDERINGCUSTOMERACCOUNTNUMBER | Headers | The buyer on the PO, matched to a customer account. | Required |
| INVOICECUSTOMERACCOUNTNUMBER | Headers | The bill-to on the PO, usually the same account. | Required |
| REQUESTEDSHIPPINGDATE | Headers and lines | The ship date or delivery date the buyer printed. | Required on both |
| CUSTOMERREQUISITIONNUMBER | Headers | The purchase order number the customer printed. | Shown as Customer requisition |
| CURRENCYCODE | Headers | The currency on the PO. | USD for most US customers |
| PAYMENTTERMSNAME | Headers | The payment terms on the PO, such as Net 30. | Must exist in terms of payment |
| ITEMNUMBER | Lines | Your item, from the buyer part number via a mapping or cross reference. | Required, validated |
| ORDEREDSALESQUANTITY | Lines | Quantity on each line. | Numeric |
| SALESUNITSYMBOL | Lines | The unit the buyer printed, mapped to your unit symbol. | EA, CS, BX and similar |
| SALESPRICE | Lines | The unit price on the PO. | Leave out to let D365 price it |
| DELIVERYADDRESSLOCATIONID | Lines | The ship-to block, matched to a customer address. | Required |
Four steps from the customer attachment to sales orders in Dynamics 365.
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.
Check the header and lines on screen, then map the buyer to a customer account, each part to your item and the ship-to to a delivery address.
Tip: Save the mapping per customer and reuse it on every later order.
One row per PO in the header file, every line in the lines file, the same sales order number in both.
Tip: Keep the header entity first in the import project sequence.
Run the import project in Data management, then read the execution summary and staging data for any rejected rows.
Tip: Test with one two-line PO before a full batch.
Open the Data management workspace, create an import project, add the Sales order headers V2 and Sales order lines V2 entities with an Excel or CSV file for each, keep headers first in the sequence and run the import. Lines always need a header that already exists.
Two entities. Sales order headers V2 creates the header with customer, delivery and payment details, and Sales order lines V2 creates the lines with items, quantities and prices. Over OData they appear as SalesOrderHeadersV2 and SalesOrderLines.
Microsoft lists SALESORDERNUMBER, ORDERINGCUSTOMERACCOUNTNUMBER, INVOICECUSTOMERACCOUNTNUMBER and REQUESTEDSHIPPINGDATE as required. Fields such as CURRENCYCODE, PAYMENTTERMSNAME and DELIVERYTERMSCODE are optional but must match codes that already exist in your setup.
Use the Sales order lines V2 entity after the headers exist. Each row needs SALESORDERNUMBER, ITEMNUMBER, REQUESTEDSHIPPINGDATE and DELIVERYADDRESSLOCATIONID, plus quantity, unit and price. INVENTORYLOTID needs a number sequence or an Auto-generated mapping.
In the Customer requisition field, which the header entity exposes as CUSTOMERREQUISITIONNUMBER. Many companies also copy it into Customer reference. Fill it on every import so the order desk can find the order by the buyer reference.
Yes, through the same entities, but Microsoft notes the header must still have an open order status. Once an order is delivered or invoiced, change it in the sales order form instead of through Data management.
Not through the data entities or OData, which expect rows or JSON. A customer PO that arrives as a PDF has to become structured data first, keyed by hand or extracted, before Dynamics 365 can create the sales order in bulk.
No. PurchaseOrders reads the customer purchase order and returns Excel, CSV or JSON. It does not connect to Dynamics 365 or run the import. You load the rows with Data management, the Excel add-in or an integration you already run.
The same workflow on Infor.
The buying side: POs you issue.
The same workflow on Business Central.
The same workflow on Oracle Fusion.
The same workflow on NetSuite.
The full order entry workflow.
Choose your plan