ml-connector
AcumaticaADP

Acumatica and ADP integration

Acumatica runs finance, distribution, and operations. ADP runs payroll and HR. Connecting the two keeps your general ledger and your workforce in agreement without re-keying. After each payroll run, the GL document ADP produces posts into Acumatica as a balanced journal transaction, allocated to the right accounts and subaccounts. New hires and terminations in ADP keep the Acumatica employee list current, and ml-connector handles the very different authentication and data shapes on each side.

How Acumatica works

Acumatica Cloud ERP exposes vendors, bills, purchase orders, payments, GL accounts, journal transactions, and employees through its Contract-Based REST API. Each instance has its own URL and a version-locked endpoint path, such as /entity/Default/24.200.001/, that must match the customer's ERP release or the call returns 404. All field values are wrapped in value objects. Authentication is OAuth 2.0 through the built-in OpenID Connect server, or a legacy login session cookie. Acumatica offers Push Notifications, but the common and reliable pattern is polling on LastModifiedDateTime with OData $top and $skip.

How ADP works

ADP exposes workers, pay data input, pay distributions, validation tables for cost centers and departments, and general ledger documents through ADP API Central, a paid REST add-on that also supports OData query parameters. Every call requires OAuth2 client credentials and a mutual TLS client certificate, and the TLS handshake fails without the certificate. Writes go through event endpoints such as /events/hr/v1/worker.hire rather than direct field updates, and the GL documents ADP generates after payroll are read-only. ADP can also push worker and payroll events to a registered endpoint.

What moves between them

The main flow runs from ADP into Acumatica. After each payroll run, ml-connector reads ADP's general ledger documents and posts the labor cost entries into Acumatica as journal transactions, mapped to the matching GL accounts and subaccounts. Worker records flow the same direction so the Acumatica employee list reflects ADP hires, terminations, and rehires. Cost centers and departments are aligned so payroll allocations land on valid Acumatica subaccounts. ADP GL documents are read-only, so ml-connector never writes financial entries back into payroll.

How ml-connector handles it

ml-connector stores both credential sets encrypted and presents the ADP client certificate at the TLS layer on every request, re-calling the ADP token endpoint when a call returns 401. On the Acumatica side it accepts the full instance URL and the exact endpoint version per customer, since a version mismatch returns 404, and it wraps every field value in the required value object so writes do not fail with a 400. ADP GL documents read after each run become balanced journal transactions in Acumatica, with cost centers mapped to subaccounts first so every line references a dimension that already exists. Because Acumatica cloud is reliably polled, it reads ADP GL documents and worker data on a schedule tied to your payroll calendar, and can also receive ADP event notifications where enabled. Both sides return HTTP 429 under load, so ml-connector backs off with jitter, and it tracks the ADP certificate expiry so a renewal does not become an outage.

A real-world example

A mid-sized distribution company with around 300 employees runs Acumatica Cloud ERP for inventory, purchasing, and finance, and uses ADP Workforce Now for payroll across a warehouse and two branch offices. Before the integration, accounting exported the payroll register from ADP every pay period and typed the labor totals into Acumatica by hand, then spent the first days of month-end close reconciling headcount against the labor accounts in the ledger. With Acumatica and ADP connected, each payroll run's GL document posts into Acumatica automatically, allocated to the subaccount for each location, and worker changes keep both systems aligned. Close starts with the labor accounts already reconciled, and the manual re-keying is gone.

What you can do

  • Post ADP payroll general ledger documents into Acumatica as balanced journal transactions after every pay run.
  • Keep the Acumatica employee list aligned with ADP hires, terminations, and rehires.
  • Map ADP cost centers and departments to Acumatica accounts and subaccounts so payroll lands on valid dimensions.
  • Authenticate ADP with OAuth2 and its required mutual TLS certificate, and Acumatica with its version-locked tenant login.
  • Poll on a schedule tied to your payroll calendar, with retries, error replay, and a full audit trail on every record.

Questions

Which direction does data move between Acumatica and ADP?
The main flow is ADP into Acumatica. Payroll GL documents and worker records move from ADP into Acumatica, while cost centers and departments are aligned so allocations match. ADP general ledger documents are read-only, so ml-connector does not write financial entries back into payroll.
Does ADP's mutual TLS certificate need special setup?
Yes. ADP requires a client certificate at the TLS layer on every call, in addition to OAuth2 client credentials, and the handshake fails without it. ml-connector stores the certificate encrypted, presents it on each request, and tracks its expiry so a renewal is handled before it can cause an outage.
How does the integration handle Acumatica's version-locked URL and field wrapping?
ml-connector accepts the full Acumatica instance URL and the exact endpoint version per customer, since a version mismatch returns a 404. It also wraps every field value in the value object Acumatica requires, so journal transactions post without a 400 error. Because Acumatica cloud is reliably polled, reads run on a schedule tied to your payroll calendar.

Related integrations

Connect Acumatica and ADP

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

Get started