ml-connector
Sage 100Orderful

Sage 100 and Orderful integration

Sage 100 runs your on-premises ERP. Orderful routes your sales and purchase orders to trading partners as EDI X12 or EDIFACT documents. Connecting the two keeps your orders in sync across systems without re-entry and without human translation. Sales orders created in Sage 100 can be sent to customers via Orderful's EDI network, and purchase orders received from suppliers through Orderful land in Sage 100 ready for receipt and invoicing. ml-connector handles the translation between Sage 100's internal data and the X12 850 (PO) and 810 (invoice) standards that Orderful requires.

How Sage 100 works

Sage 100 is an on-premises Windows system exposing customers, sales orders, purchase orders, vendors, invoices, and GL accounts through SOAP web services (eBusiness Web Services) or a local Windows agent wrapping COM objects. SOAP covers only AR transactions; AP, GL, purchasing, and inventory require the COM agent. There is no REST API and no cloud interface. Sage 100 has no webhooks or event stream, so data is retrieved by polling with DateLastUpdated fields. Every call requires a username and password, company code (a 3-character identifier), and the user must be individually enabled for Web Services. Pagination is not standard; single entities are fetched at a time.

How Orderful works

Orderful is a cloud EDI network that receives, translates, and sends X12 and EDIFACT documents via REST JSON API. Authentication is a static API Key passed in the orderful-api-key header. Orderful can push incoming transactions to your endpoint via webhook, or you can poll via GET /v3/polling-buckets on a schedule. The API uses versioned endpoints: /v4 for create and inbox operations, /v3 for list and retrieve. ISA identifiers (sender and receiver) are required on every request. Region (US vs EU) is fixed per API key and data does not sync across regions. Orderful also supports multi-channel delivery: AS2, SFTP, VAN, and direct HTTP to your trading partner network.

What moves between them

Sales orders and purchase orders flow bidirectionally. Sage 100 sales orders are polled every 15 to 30 minutes, translated to X12 850 or EDIFACT documents with line items, ship-to address, and terms, and posted to Orderful for delivery to customers via EDI. Purchase orders received by Orderful from suppliers arrive via webhook or polling, are parsed from X12 850 format, and inserted into Sage 100 as purchase orders linked to vendors. Ship notices (856) and invoices (810) from suppliers also flow via Orderful into Sage 100 for receipt matching and AP. Item masters, customer names, and vendor IDs are synchronized on a daily or weekly schedule to keep Orderful's ISA mappings current.

How ml-connector handles it

ml-connector stores the Sage 100 username, password, and company code, and the Orderful API Key, both encrypted. It polls Sage 100's SalesOrder and PurchaseOrder tables on a schedule, transforms each record into the correct X12 or EDIFACT segment structure, and POSTs to Orderful with the sender and receiver ISA IDs for your company and each trading partner. For inbound EDI from Orderful, ml-connector registers a webhook endpoint and parses incoming 850 and 856 messages, or polls the Orderful bucket, then inserts the parsed records into Sage 100 as PO_PurchaseOrder rows with vendor lookups and line-item GL accounts. Because Sage 100 is on-premises and has no native webhooks, all Sage 100 data originates from polling; the integration handles Sage 100's record-locking constraints with exponential backoff on retries. EDI syntax errors are logged with the raw segment and the parse error so you can contact the sender to correct the format. Every record carries a full audit trail linking the source order, the EDI transaction, and the result in Sage 100.

A real-world example

A mid-sized specialty manufacturer runs Sage 100 for ERP and uses Orderful to send purchase orders to 40 regional suppliers and receive their shipments and invoices. Before integration, the procurement team exported POs from Sage 100 weekly, formatted them as X12 manually or via a spreadsheet macro, and emailed or uploaded them to Orderful. Supplier 856 ship notices arrived in Orderful but had to be printed and manually keyed into Sage 100's receiving module. With Sage 100 and Orderful connected, every new PO in Sage 100 is automatically translated and sent within seconds, supplier ship notices flow back and trigger receiving in Sage 100, and invoice matching happens without re-entry. Procurement cycle time dropped from 3 days to same-day, and data entry errors in receiving fell by 95 percent.

What you can do

  • Poll sales orders from Sage 100, translate them to X12 850 format, and send via Orderful to your customer EDI network.
  • Receive purchase orders from Orderful as X12 850 messages, parse them, and insert into Sage 100 linked to the correct vendor.
  • Map Sage 100 customers and vendors to Orderful ISA identifiers so the same trading partner is matched across both systems.
  • Synchronize item masters and customer ship-to addresses daily so EDI messages carry the correct product codes and locations.
  • Log every EDI parse error and Sage 100 write with full context so you can audit the end-to-end flow and replay failures.

Questions

How does ml-connector translate between Sage 100 and X12 EDI format?
ml-connector reads Sage 100 sales orders and POs (customer names, items, quantities, prices, ship addresses) and maps them to the correct X12 segments: the ISA envelope with sender and receiver identifiers, the GS group, the ST850 sales order or purchase order header, and SED segments for line items. For incoming EDI, it reverses the process: parsing X12 850 and 856 messages back into Sage 100 POs and receipts with vendor lookups and GL account allocation.
Does Sage 100's lack of webhooks mean the integration has to poll forever?
Yes. Sage 100 has no webhooks or event stream, so ml-connector polls the SalesOrder and PurchaseOrder tables every 15 to 30 minutes using the DateLastUpdated field to find changes. However, inbound EDI from Orderful can be pushed via webhook to ml-connector's endpoint, which then inserts the parsed records into Sage 100. This means Sage 100 to Orderful is push (translated to EDI and sent immediately), and Orderful to Sage 100 is webhook-driven (pushed in near real-time).
What happens if an X12 message from a supplier has a format error?
ml-connector logs the raw X12 segment and the specific parse error to its audit trail so you can see which supplier sent the malformed message and what field caused the problem. The record is not inserted into Sage 100, and an alert can be sent to your procurement team. You can then contact the supplier to fix the format and resend, or manually intervene if needed. All parse errors are retained in the audit log for compliance and troubleshooting.

Related integrations

Connect Sage 100 and Orderful

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started