ml-connector
IFS CloudPaylocity

IFS Cloud and Paylocity integration

IFS Cloud runs your manufacturing, finance, and supply chain. Paylocity runs payroll and employee records for your mid-market workforce. Connecting them keeps your labor costs aligned with your general ledger and your employee roster in sync across both systems. New hires and terminations in Paylocity flow into IFS so headcount matches, and the payroll journals Paylocity produces after each pay run post into IFS GL vouchers without manual re-keying. ml-connector bridges the two REST APIs and handles the different OAuth2 credential flows on each side.

How IFS Cloud works

IFS Cloud is an enterprise ERP platform covering manufacturing, asset management, finance, and procurement. It exposes GL accounts, journal entries (VoucherSet), supplier invoices (PostingProposalHeadSet), purchase orders, and accounting dimensions through OData v4 REST APIs at a tenant-specific URL (https://<tenant>.ifs.cloud). Authentication uses OAuth 2.0 client credentials with a token lifetime of approximately 60 minutes. IFS Cloud does not expose a standard webhook subscription API, so connector activity is read-only and pull-based. Page size limits are approximately 5000 elements per request, and the system enforces optimistic concurrency via ETag headers on mutations.

How Paylocity works

Paylocity is a cloud payroll and HR platform for mid-market US businesses, covering payroll, benefits, time and attendance, and talent management. It exposes Employee records, PayStatements, Earnings, Deductions, and company and location metadata through REST JSON APIs at https://api.paylocity.com/api/v2 (production) or sandbox endpoints. Authentication uses OAuth 2.0 client credentials with a 3600-second token lifetime. Paylocity supports both outbound webhooks for events (New Hire, Employee Change, Termination, Payroll Processed) with 24-hour retry periods and read-only polling via REST. Webhooks deliver event notifications with identifiers only; full record data must be fetched separately. Paylocity does not expose vendors, invoices, purchase orders, or GL account objects.

What moves between them

Employee records flow from Paylocity into IFS Cloud so the IFS customer or employee roster reflects Paylocity hires, terminations, and active status. Payroll earnings and deductions from Paylocity are summarized per cost center and posted into IFS GL vouchers after each payroll run, allocated to the correct GL accounts and company codes. The flow is one-directional (Paylocity into IFS); IFS employee or GL data does not flow back to Paylocity. Sync runs on a schedule tied to your payroll calendar, typically daily or weekly depending on payroll frequency.

How ml-connector handles it

ml-connector stores both credential sets encrypted and manages two separate OAuth2 flows: one client-credentials grant to IFS Cloud using the tenant-specific token endpoint, and another to Paylocity using its shared gateway endpoint. For reads, it polls Paylocity for Employee, Earning, and Deduction data via REST and IFS for the chart of accounts and GL posting defaults via OData v4, using filter parameters on modified timestamps to retrieve only changed records since the last run. For writes, it validates each Paylocity employee against IFS company codes and cost centers, builds a single GL voucher per pay run summarizing all earnings allocated to the correct IFS GL accounts, and commits the voucher with the required ETag header to satisfy IFS optimistic concurrency. If Paylocity webhooks are enabled, ml-connector registers for Payroll Processed and Employee Change events to trigger synchronization rather than waiting for the scheduled poll. Retries use exponential backoff with jitter if either API returns transient errors, and every record carries a full audit trail.

A real-world example

A mid-sized industrial manufacturer runs IFS Cloud ERP for production, procurement, and finance across three plants in different US states, and uses Paylocity for payroll and HR for 450 employees. Before the integration, the finance team received a payroll register from Paylocity after each pay cycle, manually allocated wages and taxes across plant cost centers, and entered journal entries into IFS by hand, a process that took two days per month and frequently introduced allocation errors. With Paylocity and IFS Cloud connected, the payroll run automatically posts to IFS GL with earnings allocated to each plant's cost center, the employee roster in IFS stays synchronized with Paylocity hires and terminations, and month-end close begins with labor costs already reconciled and no manual journal entry step.

What you can do

  • Post Paylocity payroll earnings and deductions into IFS Cloud GL vouchers after every pay run, allocated to the correct cost centers and GL accounts.
  • Keep IFS employee records synchronized with Paylocity hires, terminations, and status changes.
  • Map Paylocity cost center and department data to IFS company codes and accounting dimensions so payroll allocations land on valid GL accounts.
  • Authenticate both systems independently using their respective OAuth2 client credentials flows and manage token refresh transparently.
  • Poll on a schedule tied to your payroll calendar and receive optional webhook events from Paylocity to trigger immediate synchronization.

Questions

Which direction does data move between IFS Cloud and Paylocity?
The main flow is from Paylocity into IFS Cloud. Employee records, earnings, and deductions from Paylocity are synchronized into IFS, with payroll totals posted to GL vouchers allocated to the correct cost centers. IFS GL and employee data do not flow back to Paylocity. Paylocity is read-only from the IFS perspective.
How does the integration handle the two different OAuth2 flows?
ml-connector stores both sets of credentials encrypted and manages separate client-credentials grants to each system. IFS Cloud requires the tenant-specific token endpoint (https://<tenant>.ifs.cloud/auth/realms/<SystemID>/protocol/openid-connect/token), while Paylocity uses a shared gateway endpoint. Token refresh is handled transparently on each API call.
Why does the integration post a single GL voucher for all earnings instead of one per employee?
Posting one consolidated payroll journal per pay cycle is standard accounting practice and reduces GL clutter. The voucher is allocated line-by-line by cost center and GL account so each plant or department's labor costs are posted to the correct account. Individual employee detail is preserved in the audit trail and available via API for reconciliation.

Related integrations

Connect IFS Cloud and Paylocity

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

Get started