ml-connector
SYSPROSPS Commerce

SYSPRO and SPS Commerce integration

SYSPRO runs manufacturing and distribution; SPS Commerce connects you to retail buyers like Walmart, Target, and Amazon via EDI. The two systems speak different languages: SYSPRO works with SQL tables and internal GL codes, while SPS speaks X12 and EDIFACT wrapped in RSX JSON envelopes. ml-connector bridges them, reading purchase orders from SYSPRO and flowing them through SPS to retail partners, then capturing acknowledgments and invoices from SPS and posting them back into SYSPRO without manual re-keying.

How SYSPRO works

SYSPRO Adaptive ERP exposes suppliers, purchase orders, invoices, GL accounts, cost centers, items, and warehouse data through two primary REST layers: e.net Business Objects (read and write with session tokens) and OData (read-only with HTTP Basic Auth). The cloud product requires a customer-supplied server URL and credentials, so there is no shared hostname. SYSPRO has no outbound webhook system, so purchase orders and invoices are read by polling OData tables on a schedule.

How SPS Commerce works

SPS Commerce is a cloud EDI network that receives and sends trading partner documents: purchase orders (850), invoices (810), advance ship notices (856), and warehouse shipping orders (940). It exposes these via REST API with OAuth 2.0 authentication and wraps all documents in RSX 7.7.7 JSON envelopes. SPS does not publish trading partner IDs via API; these are provisioned during onboarding. While SPS defines a webhook framework, the primary integration pattern is polling, with recommended intervals of 5 to 15 minutes.

What moves between them

Purchase orders and invoices flow from SYSPRO to SPS Commerce, wrapped in RSX JSON, and are forwarded to retail partners via EDI X12 or EDIFACT. Acknowledgments (855), advance ship notices (856), and invoices (810) from SPS Commerce are polled and posted back into SYSPRO as inbound AP supplier transactions, mapped to the correct supplier and GL account. Cost center allocations from SYSPRO are preserved in outbound transactions.

How ml-connector handles it

ml-connector stores SYSPRO session credentials and SPS OAuth client credentials encrypted, obtaining a fresh SYSPRO session token on each poll cycle and exchanging SPS client credentials for a short-lived JWT bearer token. It polls SYSPRO OData for outbound purchase orders and invoices on a configurable schedule (recommended 5-15 minutes), filters by timestamp, and transforms them into RSX 7.7.7 JSON envelopes for SPS. Inbound SPS documents (acknowledgments, ship notices, invoices) are polled from SPS Commerce, transformed from RSX back to SYSPRO field shapes, and posted into SYSPRO via e.net Business Objects with full GL and cost center mapping. Because SPS documents are not idempotent by default, ml-connector deduplicates based on document number and date. SYSPRO OData is read-only, so all writes use e.net REST; large payloads that exceed REST URL limits fall back to SOAP/NetTcp. Rate limits on the SPS side are undocumented, so ml-connector implements exponential backoff with jitter on 429 responses.

A real-world example

A mid-sized apparel manufacturer runs SYSPRO ERP for production and procurement, and sells to three major retail chains via SPS Commerce. Before the integration, the procurement team exported purchase orders from SYSPRO, manually wrapped them in EDI X12 format, and uploaded them to SPS; when acknowledgments and invoices arrived from SPS, they were downloaded as flat files and manually keyed back into SYSPRO. Reconciliation between SYSPRO and SPS took weeks. With SYSPRO and SPS Commerce connected, purchase orders flow automatically from SYSPRO through SPS to all three retailers in certified EDI format, and incoming acknowledgments and invoices are posted back into SYSPRO on the same schedule, with full audit trail and automatic cost center allocation. Procurement now runs on a weekly cycle with zero re-keying.

What you can do

  • Send SYSPRO purchase orders and invoices to SPS Commerce, wrapped in RSX 7.7.7 JSON for retail partner delivery via EDI X12 and EDIFACT.
  • Receive SPS Commerce purchase order acknowledgments, invoices, and advance ship notices and post them into SYSPRO as inbound AP supplier records.
  • Maintain GL accounts and cost center allocations across both systems so financial records reconcile.
  • Authenticate SYSPRO with session tokens and SPS Commerce with OAuth 2.0 client credentials, refreshing both on expiry.
  • Poll both systems on a schedule tied to your procurement calendar, with deduplication and exponential backoff on rate limits.

Questions

Which direction does data move between SYSPRO and SPS Commerce?
Purchase orders and invoices move from SYSPRO to SPS Commerce for delivery to retail partners via EDI. Acknowledgments (855), invoices (810), and advance ship notices (856) flow back from SPS into SYSPRO as inbound AP supplier records. GL accounts and cost centers are preserved in both directions.
Why poll instead of using SPS webhooks?
SPS Commerce webhooks are still under development and not standardized across endpoints. The recommended integration pattern for both SYSPRO and SPS is scheduled polling, typically every 5 to 15 minutes. This also aligns with SYSPRO's lack of outbound webhooks.
Does SYSPRO's read-only OData limit what data can flow outbound?
Yes. ml-connector reads outbound purchase orders and invoices from SYSPRO OData, but posts inbound AP records back to SYSPRO using e.net Business Objects (which supports write). RSX envelopes and SYSPRO GL codes are mapped during the transformation so cost centers and accounts align.

Related integrations

Connect SYSPRO and SPS Commerce

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

Get started