ml-connector
VismaADP

Visma and ADP integration

Visma.net ERP manages finance and accounting across the Nordic region. ADP runs payroll and workforce across your organization. Connecting them keeps your headcount and general ledger aligned. Worker hires, terminations, and rehires in ADP stay synchronized with Visma departments and cost centers, and the general ledger documents ADP generates after each payroll run post into Visma's accounts without manual re-entry. ml-connector handles the different authentication models and data structures on each side.

How Visma works

Visma.net ERP exposes suppliers, purchase orders, supplier invoices, customers, GL accounts, cost centers, dimensions, dimensions, employees, and journal transactions through REST APIs, authenticated via OAuth 2.0 through Visma Connect with client credentials. All API calls require the ipp-company-id header and a valid tenant_id. Webhooks are supported for entity change notifications, but webhook delivery is one-time only with no automatic retry, so polling via lastModifiedDateTime query parameters is used as the reliable pull method. ETag/If-Match headers are required for optimistic locking on write operations.

How ADP works

ADP exposes workers, payroll processing, pay distributions, general ledger documents, work assignments, and validation tables through REST APIs over mutual TLS. Every request requires OAuth 2.0 client credentials and a valid client certificate at the TLS layer; the handshake fails without the certificate. ADP sends event notifications for worker hire, termination, rehire, and payroll changes to a registered webhook endpoint, with retries at 1-minute intervals for 10 attempts then 6-hour intervals for 10 more. General ledger documents generated by payroll processing are read-only and cannot be written back to ADP. Rate limits are per-node in ADP's cluster and return HTTP 429 when exceeded.

What moves between them

The main flow runs from ADP into Visma. After each payroll cycle, ml-connector polls ADP for general ledger documents and payroll processing records and posts the labor cost journals into Visma's general ledger, mapped to the matching GL accounts and cost centers. Worker records flow the same direction so Visma headcount reflects ADP hires, terminations, and rehires. Cost centers, departments, and job codes are kept in sync across both directions so payroll allocations land on valid Visma dimensions. GL documents are read-only in ADP, so ml-connector never writes financial entries back into payroll.

How ml-connector handles it

ml-connector stores the ADP client certificate and Visma OAuth credentials encrypted and presents the certificate at the TLS layer on every ADP request, refreshing the OAuth token when a call returns 401. On the Visma side, it uses the tenant_id and ipp-company-id header to route requests to the correct company. Because ADP webhooks have retries but Visma webhooks do not, ml-connector polls ADP on a schedule tied to your payroll calendar to ensure reliable delivery, and it can also listen for ADP event notifications where enabled. Cost centers and departments are mapped first, so every payroll journal line references a GL account and cost center that already exist in Visma. ADP rate limits return HTTP 429 per gateway node, so ml-connector backs off with exponential retry, and it tracks the ADP certificate expiry ahead of time so renewal does not cause an outage. Visma's ETag requirement on PUT operations is handled with If-Match headers to prevent concurrent overwrites. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized Nordic manufacturing firm runs Visma.net ERP for accounting, procurement, and project finance, and uses ADP Workforce Now for payroll across three locations. Before the integration, the accounting team exported payroll registers from ADP monthly and manually entered labor totals into Visma's GL, then spent days reconciling headcount differences between HR and the labor accounts. With Visma and ADP connected, each payroll cycle's GL documents flow into Visma automatically, allocated to the cost center for each production site, and worker changes keep headcount synchronized. Month-end close starts with labor accounts already reconciled, and the manual re-keying step is eliminated.

What you can do

  • Post ADP payroll GL documents into Visma's general ledger after each payroll cycle, allocated to the correct cost centers and GL accounts.
  • Keep Visma headcount aligned with ADP worker hires, terminations, and rehires.
  • Map ADP cost centers, departments, and job codes to Visma GL dimensions and subaccounts so payroll allocations land on valid accounts.
  • Authenticate with ADP mutual TLS certificates and OAuth 2.0, and Visma OAuth 2.0 with company-level tenant routing.
  • Poll ADP on a payroll-calendar schedule with retry backoff and full audit trail on every record.

Questions

Which direction does data move between Visma and ADP?
The main flow is from ADP into Visma. Payroll GL documents and worker records move from ADP into Visma, while cost centers, departments, and job codes are kept in sync in both directions. ADP general ledger documents are read-only, so ml-connector does not write financial entries back into payroll.
Does ADP's mutual TLS requirement need special handling?
Yes. ADP requires a client certificate at the TLS layer on every call in addition to OAuth 2.0 credentials. ml-connector stores the certificate encrypted, presents it on each connection, tracks its expiry date, and triggers renewal before it causes an outage.
How does the integration handle Visma's lack of webhook retries and different tenant routing?
Visma webhooks are one-time delivery with no automatic retry, so ml-connector polls ADP on a schedule tied to your payroll calendar for reliable pull. It also uses Visma's required ipp-company-id header and tenant_id to route requests to the correct company.

Related integrations

Connect Visma and ADP

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

Get started