ml-connector
Exact OnlineSPS Commerce

Exact Online and SPS Commerce integration

Exact Online runs your accounting and order management. SPS Commerce is your link to retail trading partners like Walmart and Amazon who send orders in EDI format. Connecting the two keeps your order records in sync and eliminates manual EDI translation. Inbound purchase orders from SPS Commerce become sales orders in Exact Online, and your invoices flow back out to trading partners in the format they require without manual re-keying.

How Exact Online works

Exact Online exposes accounts, sales invoices, sales orders, purchase orders, GL accounts, cost centers, items, and journal entries through a REST API with OData v3 query syntax and region-specific base URLs. It authenticates with OAuth 2.0 Authorization Code Grant, with access tokens valid for 10 minutes and refresh tokens for 30 days. Exact Online supports webhooks for push notification on significant document changes including sales orders, sales invoices, and purchase orders, with HMAC-SHA256 validation on the webhook payload. The webhook model delivers only the entity key and action type, so full entity data must be fetched separately. Division ID is required for all calls and must be fetched from the /current/Me endpoint first.

How SPS Commerce works

SPS Commerce exposes inbound purchase orders, invoices, advance ship notices, and inventory data through a REST API that wraps all transactions in RSX 7.7.7 JSON envelope format. It authenticates with OAuth 2.0 client credentials, returning a JWT bearer token. SPS is a pass-through network intermediary, not a source-of-truth system, so all documents must conform to the RSX envelope standard and include trading partner IDs provisioned during onboarding. The recommended pattern is scheduled polling of purchase orders at 5- to 15-minute intervals, with immediate push of outbound invoices and ship notices. Rate limits are not publicly documented, so exponential backoff and jitter on HTTP 429 is required.

What moves between them

Inbound flows from SPS Commerce into Exact Online. ml-connector polls SPS Commerce for purchase orders at regular intervals (typically matching the trading partner order cadence), converts each PO from RSX envelope format into Exact Online sales order structure, and creates the sales order in Exact Online with references to the inbound trading partner and SPS PO number for audit and match-back. Outbound flows from Exact Online to SPS Commerce. When sales invoices are created or updated in Exact Online, ml-connector wraps each invoice in the RSX 7.7.7 envelope format, routes it to the correct trading partner ID at SPS Commerce, and posts it as an EDI 810 invoice.

How ml-connector handles it

ml-connector stores both credential sets encrypted and uses OAuth 2.0 on both sides, refreshing Exact Online tokens every 9 minutes and SPS Commerce tokens before they expire. The Exact Online division ID is fetched once per customer and cached. On inbound, ml-connector polls the SPS fulfillment API, decodes the RSX envelope from each purchase order, maps the trading partner and supplier name to the correct Exact Online account (customer), and uses the line item details to populate sales order line structure with Exact Online item codes and GL account references. Cost centers are mapped if present in the PO. On outbound, ml-connector listens for sales invoice creation in Exact Online (via webhook if available, or polling as fallback), wraps the invoice data in the RSX 7.7.7 envelope, adds the destination trading partner ID, and posts to SPS Commerce. Every record carries a full audit trail and can be replayed if the SPS post fails. Both sides retry with exponential backoff on transient errors and 429 rate limits.

A real-world example

A mid-sized consumer goods manufacturer runs Exact Online for order entry, invoicing, and GL accounting across multiple divisions in Europe. The company supplies three major retail chains (Walmart, Target, Carrefour) who send orders through SPS Commerce in EDI X12 format. Before the integration, the supply chain team exported orders from SPS weekly, manually re-entered line items into Exact Online sales orders, then exported invoices from Exact Online and uploaded them back to SPS for transformation into X12 for each retailer. With Exact Online and SPS Commerce connected, inbound orders land as sales orders within minutes of arrival, eliminating re-entry errors and delays. Invoices post to SPS automatically after billing, reducing the monthly close cycle by two days and freeing the team to focus on exception handling rather than manual translation.

What you can do

  • Poll inbound purchase orders from SPS Commerce and create sales orders in Exact Online with automatic supplier account mapping.
  • Post sales invoices from Exact Online to SPS Commerce in RSX 7.7.7 format and route them to the correct trading partner.
  • Map trading partner IDs and supplier names to Exact Online accounts so orders and invoices land on the correct customer record.
  • Manage OAuth 2.0 refresh tokens for both Exact Online (10-minute access, 30-day refresh) and SPS Commerce (with exponential backoff on 429 rate limits).
  • Maintain a full audit trail of every PO inbound and invoice outbound, with replay capability if a downstream call fails.

Questions

Which direction does data move between Exact Online and SPS Commerce?
Purchase orders flow inbound from SPS Commerce into Exact Online as sales orders. Sales invoices flow outbound from Exact Online to SPS Commerce in EDI 810 format wrapped in RSX envelope. Inbound ship notices and advance shipping notices can also be polled from SPS for visibility into fulfillment status if needed.
How does ml-connector handle the RSX 7.7.7 envelope format required by SPS Commerce?
ml-connector automatically wraps outbound invoices in the RSX 7.7.7 JSON envelope format that SPS Commerce expects, including the required trading partner ID and document type identifier. Inbound purchase orders from SPS arrive already wrapped, so ml-connector unwraps them, extracts the order details, and converts to Exact Online sales order structure.
What happens if the Exact Online refresh token expires or SPS Commerce returns a 429 rate limit?
ml-connector tracks Exact Online refresh token expiry and refreshes before the 30-day window closes to prevent re-authorization. For SPS Commerce rate limits, ml-connector backs off with exponential jitter and retries, and every inbound order or outbound invoice carries a unique identifier so retries do not duplicate records.

Related integrations

Connect Exact Online and SPS Commerce

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

Get started