ml-connector
SYSPROCin7

SYSPRO and Cin7 integration

SYSPRO runs manufacturing finance and procurement. Cin7 Core manages inventory, purchasing, and general ledger in the cloud. Connecting the two keeps your purchase-to-pay cycle unified: new suppliers in SYSPRO sync to Cin7, invoices from SYSPRO post into Cin7's GL, and purchase orders stay aligned across both systems without manual re-entry. ml-connector handles the different authentication schemes and manages the sync on a schedule you control.

How SYSPRO works

SYSPRO Adaptive ERP exposes suppliers, purchase orders, invoices, GL accounts, cost centers, and inventory through three API layers: e.net Business Objects (REST/SOAP, read and write), OData (REST read-only), and Workflow Service. Authentication uses a session token obtained by logging into the Utilities/Logon endpoint, and customers supply their own server URL since SYSPRO publishes no shared SaaS base URL. SYSPRO has no outbound webhook system, so records are read by polling OData tables with timestamp filters on PostDate and InvoiceDate, typically on a 5- to 15-minute cadence for financial data.

How Cin7 works

Cin7 Core is a cloud SaaS platform that exposes suppliers, purchases, sales, customers, products, and chart of accounts through a REST JSON API at https://inventory.dearsystems.com/externalapi/v2/. Authentication is simple: two custom API headers (api-auth-accountid and api-auth-applicationkey) on every request. Cin7 can receive outbound webhook events for sales, purchases, suppliers, and stock changes via its Automation module, though webhooks are configured through the UI and are not HMAC-signed. The chart of accounts is read-only via the API, but purchases cover the full procure-to-pay lifecycle through an Approach field that separates ORDER, INVOICE, and RECEIVE states.

What moves between them

The main flow is from SYSPRO into Cin7 Core. Suppliers are synced bidirectionally so both systems reference the same vendor master. Purchase orders and invoices flow from SYSPRO to Cin7 on a regular schedule, with each invoice record marked with its Approach (INVOICE or RECEIVE) so Cin7 reflects the exact procurement stage. GL postings from SYSPRO's AP module are written to Cin7's chart of accounts, mapped to matching cost centers and GL accounts in both systems. Because both systems are ERP platforms with overlapping GL capabilities, mapping must account for the fact that Cin7's GL is read-only on the API side.

How ml-connector handles it

ml-connector stores the SYSPRO session token and Cin7 API keys encrypted. On the SYSPRO side, it logs in once per sync cycle and polls the OData layer (ApSupplier, ApInvoice, ApPosting, PorMasterHdr, PorMasterDetail) with $filter expressions on PostDate and InvoiceDate. The SYSPRO server URL is per-customer since there is no universal SaaS endpoint. On the Cin7 side, it presents the API keys on every REST call and creates or updates suppliers, purchases, and sales records via the standard Cin7 endpoints. Cin7 rate limits per Application Key, so ml-connector backs off on HTTP 429 and retries. Supplier names and ID codes are normalized so they match between SYSPRO and Cin7. GL account mapping is validated before posting so every invoice lands on an account that exists in Cin7. Every record carries a timestamp and audit trail so failed syncs can be replayed without duplicating entries.

A real-world example

A mid-sized distribution company runs SYSPRO for order fulfillment and procurement, and uses Cin7 Core in the cloud for inventory visibility across multiple warehouses. Before the integration, the procurement team received invoices in SYSPRO, then manually entered them into Cin7's purchases to keep the cloud inventory and accounting ledgers in sync. This manual step caused delays and invoice posting errors. With SYSPRO and Cin7 connected, every purchase order and invoice from SYSPRO automatically flows into Cin7, reconciled to the same GL accounts and cost centers, and the procurement backlog is eliminated. Month-end close is faster because inventory and AP accounts are already aligned.

What you can do

  • Sync suppliers and vendor masters bidirectionally so SYSPRO and Cin7 Core reference the same vendors.
  • Poll SYSPRO invoices on a regular schedule and post them into Cin7 Core with the correct GL accounts and cost centers.
  • Handle SYSPRO session token authentication and Cin7 API key headers without exposing credentials.
  • Map purchase order states (ORDER, INVOICE, RECEIVE) into Cin7 Core's Approach field so procurement stages are preserved.
  • Track every record with an audit trail and replay failed syncs without duplicating entries in either system.

Questions

Which direction does data flow between SYSPRO and Cin7 Core?
The main flow is from SYSPRO into Cin7 Core. Suppliers, purchase orders, and invoices sync from SYSPRO to Cin7 on a schedule tied to your procurement cycle. Supplier master records can be synced bidirectionally if Cin7 is the source of truth for certain vendor attributes. GL postings are read-only in Cin7's API, so ml-connector does not write directly to GL; instead it creates purchase records that map to the correct GL accounts.
How does ml-connector handle SYSPRO's session token and per-customer server URL?
ml-connector logs in to SYSPRO's Utilities/Logon endpoint at the start of each sync cycle using the customer's supplied credentials and server URL. The session token is refreshed as needed and stored encrypted. Because SYSPRO publishes no shared SaaS base URL, the full server address and port are part of the per-customer configuration.
How are GL accounts and cost centers mapped between the two systems?
ml-connector maintains a mapping table between SYSPRO GL account codes and Cin7 Core's chart of accounts. Before posting any invoice, it validates that the target GL account exists in Cin7. Cost centers are aligned so payroll and expense allocations land on valid dimensions in both systems.

Related integrations

Connect SYSPRO and Cin7

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

Get started