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.
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
More SYSPRO integrations
Other systems that connect to SPS Commerce
Connect SYSPRO and SPS Commerce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started