ml-connector
SYSPROCoupa

SYSPRO and Coupa integration

SYSPRO runs your manufacturing operations and accounting. Coupa manages procurement and spend across the organization. Connecting the two keeps supplier data consistent, moves purchase orders from planning into procurement, and brings invoice records into Coupa for spend control without manual entry. ml-connector polls SYSPRO on a schedule and writes the data to Coupa through its REST API, handling the different authentication layers on each side.

How SYSPRO works

SYSPRO exposes suppliers, purchase orders, invoices, GL accounts, cost centers, and inventory through e.net Business Objects (REST and SOAP with session token authentication) and OData (read-only REST with HTTP Basic Auth). Each customer provides their own server URL and credentials; SYSPRO publishes no shared SaaS base URL. SYSPRO does not push outbound webhooks, so data is read by polling OData tables on a schedule (5-15 minutes typical for financial records). Writes to SYSPRO require the e.net REST or SOAP layer and appropriate operator permissions. Session tokens expire on logoff or timeout.

How Coupa works

Coupa is a cloud procurement platform accessed through REST APIs with OAuth2 client-credentials flow. Every request requires an X-Coupa-API-Version header. Coupa also supports webhooks (requisition, purchase order, invoice, supplier, expense report, and payment events) with HMAC-SHA256 signature verification, though the endpoint URL is registered by the customer. Coupa enforces a 30-second request timeout and rate-limits on 5xx and 429 responses with retry guidance. Webhook payloads are capped at 256KB with streaming abort on overflow.

What moves between them

The main flow is SYSPRO into Coupa. Supplier master records from SYSPRO are read via OData and written to Coupa via REST, creating or updating Coupa Supplier entities. Purchase order headers and line items are polled from SYSPRO and synced to Coupa PurchaseOrder records. Invoice records flow from SYSPRO to Coupa for spend visibility and payment matching. Cost center and GL account information is mapped to Coupa LookupValues so purchase orders land on the correct accounting dimensions. Changes made in Coupa to suppliers (contact info, payment terms) can be synced back to SYSPRO via e.net Business Objects to keep supplier master data aligned.

How ml-connector handles it

ml-connector maintains both credential sets encrypted: SYSPRO OData credentials (operator code + OData password for HTTP Basic Auth) and Coupa OAuth2 client ID and secret. It polls SYSPRO OData tables on a schedule (typically 5-15 minutes for financial data) using $filter expressions on timestamp fields such as PostDate and InvoiceDate to fetch only changed records. On the Coupa side, ml-connector refreshes the OAuth2 bearer token when a call returns 401 and honors the 30-second timeout and rate-limit backoff. Supplier records are mapped bidirectionally, so Coupa updates to supplier contact or payment terms can be written back to SYSPRO via e.net REST when the source system permissions allow. Because SYSPRO OData is read-only, writes go through e.net Business Objects with the appropriate session token and operator permissions. Each record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized discrete manufacturer runs SYSPRO ERP for production planning, procurement, and finance, and uses Coupa for spend management and supplier collaboration. Before the integration, the procurement team maintained a separate list of approved suppliers in Coupa while the finance team managed the master supplier list in SYSPRO, leading to duplicate efforts and misalignment when terms or contacts changed. Purchase orders created in SYSPRO were manually re-entered into Coupa for visibility and payment matching. With SYSPRO and Coupa connected, supplier master records sync automatically in both directions, purchase orders created in SYSPRO flow into Coupa automatically for spend visibility and payment matching, and the procurement team and finance team share a single source of truth on supplier information.

What you can do

  • Sync SYSPRO supplier records to Coupa Suppliers, keeping both systems aligned when contact or payment terms change.
  • Read SYSPRO purchase orders and line items via OData polling and write them to Coupa PurchaseOrder records without manual entry.
  • Map SYSPRO cost centers and GL accounts to Coupa LookupValues so purchase orders are allocated to the correct accounting dimensions.
  • Authenticate SYSPRO with OData HTTP Basic Auth and Coupa with OAuth2, managing token refresh and session expiry.
  • Poll SYSPRO on a schedule tied to your operational cycle, with automatic retries and a full audit trail on every record.

Questions

Which direction does data move between SYSPRO and Coupa?
The main flow is SYSPRO into Coupa. Supplier records, purchase orders, and invoices are read from SYSPRO via OData and written to Coupa via REST. Supplier updates made in Coupa (contact info, payment terms) can be synced back to SYSPRO through e.net Business Objects to keep the supplier master aligned. SYSPRO OData is read-only, so writes require e.net and appropriate operator permissions.
How does the integration handle SYSPRO's polling model and lack of webhooks?
ml-connector polls SYSPRO OData tables on a regular schedule (5-15 minutes typical for financial records) using timestamp filters to fetch only changed records. This matches SYSPRO's architecture, which does not support outbound webhooks. Coupa also accepts webhook notifications if the customer registers an endpoint, so incoming updates from Coupa can trigger immediate reactions if configured.
What authentication is required on each side?
SYSPRO OData uses HTTP Basic Auth with an auto-generated operator code and OData password; ml-connector stores these encrypted and passes them on every request. Coupa requires OAuth2 client-credentials flow; ml-connector refreshes the bearer token when a call returns 401. Both credential sets are stored encrypted and can be rotated without code changes.

Related integrations

Connect SYSPRO and Coupa

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

Get started