ml-connector
MYOBUKG

MYOB and UKG integration

MYOB handles accounting and finance across Australian and New Zealand SMEs. UKG handles global payroll and HR. Connecting the two keeps your MYOB contacts and general ledger in sync with UKG employee records and payroll runs. Employee changes in UKG flow into MYOB contacts, and payroll GL journals that UKG produces after each pay cycle post into MYOB's general ledger without manual re-entry. ml-connector manages the different authentication schemes on both sides and moves the data on a schedule you control.

How MYOB works

MYOB Business API (AccountRight Live API v2) exposes contacts, suppliers, purchases, bills, invoices, inventory items, GL accounts, and general journal entries through REST endpoints with OData v3 query parameters. Cloud instances use production base URLs; desktop files are local-only. MYOB requires three headers on every call: an OAuth2 bearer token (20-minute expiry), an API key, and Base64-encoded company file credentials (username:password). The API enforces an 8 request-per-second rate limit and 1 million requests per day per API key. MYOB has no webhook support, so changes are detected by polling with OData $filter on LastModified timestamps.

How UKG works

UKG exposes employee master data, compensation, pay statements, cost centers, and GL payroll exports through REST endpoints split across /personnel/v1, /payroll/v1, and legacy /services (SOAP) namespaces. Tenant hostname is datacenter-assigned. UKG supports two authentication paths: HTTP Basic Auth plus two custom API key headers (US-CUSTOMER-API-KEY and US-USER-API-KEY) for core APIs, or OAuth2 client_credentials with 1-hour token expiry for Webhooks Premium and platform APIs. UKG provides webhooks with HMAC SHA-256 signatures and 14-day retention, or customers can poll the /personnel/v1/employees/changed delta endpoint. UKG Ready (mid-market) uses a different API surface at a separate hostname.

What moves between them

The main flow runs from UKG into MYOB. After each pay run, ml-connector reads UKG payroll GL export data and posts the journals into MYOB's general ledger, mapped to the matching MYOB GL accounts and cost centers. Employee records flow the same direction so MYOB contacts reflect UKG hires, terminations, and status changes. Cost centers, departments, and pay groups are aligned in both directions so payroll allocations map to valid MYOB dimensions. GL journals are typically read-only in UKG, so ml-connector does not write financial entries back to the payroll system.

How ml-connector handles it

ml-connector stores both credential sets encrypted. For MYOB, it refreshes the OAuth2 bearer token every 15 minutes (before the 20-minute expiry) and supplies the API key and Base64 company file credentials on every request. For UKG, it chooses between HTTP Basic Auth with custom headers or OAuth2 client_credentials based on the customer's UKG tier, and refreshes OAuth tokens after 50 minutes (before the 1-hour expiry). ml-connector polls MYOB using OData $filter on LastModified to fetch changes since the last sync, respecting the 8 request-per-second rate limit by backing off on 429 responses. For UKG, it listens to webhooks where enabled or falls back to polling the /personnel/v1/employees/changed endpoint. Before posting payroll GL to MYOB, it validates that cost centers exist in MYOB as GL dimensions, and retries failed journal posts with exponential backoff. UKG Ready customers are routed to their separate API hostname. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized professional services firm in Australia uses MYOB for accounting and GL management, and UKG for global HR and payroll across three offices. Before the integration, the finance team received a payroll register from UKG each pay cycle and manually entered labor cost allocations into MYOB by cost center, a process that took 4 hours and often introduced discrepancies. With MYOB and UKG connected, each pay run's GL journal flows into MYOB automatically, already allocated to the correct cost centers for each office. Employee changes such as hires, role changes, and terminations in UKG immediately update MYOB contacts, so the org chart stays in sync. Month-end close is faster because labor costs are already posted and cost center allocations are validated before the journals land in the GL.

What you can do

  • Sync UKG employee master records into MYOB contacts, keeping headcount and employee data aligned across systems.
  • Post UKG payroll GL journals into MYOB's general ledger after each pay run, allocated to the correct cost centers and accounts.
  • Map cost centers and departments between UKG and MYOB so payroll allocations land on valid GL dimensions.
  • Handle MYOB's OAuth2 20-minute token refresh and company file authentication, plus UKG's dual auth schemes (Basic Auth or OAuth2) with token caching.
  • Poll MYOB with OData $filter on LastModified and UKG webhooks or delta endpoints, with retries on rate limits and a full audit trail on every record.

Questions

How does ml-connector handle MYOB's company file credentials and OAuth token expiry?
ml-connector stores both the OAuth2 bearer token and the Base64-encoded company file username and password encrypted. It refreshes the OAuth2 token every 15 minutes (before its 20-minute expiry) and includes all three required headers (Authorization, x-myobapi-key, and x-myobapi-cftoken) on every API call. The company file token does not expire, so ml-connector supplies it for the lifetime of the customer integration.
Why does ml-connector poll MYOB instead of using webhooks?
MYOB has no webhook support on the MYOB Business API. ml-connector uses OData $filter on the LastModified timestamp to detect changes since the last sync, respecting MYOB's 8 request-per-second rate limit by backing off when the API returns 429 (Too Many Requests). This approach ensures no changes are missed while staying within rate limits.
How are cost centers and departments kept in sync between MYOB and UKG?
ml-connector syncs cost center reference data in both directions before posting payroll GL. It validates that every cost center in a UKG payroll journal exists as a GL account or dimension in MYOB before the journal is posted. If a cost center is missing, the job is retried until the dimension is created in MYOB, ensuring payroll allocations always land on valid accounts.

Related integrations

Connect MYOB and UKG

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

Get started