Skip to content
SyncMyShop

Acumatica and EDI

Acumatica EDI integration

Acumatica ERP has no X12 or EDIFACT translator; in its own help, EDI appears only in the name of a carrier option. What it offers is a contract-based REST API, customer cross-references and separate actions to confirm a shipment and to invoice it. We build the X12 side to your Acumatica instance: 850s into sales orders, and 855, 856 and 810 out, mapped per trading partner, hosted and run for you.

What Acumatica does natively

Acumatica ERP has no X12 or EDIFACT translator. The full-text search of Acumatica's help, which covers releases 2026 R1 and 2026 R2, returns two results for "EDI" on 3 October 2026. Both are the Carriers form, where "EDI LTL - No Packing Changes" is a shipping option of a carrier integration. "EDIFACT" returns no results. What the product does ship are the parts an EDI integration writes to and reads from.

Native part What it is What an EDI integration uses it for
Contract-based REST API Entities and actions on the Default endpoint, version 26.200.001 in 2026 R2 Creating sales orders, confirming shipments, preparing invoices
Item cross-references Global, Customer Part Number, Vendor Part Number, Barcode and GTIN/EAN/UPC/ISBN alternate IDs, also per unit of measure Resolving the item number in the 850
Customer locations Several delivery locations per customer One location per retailer DC or store
Shipments (SO302000) Confirmed separately from the invoice Source of the 856
License API limits Sessions, concurrent requests, requests per minute Pacing every call

Commerce Edition adds connectors for store platforms and for selling on Amazon; none of them reads or writes X12. The retailer's documents, its version and qualifiers, the 997s and the mapping per partner are outside the product. This page is the Acumatica side of our EDI integration; the system itself is described on the Acumatica system page.

What sits between Acumatica and your trading partner

Document Direction Acumatica record Source of the content
850 In Sales order, order type SO The partner's file
855 Out Sales order Quantity per line after allocation
856 Out Confirmed shipment Lines, packages, carrier, tracking
810 Out Invoice prepared from the shipment Lines, tax, freight, terms
846 Out Item quantities per warehouse Available quantity per warehouse
997 Both None Kept in the integration per document

For the 850 the mapping runs as follows, with PO 4500018236 from our document pages as the example:

850 element Acumatica field Rule
Sender ID, N1*BY Customer ID From a partner table; never created from the file
BEG03 Customer Order Nbr. Checked for an existing order of that customer before the PUT
N1*ST, N104 Location ID The retailer's DC code 0007 resolves to a customer location
PO1 UP 614141104826 Inventory ID on the line Through a GTIN/UPC or Customer Part Number cross-reference
PO102, PO103 Order quantity and UOM 24 EA to the item's sales unit
PO104 Unit price Compared with the price Acumatica determines

The order is one request:

PUT /entity/Default/26.200.001/SalesOrder?$expand=Details

The body carries Customer ID, Location ID, order type SO and both lines under Details. The response holds the order number Acumatica assigned, which the integration stores next to the PO number so that the 855, 856 and 810 can return to the right order.

One X12 purchase order through Acumatica's contract-based REST API The retailer sends 850 PO 4500018236. The integration answers with a 997, creates the sales order with one PUT that carries both lines, and sends the 855. After packing, it confirms the shipment through the ConfirmShipment action and sends the 856, then prepares the invoice through PrepareInvoice and sends the 810. Retailer X12 004010 Integration queue and maps Acumatica ERP Default 26.200.001 850 PO 4500018236 997 AK9 A PUT SalesOrder, 2 lines 200 OK, order SO004512 855 BAK AC: 24 and 12 picked and packed POST Shipment/ConfirmShipment 856 BSN02 SH0004821 POST Shipment/PrepareInvoice 810 for 36 units Every call counts against the license: requests per minute, concurrent requests and API sessions. Above 50% of the per-minute limit Acumatica delays each request.
Four Acumatica calls for one order. Shipment and invoice are separate actions, so the 856 and the 810 can leave on different days.

The technical reality of this pair

License limits. Each Acumatica license sets three numbers, shown on the License Monitoring Console (SM604000): the maximum number of API sessions, of concurrent API requests and of API requests per minute. Once the requests of the past minute reach 50% of the per-minute limit, each new request is delayed. Acumatica's own example: with a limit of 50 and 25 requests already processed, and 20 seconds left in the minute, every request waits 20 divided by 25, which is 0.8 seconds. A request is declined when more than 20 are queued or when one has waited longer than 10 minutes. The license limits are documented in Acumatica's integration guide.

