ml-connector
Epicor KineticSPS Commerce

Epicor Kinetic and SPS Commerce integration

Epicor Kinetic runs your supply chain and accounting. SPS Commerce connects you to retail partners via EDI. When your ERP creates a purchase order or invoice, SPS Commerce must receive it in the right EDI format for each retailer. ml-connector polls Epicor Kinetic for new purchase orders and invoices, wraps them in SPS Commerce's RSX JSON envelope format, and posts them to the network. It also retrieves incoming PO acknowledgments and shipment notices from SPS Commerce and writes them back into Epicor Kinetic so your buyers stay synchronized with reality.

How Epicor Kinetic works

Epicor Kinetic exposes vendors, purchase orders, APInvoices, APPayments, and GL accounts through REST OData v4 endpoints at a tenant-specific URL. Authentication uses OAuth2 client credentials or Basic Auth, plus an API Key header. The cloud service publishes no webhooks, so records are retrieved by polling with OData date filters (e.g., $filter=UpdatedOn gt {timestamp}) to find changes since the last sync. Pagination uses offset: $top=100&$skip=0. Bearer tokens expire in roughly one hour and must be refreshed.

How SPS Commerce works

SPS Commerce is a cloud EDI intermediary that exposes trading partner documents via REST JSON API at https://api.spscommerce.com. All documents arrive wrapped in RSX 7.7.7 JSON envelope format. Authentication uses OAuth2 client credentials against https://api.spscommerce.net/authorization/v1/token (note: different hostname for token endpoint). Key entities are purchase orders (850), PO acknowledgments (855), invoices (810), advance ship notices (856), and warehouse shipping advice (945). SPS is pull-primary, so ml-connector polls at regular intervals for incoming documents. Rate limits are not publicly documented.

What moves between them

Purchase orders and invoices flow outbound from Epicor Kinetic to SPS Commerce. ml-connector polls Epicor Kinetic on a schedule (e.g., every 15 minutes), retrieves new or modified purchase orders and APInvoices using OData filters, and posts them to SPS Commerce wrapped in RSX envelope format. Inbound documents from SPS Commerce - PO acknowledgments, advance ship notices, and warehouse receipt advice - are polled from SPS Commerce and written back into Epicor Kinetic as vendor confirmations and receipt records.

How ml-connector handles it

ml-connector stores both OAuth2 credentials encrypted and uses separate token endpoints: Epicor's https://login.epicor.com/connect/token and SPS's https://api.spscommerce.net/authorization/v1/token. Outbound payloads from Epicor Kinetic are wrapped in SPS Commerce's RSX 7.7.7 envelope before posting, so a PurchaseOrder record becomes a complete X12 850 message in JSON form. Inbound documents are unwrapped from RSX format before writing back into Epicor Kinetic. Polling uses OData $filter on UpdatedOn timestamps for efficiency. Both vendors lack published rate limits, so ml-connector implements exponential backoff on 429 responses. Trading partner identifiers (which retail partner receives which document) are provisioned during SPS onboarding and are not discoverable via API, so mappings are configured per customer. Bearer tokens are refreshed on 401 responses. Every record carries a full audit trail and can be replayed if a downstream write fails.

A real-world example

A mid-sized apparel manufacturer produces seasonal goods for major retailers. Purchase orders arrive from Walmart, Target, and Kohl's through SPS Commerce's EDI network. Before integration, warehouse staff printed the SPS web portal purchase orders and re-entered them into Epicor Kinetic by hand. When goods shipped, the warehouse manager logged back into SPS to mark orders as shipped, then Epicor had no record of the shipment until the retailer's receipt notice came back through email weeks later. With Epicor Kinetic and SPS Commerce connected, new POs automatically land in Epicor without re-keying. When the warehouse generates a shipment in Epicor, ml-connector pushes the advance ship notice to SPS immediately, so the retailer sees real-time tracking. Receipt confirmations from the retailer flow back into Epicor, ending the information lag.

What you can do

  • Sync purchase orders from Epicor Kinetic to SPS Commerce, wrapped in RSX JSON envelope format for each retail partner.
  • Poll SPS Commerce for incoming PO acknowledgments and shipment notices, then write them into Epicor Kinetic as vendor confirmations.
  • Authenticate Epicor Kinetic with OAuth2 and API Key header, and SPS Commerce with OAuth2 client credentials.
  • Poll both systems on a configurable schedule, with exponential backoff on rate-limit 429 responses and a full audit trail on every record.
  • Maintain trading partner routing: configure which Epicor Kinetic legal entity or vendor maps to which SPS Commerce retailer.

Questions

How does ml-connector handle SPS Commerce's RSX envelope format?
All documents sent to SPS Commerce must be wrapped in RSX 7.7.7 JSON envelope format. ml-connector takes a purchase order or invoice from Epicor Kinetic, transforms it into the RSX structure required by SPS (e.g., X12 850 for POs, X12 810 for invoices), and posts it to SPS. Inbound documents from SPS are unwrapped before being written into Epicor Kinetic.
Which direction does data flow between Epicor Kinetic and SPS Commerce?
Outbound: purchase orders and invoices flow from Epicor Kinetic to SPS Commerce so retail partners receive them via EDI. Inbound: PO acknowledgments, advance ship notices, and warehouse receipt advice flow from SPS Commerce back into Epicor Kinetic. The flow is bidirectional but asymmetric - Epicor Kinetic is the source of orders and invoices, SPS is the source of partner confirmations.
How does the integration handle the different token endpoints and rate limits?
Epicor Kinetic uses https://login.epicor.com/connect/token and SPS Commerce uses https://api.spscommerce.net/authorization/v1/token (note the different hostname). ml-connector manages both token lifecycles separately and refreshes on 401 responses. Neither vendor publishes rate limits publicly, so ml-connector implements exponential backoff with jitter on all 429 responses to avoid outages.

Related integrations

Connect Epicor Kinetic and SPS Commerce

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

Get started