ml-connector
IFS CloudDeel

IFS Cloud and Deel integration

IFS Cloud runs finance, procurement, and supply chain across your enterprise. Deel handles global payroll, employee contracts, and HRIS. Connecting them keeps your general ledger and headcount in sync with payroll movements. Payroll GL documents and employee cost data from Deel post into IFS Cloud's general ledger without re-keying, mapped to cost centers and GL accounts. ml-connector manages the OData complexity, token refresh, and audit trail on every record.

How IFS Cloud works

Deel is a global workforce platform covering payroll, HR, employee contracts, and compliance across 150+ countries. It exposes contracts, people, invoices, payslips, payroll inputs, and worker-level cost data through REST JSON APIs. Deel supports OAuth2 access tokens (30-day lifetime with single-use 90-day refresh tokens) or bearer API tokens issued at organization or personal scope. The platform also publishes real-time webhooks for contract creation, employee updates, terminations, and other business events, with HMAC-SHA256 signature verification. Idempotency-Key headers are supported on POST and PATCH requests.

How Deel works

IFS Cloud is an enterprise ERP platform covering manufacturing, finance, procurement, supply chain, and asset management, exposed through OData v4 REST APIs via the IFS OData Provider. Each customer instance has a tenant-specific URL and authenticates with OAuth2 Client Credentials, requiring client_id, client_secret, and openid scope. Tokens live approximately 60 minutes. IFS Cloud enforces optimistic concurrency control via ETag and If-Match headers on mutations; every record update requires reading the current ETag first. There is no self-registerable webhook API, so integration relies on polling. Page sizes must stay under 5000 elements, and the system rate limits at roughly 1000 requests per minute. Company codes are mandatory on all financial entities. Projection names are version-specific and may change between IFS Cloud releases.

What moves between them

Payroll data flows primarily from Deel into IFS Cloud. Employee cost data, invoices, and GL postings from Deel's payroll runs are read via REST API and mapped into IFS Cloud journal entries (VoucherSet), GL accounts (AccountSet), and cost center dimensions (CodePartValueSet). ml-connector polls Deel on a schedule (daily, weekly, or tied to your payroll cycle) rather than waiting for webhooks, though Deel webhooks can trigger manual syncs if configured. Employee contracts and people data from Deel are synced to keep IFS Cloud headcount dimensions aligned. GL account mappings are bidirectional so Deel's cost categorization lands on valid IFS Cloud accounts. No data flows back from IFS Cloud to Deel; GL postings are read-only in Deel.

How ml-connector handles it

ml-connector stores Deel OAuth2 credentials encrypted and refreshes the bearer token every 25 minutes to stay ahead of the 30-day expiry. For IFS Cloud, it accepts the customer's tenant URL and client credentials, authenticates with the OAuth2 Client Credentials grant, and validates all entity references (GL accounts, cost centers, company codes) against the customer's configured IFS Cloud projection. When reading Deel payroll data, ml-connector respects the Idempotency-Key header to prevent duplicate processing. When writing to IFS Cloud, it reads the current ETag for each record, applies the mutation with the If-Match header, and retries with exponential backoff if it receives a 429 (rate limit) or 412 (ETag conflict). Deel webhooks, if enabled, can trigger ad-hoc syncs; the polling schedule handles the base automation. Every record carries a full audit trail of its source ID, timestamp, and mutation result, and failed records can be replayed. IFS Cloud's page-size limits mean large payroll batches are split into chunks under 5000 elements.

A real-world example

A global services firm runs IFS Cloud for finance and procurement and uses Deel for payroll and contractor compliance across 12 countries. Before the integration, payroll journals were exported from Deel monthly and manually re-entered into IFS Cloud's general ledger by cost center, a process that often surfaced reconciliation gaps during month-end close. Employee counts in IFS Cloud also drifted from Deel as new contractors were onboarded. With IFS Cloud and Deel connected, each payroll cycle's GL postings flow automatically into the ledger split by cost center and country, and employee contract data keeps headcount synchronized. Month-end close starts with the payroll accounts already balanced, and the finance team focuses on exceptions instead of data entry.

What you can do

  • Post payroll GL postings from Deel into IFS Cloud's general ledger, allocated to the correct cost centers and GL accounts.
  • Keep IFS Cloud employee and contractor headcount aligned with Deel contract lifecycle events (creation, updates, terminations).
  • Map Deel cost categorizations and company/country dimensions to IFS Cloud GL accounts and CodePartValueSet dimensions.
  • Authenticate Deel with OAuth2 bearer tokens or personal API tokens, and IFS Cloud with OAuth2 Client Credentials, handling token refresh and expiry.
  • Poll Deel on your payroll calendar with automatic retries, ETag concurrency handling, and a full audit trail on every GL posting.

Questions

Which direction does data move between IFS Cloud and Deel?
The main flow is Deel into IFS Cloud. Payroll GL postings, invoices, and employee cost data move from Deel into IFS Cloud's general ledger and dimension tables, mapped to cost centers and GL accounts. Employee contract and people data align in one direction so IFS Cloud headcount reflects Deel's current workforce state. GL postings are read-only in Deel, so ml-connector does not write financial entries back to payroll.
How does the integration handle IFS Cloud's OData complexity and ETag requirements?
ml-connector accepts the customer's tenant-specific IFS Cloud URL and stores OAuth2 client credentials encrypted. When reading data, it respects OData paging and $filter parameters. When writing GL postings (journal entries), it reads the current ETag for each VoucherSet record, applies the PATCH or POST with the If-Match header, and retries on 412 (ETag conflict) or 429 (rate limit). Company codes are validated at configuration time against the customer's IFS Cloud instance.
Does Deel webhook support trigger the integration, or does it rely on polling?
Polling is the base sync, scheduled on your payroll calendar (daily, weekly, or after-payroll-run). Deel webhooks, if enabled and registered with ml-connector, can trigger immediate ad-hoc syncs for urgent updates such as terminations or emergency adjustments. The polling schedule ensures no data is missed if a webhook fires or fails.

Related integrations

Connect IFS Cloud and Deel

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

Get started