Sage Intacct loads sales orders from its Order Entry CSV template or through the API.
PDF, JPG, PNG, BMP, HEIC, TIFF
Submit your purchase orders
Drop documents here, or choose a file
Up to 50 files per batch
Uploading...
Sage Intacct loads sales orders from its Order Entry CSV template or through the API. It does not read the PDF your customer emailed. Upload that purchase order here and get the customer PO number, the ship-to and every line with item, quantity, unit and price, laid out the way the template expects.
Intacct is strict about the file and silent about the document. The hours go into turning each customer PDF into rows that pass the import.
Sage Intacct AP Automation creates draft bills from vendor bill documents you email or upload. A purchase order your customer sends you is on the sell side, and nothing in Intacct reads it.
Header titles must match exactly, IDs are case sensitive, a stray leading or trailing space fails the row, and a comma inside a field needs double quotes.
CUSTOMER_ID and ITEMID have to match records in Intacct, and inventory items also need a WAREHOUSEID. A buyer part number is not your item ID.
PRICE is optional in the template and defaults to 0. Miss it on one line and the order imports cleanly with a free item on it.
Upload the purchase order your customer sent. The AI reads the header and every line and returns structured data you can paste into the Order Entry transactions template, so creating the sales order becomes a mapping step instead of a typing job.
No per-customer template. Works on digital PDFs, scans and photographed pages from any buyer system.
A 60-line replenishment order comes back as 60 rows with part number, description, quantity, unit of measure and unit price.
The buyer PO number sits in its own column, ready for CUSTOMERPONUMBER, so it never collides with your own DOCUMENTNO sequence.
Order date, need-by and ship-by dates come off the document, so DATE, NEEDBYDATE and SHIPBYDATE are filled from the source, not guessed.
Sage Intacct gives you two ways to create sales orders without keying them. The first is the CSV import for Order Entry transactions. You download the template from Order Entry, All, Transactions (pick the transaction type, then Import and Download template), or from Company, Setup, Configuration, Import data. Sage customizes that template to your company, so your dimensions and custom fields are already in it. You upload the finished file through the same Import data page, and Sage recommends choosing Process offline and giving an email address, so a large file runs in the background and reports back.
The second is the API. The long-standing XML Web Services function is create_sotransaction, which needs a transaction type, a date, a customer ID and at least one line. Using it takes a Web Services developer license with a sender ID, and your administrator has to enable the Web Services subscription and authorize that sender ID. That is fine for a system integrator and heavy for an order desk.
Intacct also has a newer import service under Company, Setup, Import data, with XLS and XLSX support and AI-assisted field mapping. When we checked its list of supported objects, Order Entry transactions were not on it, so customer orders still go through the classic CSV template. Both routes assume the order already exists as clean data. Most customer POs in the United States arrive as a PDF from someone else's ERP, a portal download or a scan. That document is the gap this page fills.
TRANSACTIONTYPE is the name of an Order Entry transaction definition in your company, usually Sales Order, and it must match exactly. DATE, CUSTOMER_ID and DATEDUE are required. DOCUMENTNO is only required when the transaction definition has no automatic numbering, which is rare for sales orders. STATE takes Draft or Post and defaults to Draft. Terms, ship-to and bill-to contacts, currency and the three order dates (NEEDBYDATE, SHIPBYDATE, CANCELAFTERDATE) are optional, and each one you can fill from the customer document is one less thing a rep checks later.
Intacct has a dedicated field for it: CUSTOMERPONUMBER, up to 120 characters, described in the API as the customer's purchase order number. It is separate from REFERENCENO and from your own document number. Putting the buyer PO in the right column is what lets someone find the order when the customer calls, and it keeps the number on the documents that flow from the sales order.
Each line needs LINE, ITEMID, QUANTITY and UNIT, where unit defaults to Count. WAREHOUSEID becomes required for inventory and stockable kit items. The item ID must already exist, and customers order by their own part numbers, so keep a mapping sheet per account from buyer code to your item ID and apply it to the extracted rows. The extraction keeps the part number exactly as printed next to the description, so an unmapped code shows up as a blank cell you can fix, not as a failed row. Watch PRICE as well. It defaults to 0, so a line without it loads at zero rather than failing.
Leave STATE at Draft for the first run of any new customer. Rows that start with a hash sign are ignored, which makes it easy to park a line you are unsure of. Rows that fail come back as a CSV with an error code on each one. Sage also notes that when more than 500 transactions fail to import, the batch frequency on the transaction definition is the first thing to check, and suggests setting summary frequency to each document for large loads. Since Sage's help does not spell out how header values should sit across the rows of one multi-line order, import a single two-line order first and look at the result before sending a batch.
If Monday morning 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. Long orders are covered by purchase order line item extraction, which returns every row rather than a summary. Teams that post orders from their own integration pull the same data as JSON from the purchase order API.
If part of the business runs elsewhere, the pattern is the same with different field names. See NetSuite sales order import, Business Central sales order import and Odoo sales order import. For the buying side of Intacct, where you issue the purchase order to a vendor, use purchase order to Sage Intacct, and if you are weighing a purchasing app on top of Intacct, we priced the options in purchase order software for Sage Intacct. Budgeting Intacct itself? See Sage Intacct pricing for the subscription, user types and implementation ratio.
What comes off the customer document and where it goes in the CSV import for Order Entry transactions. Column names are the ones in the Sage template.
| Intacct column | Required | Where it comes from | Notes |
|---|---|---|---|
| TRANSACTIONTYPE | Yes | Set by you, usually Sales Order. | Must match a transaction definition |
| DATE | Yes | The PO date on the document. | Short date, for example 3/15/2026 |
| CUSTOMER_ID | Yes | The buying company, matched to your customer record. | Case sensitive, must exist |
| DATEDUE | Yes | From the payment terms on the PO. | Or your agreed terms |
| CUSTOMERPONUMBER | No | The purchase order number the customer printed. | Up to 120 characters |
| NEEDBYDATE | No | The delivery date the buyer asked for. | Drives fulfillment follow-up |
| LINE | Yes | The line sequence on the PO. | 1, 2, 3 within the order |
| ITEMID | Yes | The customer part number, mapped to your item. | Item must exist |
| QUANTITY | Yes | Ordered quantity on each line. | No negatives on inventory items |
| UNIT | Yes | Unit of measure on the line. | Defaults to Count |
| PRICE | No | The unit price the buyer printed. | Defaults to 0 if blank |
| WAREHOUSEID | For stock items | Your ship-from warehouse. | Required for inventory items |
Four steps from the customer attachment to a draft sales order in Sage Intacct.
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 buyer part numbers to your item IDs and the customer name to its CUSTOMER_ID.
Tip: Keep the mapping sheet; the same account sends the same codes.
Download Excel or CSV and paste the rows into the Order Entry transactions template you downloaded from Intacct, keeping its headers untouched.
Tip: Trim spaces and quote any field that contains a comma.
In Company, Setup, Configuration, Import data, upload the file with Process offline, then review the draft sales orders and post them.
Tip: Run one two-line order first on any new customer.
Download the CSV template for Order Entry transactions from Order Entry, All, Transactions (Import, Download template) or from Company, Setup, Configuration, Import data. Fill one row per line with the transaction type, date, customer ID, due date, item, quantity and unit, then upload it on the Import data page, ideally with Process offline.
Not natively. Sage Intacct AP Automation creates draft bills from vendor bill documents, which is the buying side. A customer purchase order has to become structured rows first, either typed by hand or extracted, before the Order Entry import or the API can create the sales order.
In CUSTOMERPONUMBER, a field of up to 120 characters that the API describes as the customer purchase order number. It is separate from REFERENCENO and from your own DOCUMENTNO, which usually comes from automatic numbering on the transaction definition.
It is the name of the Order Entry transaction definition the row creates, such as Sales Order or Sales Quote. It must match a definition set up under Order Entry, Setup, Transaction definitions, exactly as written, or the row fails.
When we checked, the import service object list covered areas such as accounts payable, accounts receivable, inventory, projects and the general ledger, but not Order Entry transactions. Sales orders still load through the classic CSV template on the Import data page.
The usual causes are a header title that does not match the template exactly, an ID with the wrong case, a leading or trailing space, a comma inside an unquoted field, or a customer, item or warehouse that does not exist yet. Failed rows come back as a CSV with an error code on each.
Yes. The STATE column takes Draft or Post and defaults to Draft, so an import creates draft sales orders unless you say otherwise. Draft is the safer choice for any new customer or template, because a rep can check the lines before anything moves downstream.
With the XML Web Services function create_sotransaction, passing the transaction type, the date, the customer ID and at least one line. It needs a Web Services developer license with a sender ID, and your administrator must enable the Web Services subscription and authorize that sender ID.
No. PurchaseOrders reads the customer purchase order and returns structured data as Excel, CSV or JSON. It does not install in Sage Intacct and does not create, post or ship orders. You load the rows through the Order Entry import, the API or your own integration.
The buying side: POs you issue.
The same workflow on NetSuite.
The same workflow on Business Central.
The same workflow on Odoo.
The same workflow on QuickBooks.
The same workflow on Acumatica.
Choose your plan