ml-connector
QuickBooks OnlineADP

QuickBooks Online and ADP integration

QuickBooks Online runs accounting and general ledger for small-to-mid-market businesses. ADP runs payroll and HR. Connecting the two keeps your labor costs and employee data synchronized without manual re-entry. Payroll GL documents from ADP post into QuickBooks Online automatically on your pay schedule, allocated to the correct departments and accounts. Worker records in ADP stay aligned with QuickBooks Online so your employee headcount is always accurate.

How QuickBooks Online works

QuickBooks Online exposes vendors, customers, employees, items, accounts, departments, bills, invoices, journal entries, and purchase orders through the QuickBooks Online Accounting API v3 via REST over HTTPS, secured with OAuth 2.0 authorization codes. Access tokens expire hourly; refresh tokens rotate every 24 to 26 hours. Both webhooks and polling are available. Webhooks fire on Create, Update, Delete, Merge, and Void operations for most entities and contain only the entity ID and operation type, so full records must be fetched separately. A CDC endpoint maintains 30 days of change history for polling. All creates and updates require the full object representation with a SyncToken for concurrency control.

How ADP works

ADP provides workers, payroll processing, pay distributions, general ledger documents, and validation tables through ADP API Central, a paid REST/JSON add-on secured by OAuth 2.0 client credentials combined with mandatory mutual TLS client certificates. Every API call requires the mTLS certificate at the TLS layer in addition to OAuth credentials. Webhooks are supported for worker hire, termination, rehire, legal name and address changes, marital status changes, and pay data input events, with automatic retries at 1-minute intervals for the first 10 attempts and then 6-hour intervals. OData query parameters are supported on collection endpoints. General ledger documents are read-only; all mutations go through dedicated event endpoints. Rate limits are per-node across a 4-node cluster, returning HTTP 429 when exceeded.

What moves between them

Labor cost journals flow from ADP into QuickBooks Online after each payroll run. These GL documents are mapped to QuickBooks Online accounts and departments so payroll is allocated to the correct cost centers. Worker records including hires, terminations, and rehires flow from ADP into QuickBooks Online to keep employee count and status synchronized. Cost centers and departments are validated bidirectionally so payroll allocations land on accounts that exist in both systems. GL documents are read-only in ADP, so ml-connector reads them from ADP and posts them into QuickBooks Online but does not write financial entries back to 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, obtaining and refreshing OAuth tokens for each system independently. QuickBooks Online tokens expire hourly and refresh tokens rotate frequently, so ml-connector handles the rotation and re-authentication transparently. ADP client certificates have expiry dates tracked by the system to alert on renewal before outages occur. The integration polls both systems on a schedule aligned with your payroll calendar, reading ADP's general ledger documents and worker events through both webhooks and polling for reliability. When ADP returns HTTP 429 rate limits, ml-connector backs off exponentially and retries across all four gateway nodes. Cost centers and departments are mapped first, validating that every payroll journal line references an account and department that already exists in QuickBooks Online, preventing orphaned GL entries. Every record is audited with full direction, timestamp, and payload, and any failed posting can be replayed.

A real-world example

A mid-sized services company runs QuickBooks Online for accounting and payroll processing, and uses ADP Workforce Now for HR and payroll across three office locations. Before integration, the accounting team manually exported payroll registers from ADP every two weeks and entered labor cost totals into QuickBooks Online journal entries by hand, often with errors or timing lags that made month-end close difficult. With QuickBooks Online and ADP connected, each payroll run's GL documents flow automatically into QuickBooks Online and allocate to the correct office departments. Employee hires and terminations in ADP sync to QuickBooks Online immediately, so the headcount in payroll and the labor accounts in the ledger stay in agreement, and month-end close no longer requires chasing manual entry errors.

What you can do

  • Post ADP payroll general ledger documents into QuickBooks Online accounts and departments after each payroll run.
  • Keep QuickBooks Online employee records aligned with ADP hires, terminations, and rehires.
  • Validate cost centers and departments in both directions so payroll allocations land on valid accounts.
  • Authenticate ADP with OAuth 2.0 and the required mutual TLS client certificate, and QuickBooks Online with OAuth refresh token rotation.
  • Poll on a schedule tied to your payroll calendar, with exponential backoff on rate limits and a full audit trail on every record.

Questions

Which direction does data move between QuickBooks Online and ADP?
Payroll GL documents and worker records flow from ADP into QuickBooks Online. Cost centers and departments are validated in both directions so payroll lands on the correct accounts. General ledger documents are read-only in ADP, so ml-connector does not write financial entries back into payroll.
How does the integration handle ADP's mutual TLS certificate requirement?
ADP requires a client certificate at the TLS layer on every API call in addition to OAuth 2.0 credentials. ml-connector stores the certificate encrypted, presents it on each request, and tracks its expiry date to ensure renewal happens before the certificate expires and causes an outage.
What happens when ADP rate limits are hit?
ADP rate limits are per-node across its 4-node cluster and return HTTP 429 when exceeded. ml-connector detects the 429 response and backs off with exponential delays, then retries the request, ensuring payroll GL documents eventually post even during traffic spikes.

Related integrations

Connect QuickBooks Online and ADP

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

Get started