ml-connector
SYSPRODeel

SYSPRO and Deel integration

SYSPRO runs manufacturing and distribution finance. Deel runs global payroll and workforce management. Connecting the two keeps your labor costs and general ledger in sync. Payroll cost allocations from Deel flow into SYSPRO's GL accounts on a schedule, mapped to the cost centers and GL dimensions already defined in SYSPRO. Your month-end close starts with labor costs already posted, eliminating manual re-keying between payroll and the ledger.

How SYSPRO works

SYSPRO is a mid-market ERP for manufacturing and distribution. It exposes GL accounts, cost masters, GL postings, purchase orders, supplier invoices, and inventory through e.net Business Objects (REST and SOAP with session token) and OData tables (REST read-only with HTTP Basic Auth over https). The session token is obtained by logging in via the Utilities/Logon endpoint, and the OData API requires auto-generated operator credentials. SYSPRO publishes no webhooks, so connectors must poll the GL and cost tables using $filter on timestamp fields. Write operations require the e.net REST or SOAP layer, while OData is read-only.

How Deel works

Deel is a global workforce platform that handles contracts, HRIS, payroll processing, invoicing, and compliance across 150+ countries. It exposes employee records, payslips, payroll inputs, invoices, and cost allocations through REST JSON APIs at api.letsdeel.com, with bearer token (API token or OAuth2) authentication. Deel supports real-time webhook notifications for contract, employee, and payroll events with HMAC-SHA256 signature verification, as well as traditional REST polling for full state syncs. Writes to payroll inputs such as bonuses and deductions are supported. Deel has no vendor master or purchase order data.

What moves between them

The main flow is Deel to SYSPRO. After each payroll period, ml-connector reads Deel payroll cost allocations and employee records, either via webhook push (for real-time updates) or scheduled API polling, and writes the labor cost journals into SYSPRO's GL accounts, allocated to the matching SYSPRO cost centers. Reference data such as cost centers and GL account mappings are defined once and reused for every payroll cycle. Cost allocations are posted only; ml-connector never writes payroll data back into Deel.

How ml-connector handles it

ml-connector stores both credential sets encrypted and manages SYSPRO's session token refresh on logoff or timeout by re-authenticating via the Utilities/Logon endpoint. On the Deel side, it handles OAuth2 token expiry (30 days) with automatic refresh using the long-lived refresh token (90 days), and stores API tokens securely. For SYSPRO writes, it uses the e.net REST layer with the session token; OData is polled for read-only lookups of GL masters and cost dimensions. Deel webhooks are preferred for real-time payroll events with HMAC-SHA256 verification, but scheduled polling is supported as a fallback. Rate limits from Deel return HTTP 429; ml-connector backs off with exponential jitter and retries. Cost centers from Deel are matched to SYSPRO cost masters by code or name, so every GL journal line lands on a valid account. Every record carries a full audit trail and can be replayed if a downstream GL post fails.

A real-world example

A mid-sized discrete manufacturer with plants in two countries runs SYSPRO for ERP and Deel for global payroll and contractor management. Before the integration, the finance team exported payroll cost reports from Deel each period and manually allocated labor costs to SYSPRO GL accounts and cost centers in a spreadsheet, then uploaded batches through SYSPRO's GL entry screen. Month-end close involved chasing differences between Deel headcount and SYSPRO labor costs, and re-keying was a two-day manual process. With SYSPRO and Deel connected, each payroll run's cost allocations flow into SYSPRO's GL automatically, allocated to the correct plant and department cost centers, and the manual upload step is gone. Month-end close starts with labor costs already posted and reconciled.

What you can do

  • Post Deel payroll cost allocations into SYSPRO's general ledger on a schedule, mapped to GL accounts and cost centers.
  • Receive real-time payroll and employee events from Deel via webhook, with HMAC-SHA256 signature verification.
  • Authenticate SYSPRO with session token refresh via Utilities/Logon, and Deel with OAuth2 token refresh and API bearer tokens.
  • Match Deel cost centers to SYSPRO cost masters so payroll allocations land on valid GL dimensions.
  • Retry on rate limits, manage token expiry, and maintain a full audit trail on every GL posting.

Questions

Which direction does data move between SYSPRO and Deel?
The main flow is Deel into SYSPRO. Payroll cost allocations and employee records move from Deel into SYSPRO's general ledger, mapped to the correct GL accounts and cost centers. Reference data such as cost center definitions are aligned once and reused. SYSPRO GL postings are read-only; ml-connector does not write payroll data back into Deel.
How does ml-connector handle SYSPRO's session token and Deel's token refresh?
ml-connector stores SYSPRO credentials encrypted and manages session token expiry by detecting logoff or timeout, then re-authenticating via the Utilities/Logon endpoint. On the Deel side, it tracks OAuth2 access token expiry (30 days) and automatically refreshes using the long-lived refresh token (90 days). API tokens are stored securely and do not expire.
Does ml-connector support Deel webhooks or does it poll SYSPRO and Deel?
ml-connector prefers Deel webhooks for real-time payroll events with HMAC-SHA256 signature verification, since SYSPRO publishes no webhooks. It falls back to scheduled polling of Deel's API if webhooks are unavailable. SYSPRO is always polled for GL and cost master reads, using OData with HTTP Basic Auth.

Related integrations

Connect SYSPRO and Deel

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

Get started