What that means for a morning file. One 850 costs one PUT, plus lookups of the customer location and the cross-references when they are not cached. At the 50 requests a minute of Acumatica's example, 400 purchase orders are at least 400 divided by 50, which is 8 minutes, and with two lookups per order 1,200 calls, which is 24 minutes. Acumatica's own example of a decline: 50 requests arrive in one second at a license with 16 concurrent requests; 16 are processed, 20 wait in the queue and 14 are declined. The integration therefore keeps its own queue, sends at a pace below the limit and caches the lookups, and the 997 goes back to the retailer when the file is read, not when the last order is written.

Sessions. A client that signs in and does not sign out keeps its API session. An integration that leaks sessions locks out every other integration on the license; the trial license allows two. Acumatica lets an administrator cap the sessions per integration user on the User Types (EP202500) and Users (SM201010) forms, and the integration signs out after every batch.

Shipment and invoice apart. Shipment/ConfirmShipment and Shipment/PrepareInvoice are separate actions. The 856 goes out when the shipment is confirmed, and the 810 when the invoice is prepared and released, so each document is built from the record it describes.

What Acumatica and X12 store differently

  • Alternate IDs are not checked for uniqueness. Acumatica's documentation says so in one sentence: "The system does not verify the uniqueness of alternate IDs in the system." Two items can carry the same barcode, and a lookup by that barcode is then ambiguous. The integration checks that a cross-reference points to one item before it uses it.
  • Writing an alternate ID changes the cross-reference. When a new value is entered in the Alternate ID column of a sales order line, Acumatica "will create a new customer-specific alternate ID or replace the existing" one. An integration that sends the retailer's number in that column with a typo rewrites the customer's cross-reference. Ours sends the resolved Inventory ID instead.
  • Inventory ID length. Acumatica advises that the INVENTORY segmented key be as long as the longest alternate ID, because partner IDs are often longer than planned inventory IDs. A 14-digit case GTIN does not fit a 10-character segment.
  • Units. The 850 orders 24 EA. A retailer that orders cases sends 2 CA; at 12 per case that is 24 units in the item's sales unit, and the 855 and 856 convert back to 2 cases. Cross-references per unit of measure let the case GTIN resolve to the case unit directly.
  • Ship-to. One retailer DC is one customer location. A store number or DUNS+4 that has no location is held, never written to the customer's default location.

When it goes wrong

What happens What the integration does
Acumatica delays requests above half the per-minute limit The queue slows down; no request is sent that would be declined
A request is declined, or times out after the order was created Before a retry, the integration looks up Customer Order Nbr. for that customer: one sales order
A cross-reference matches two items, or none The order is held with the PO1 line; the rest of the file is written
A session cannot open because the license limit is reached An alert, with the number of sessions in use
No 997 from the partner within its window An alert, with the control number of the document that is waiting

We build the integration to your Acumatica instance and your trading partners, host it and run it, for a fixed build price and a monthly fee. A new partner starts as a dry run that writes nothing to Acumatica and sends nothing, and you approve the first documents. When a partner publishes a new guide or Acumatica changes the endpoint version, we change the integration. The store side is covered under Shopify Acumatica integration; the same work on other ERPs is under NetSuite EDI integration and Business Central EDI integration. Tell us which partners you trade with.

Frequently asked questions

Does Acumatica have built-in EDI?

No. A search of Acumatica's help for releases 2026 R1 and R2 returns two results for EDI, both on the Carriers form, where "EDI LTL - No Packing Changes" is the name of a shipping option of a carrier integration. EDIFACT returns none. The X12 translation, the envelopes and the mapping per partner run outside the ERP and use its API.

Which Acumatica API does an EDI integration use?

The contract-based REST API on the Default endpoint, version 26.200.001 in release 2026 R2. A sales order with its lines is created with one PUT on the SalesOrder entity, and shipments are confirmed and invoiced with the ConfirmShipment and PrepareInvoice actions of the Shipment entity.

Can an 850 use the retailer's item numbers?

Yes. Acumatica stores cross-references on the stock item: global alternate IDs, customer part numbers, barcodes and GTIN, EAN or UPC codes, and alternate IDs per unit of measure. The integration resolves the number from the 850 against them before it creates the order line, because Acumatica does not check that an alternate ID is unique.

Does the API limit of our license matter for EDI?

Yes. Each license sets a maximum number of API sessions, concurrent requests and requests per minute, and every EDI document causes several calls. Above half of the per-minute limit Acumatica delays requests, and it declines them when more than 20 are queued or one waits longer than 10 minutes. The integration paces its calls to stay under those numbers.

Tell us what you need

Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.

  • You know the price and the timeline before you commit to anything
  • We work out the connection that takes the work off your hands
  • We handle the build, hosting, monitoring and maintenance
  • Your team has less information to retype and fewer discrepancies to chase

Suppliers, products, orders per day, a rough estimate is fine.

Or email directly: carsten@syncmyshop.com