ml-connector
Exact OnlinePaylocity

Exact Online and Paylocity integration

Exact Online manages your accounting, GL accounts, and cost centers. Paylocity runs payroll and HR. Connecting the two ensures your general ledger reflects labor costs by department without manual re-entry. Employee changes in Paylocity flow into Exact Online, and payroll GL documents from each pay run post to the correct cost centers and GL accounts. ml-connector bridges the two OAuth systems and handles the region-specific URLs and division IDs that Exact Online requires.

How Exact Online works

Exact Online is a cloud ERP platform accessible via REST OData v3 APIs across region-specific base URLs (Netherlands, Belgium, UK, Germany, France, Spain, USA). It authenticates with OAuth 2.0 Authorization Code Grant, with 10-minute access token lifetimes and 30-day rotating refresh tokens. Division IDs must be fetched first and appended to every API path. Key entities include GL Accounts, Cost Centers, Journal Entries, Transaction Lines, Accounts, and Employees. Exact Online supports webhooks for a broad set of resources via HTTP POST with HMAC-SHA256 signature validation, but webhook payloads contain only entity keys - full data must be fetched separately via REST. Related entities cannot be expanded in a single call ($expand is unsupported), so references must be fetched in separate requests.

How Paylocity works

Paylocity is a cloud HCM and payroll platform accessed through REST APIs at https://api.paylocity.com/api/v2 for production. It uses OAuth 2.0 client credentials flow with 3600-second token lifetimes. Key entities include Employee, PayStatement, Deduction, Earning, WorkLocation, and Position. Paylocity supports webhooks for events including New Hire, Employee Change, Termination, and Payroll Processed, delivered as HTTPS POST with 30-minute retries for up to 24 hours. Like Exact Online, webhook payloads carry identifiers only and require follow-up API calls to fetch full record data. Paylocity has no purchase order, invoice, or GL account entities - it is payroll and HR only.

What moves between them

Employee records and payroll-related data flow from Paylocity to Exact Online. After each payroll run, ml-connector reads employee change events and pay statement summaries from Paylocity and posts the corresponding labor cost allocations into Exact Online's general ledger as journal entries, allocated to the correct cost centers and GL accounts. Employee additions, terminations, and role changes sync to keep Exact Online headcount aligned with Paylocity. Cost centers and departments are validated in Exact Online first to ensure every payroll posting lands on a valid account. The integration polls Paylocity on a payroll calendar schedule and also subscribes to Exact Online webhooks for GL account and cost center updates.

How ml-connector handles it

ml-connector stores both credential sets encrypted. For Paylocity, it uses the OAuth 2.0 client credentials flow to obtain short-lived bearer tokens and refreshes them before expiry. For Exact Online, it uses the OAuth 2.0 Authorization Code Grant and manages the division ID (fetched via the /current/Me endpoint) for every API call to the correct region-specific base URL. Because Exact Online webhook payloads contain only entity keys and Paylocity webhook payloads carry identifiers only, ml-connector must fetch full employee and payroll records through separate REST calls after receiving notifications. It maps Paylocity employee records and pay statement lines to Exact Online GL accounts and cost centers, creating journal entries with the required GL account and cost center references. Cost centers are validated in advance so allocation failures do not occur downstream. Paylocity tokens are refreshed on a 3600-second cycle; Exact Online tokens are refreshed at 9-minute intervals to avoid the 10-minute expiry. If either OAuth endpoint returns 401, the token is immediately refreshed and the request is retried. Every record carries a full audit trail.

A real-world example

A mid-sized services firm runs Exact Online for accounting and GL management across multiple cost centers, and uses Paylocity for payroll across three locations. Before the integration, the accounting team exported pay registers from Paylocity monthly and manually entered labor totals into Exact Online by cost center, then spent time reconciling headcount differences during month-end close. With Exact Online and Paylocity connected, each payroll run's cost allocations flow into Exact Online as journal entries automatically allocated to the correct cost center, and employee changes keep the two systems aligned. Month-end close begins with labor accounts already reconciled, and manual re-entry is eliminated.

What you can do

  • Read employee records and payroll data from Paylocity and post labor cost allocations to Exact Online's general ledger, mapped to the correct GL accounts and cost centers.
  • Keep employee headcount and status synchronized between Paylocity and Exact Online so role changes, hires, and terminations flow automatically.
  • Validate cost centers and GL accounts in Exact Online before allocating payroll to ensure every journal entry references valid dimensions.
  • Handle OAuth 2.0 authentication for both systems, manage Exact Online's region-specific URLs and division IDs, and refresh tokens before expiry.
  • Poll Paylocity on a payroll calendar schedule, subscribe to Paylocity employee and payroll events, and listen for Exact Online webhook notifications with automatic retries.

Questions

Which direction does data move between Exact Online and Paylocity?
The main flow is Paylocity to Exact Online. Employee records, hires, terminations, and payroll GL allocations move from Paylocity into Exact Online. Cost centers and GL accounts are validated in Exact Online before allocations are posted. Paylocity has no GL or purchase order objects, so there is no reverse flow of financial data.
Why does ml-connector need to fetch full records separately after receiving webhooks?
Both Exact Online and Paylocity send webhook payloads containing only entity keys or identifiers, not full record data. ml-connector must make follow-up REST calls to retrieve the complete employee record, pay statement, or GL account details before it can map and allocate the data correctly. This design keeps webhook payloads small and allows the integration to use the same REST endpoints for both polling and webhook-driven flows.
How does ml-connector handle Exact Online's region-specific URLs and division IDs?
ml-connector fetches the division ID from the Exact Online /current/Me endpoint during authentication and stores it per customer. It then appends the division ID to every API path and routes requests to the correct region-specific base URL (Netherlands, Belgium, UK, Germany, France, Spain, or USA) based on the customer's configuration. This ensures all GL account, cost center, and journal entry operations target the right Exact Online instance.

Related integrations

Connect Exact Online and Paylocity

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

Get started