ml-connector
AcumaticaDayforce

Acumatica and Dayforce integration

Acumatica runs your financials, distribution, and operations. Dayforce runs HR and payroll. Connecting the two keeps the general ledger in step with each payroll run and keeps headcount aligned across both systems. After every pay run, the payroll journal Dayforce produces posts into Acumatica's general ledger without re-keying, and new hires and terminations flow through so the ERP reflects the current workforce. ml-connector handles the different APIs on each side and moves the data on a schedule tied to your payroll calendar.

How Acumatica works

Acumatica Cloud ERP exposes vendors, AP bills, GL accounts, journal transactions, employees, and more through its contract-based REST API. Each instance runs at a customer-specific URL, and the endpoint version in the path must exactly match the running ERP release or the call returns a 404. Authentication is OAuth 2.0 via the built-in identity server, with password and client-credentials grants supported, and every field value in a request or response body is wrapped in a value object. Acumatica can push change events via Push Notifications using a shared-secret header rather than a signed payload, but the most reliable pattern is polling the LastModifiedDateTime filter, so finance records are read on a schedule.

How Dayforce works

Dayforce exposes employees, organizational units, jobs, positions, pay summaries, and pre-built reports through its RESTful Web Services API. Authentication is an OAuth 2.0 password grant against the Dayforce identity server using a dedicated web-services user, a fixed client id, and the customer's company namespace, and the bearer token expires after one hour. Dayforce has no native vendor, invoice, or GL account endpoints, so payroll journal data in a GL-ready format is pulled from the Reports API against a payroll journal report the customer configures in Dayforce. Dayforce offers no real-time outbound webhooks, so change detection uses date-range filter parameters on a poll cycle.

What moves between them

The main flow runs from Dayforce into Acumatica. After each pay run, ml-connector pulls the configured Dayforce payroll journal report and posts the earnings, taxes, and deductions into Acumatica as balanced GL journal transactions, mapped to the matching accounts and subaccounts. Employee records flow the same direction so Acumatica reflects Dayforce hires, terminations, and rehires. Reference data such as Dayforce org units, jobs, and positions is aligned to Acumatica GL dimensions so every payroll line lands on a valid account and branch. Dayforce holds no AP, invoice, or GL account data to receive, so ml-connector does not write financial documents back into Dayforce.

How ml-connector handles it

ml-connector stores both credential sets encrypted, obtains a Dayforce password-grant bearer token and refreshes it before the one-hour expiry, and runs an Acumatica OAuth session against the customer's version-locked endpoint URL so the path matches the running ERP release. Because Dayforce has no GL endpoint, payroll figures are read from the Reports API against a payroll journal report the customer sets up first, then written into Acumatica as JournalTransaction records with every field value wrapped as Acumatica requires. Both systems are pull-based, so ml-connector polls on a schedule tied to your payroll calendar, using Dayforce date-range filters and Acumatica LastModifiedDateTime to fetch only changed records. Org units, jobs, and positions are mapped to GL dimensions before any posting, so journal lines reference accounts and subaccounts that already exist. Rate limits return HTTP 429 on Acumatica and a tenant-wide cap on Dayforce, so the connector backs off and retries, and every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A regional healthcare services group with about 900 staff across several clinics runs Acumatica for financials and Dayforce for HR and payroll. Before the integration, payroll staff exported the journal from Dayforce each pay period and keyed the labor totals into Acumatica by hand, then spent the start of month-end close reconciling differences between clinic headcount and the labor accounts. With Acumatica and Dayforce connected, each pay run's journal posts into the Acumatica general ledger automatically, allocated to the right clinic cost center, and employee changes keep both systems aligned. Close starts with labor already reconciled and the manual re-keying step is gone.

What you can do

  • Post Dayforce payroll journal report data into Acumatica as balanced GL journal transactions after every pay run.
  • Keep Acumatica employee records aligned with Dayforce hires, terminations, and rehires.
  • Map Dayforce org units, jobs, and positions to Acumatica GL accounts and subaccounts so payroll lands on valid dimensions.
  • Bridge the Dayforce password-grant token and the Acumatica OAuth session against the version-locked endpoint URL.
  • Poll on a schedule tied to your payroll calendar, with 429-aware retries and a full audit trail on every record.

Questions

Which direction does data move between Acumatica and Dayforce?
The main flow is Dayforce into Acumatica. Payroll journal data and employee records move from Dayforce into Acumatica, while org units, jobs, and positions are aligned to Acumatica GL dimensions. Dayforce has no AP, invoice, or GL account modules, so ml-connector does not write financial documents back into Dayforce.
How does ml-connector get payroll journal data out of Dayforce?
Dayforce has no GL account or payroll journal REST endpoint, so the data is pulled from the Reports API against a payroll journal report the customer configures inside Dayforce. That report outputs earnings, taxes, and deductions with GL account codes and cost dimensions. ml-connector reads it after each pay run and posts it into Acumatica as journal transactions.
How does the integration handle authentication and Acumatica's version-locked URL?
ml-connector obtains a Dayforce bearer token using the password grant and refreshes it before the one-hour expiry, and it runs an OAuth session against Acumatica's identity server. It accepts the customer's full Acumatica instance URL and endpoint version so the path matches the running ERP release, since a mismatched version returns a 404.

Related integrations

Connect Acumatica and Dayforce

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

Get started