ml-connector
Sage IntacctWorkday HCM

Sage Intacct and Workday HCM integration

Sage Intacct runs your general ledger and cost structure. Workday HCM runs payroll and worker records. Connecting them keeps your headcount and labor costs in sync with your chart of accounts. When Workday posts a payroll GL journal, ml-connector moves it into Intacct and allocates it to the correct cost center. New hires, terminations, and compensation changes in Workday flow into Intacct so your labor accounts match your workforce state.

How Sage Intacct works

Sage Intacct exposes vendors, GL accounts, cost centers, and dimensions through a single XML gateway endpoint at https://api.intacct.com/ia/xml/xmlgw.phtml. Authentication is session-based: a credentials block containing senderId, senderPassword, companyId, userId, and userPassword is posted to the gateway, which returns a sessionid cached for 50 minutes. Intacct does not offer webhooks, so all reads are polling-based. HTTP 200 responses may contain application-level errors in XML errormessage tags rather than HTTP error codes, so response bodies must be parsed carefully. The XML gateway enforces serialization of all operations through a single POST connection, and forbidden control characters must be stripped before entities are written.

How Workday HCM works

Workday HCM surfaces workers, compensation, cost centers, GL accounts, and accounting journals via both REST API and SOAP Web Services API. REST uses OAuth 2.0 with a 60-minute access token and requires a non-expiring refresh token configured at the Integration System User level. SOAP uses WS-Security UsernameToken for simpler authentication but requires more complex XML constructs. The SOAP endpoint is required to read procurement and financial data such as GL accounts and journals. Workday does not offer native webhooks; all integrations poll on a schedule. Rate limiting returns HTTP 429 with a Retry-After header. API versions release twice per year (R1/R2), so integrations must track deprecations.

What moves between them

The primary flow moves labor cost journals and worker records from Workday into Sage Intacct. After each payroll run, ml-connector reads Workday's accounting journals, maps them to Intacct GL accounts and cost centers, and posts them into Intacct's ledger. Worker records from Workday flow the same direction so Intacct headcount reflects Workday hires, terminations, and compensation changes. Reference data such as cost centers and GL account dimensions flow both directions so payroll journal lines land on valid Intacct accounts. Cost centers and vendors are aligned first before any journal is posted.

How ml-connector handles it

ml-connector stores both credential sets encrypted and caches the Sage Intacct session for its full 50-minute lifetime, automatically refreshing it on the next call if it expires. On the Workday side, it manages the OAuth 2.0 refresh token lifecycle, requesting a new access token before the 60-minute expiry and falling back to SOAP WS-Security credentials for financial data that REST does not cover. Before any journal posts into Intacct, cost centers are validated to exist and GL accounts are matched; if validation fails, the journal is held and logged for manual review. ml-connector strips forbidden XML control characters from all string fields before the journal is serialized to the Intacct XML gateway. Workday rate limits (HTTP 429) trigger exponential backoff retries. Every record carries a unique control block identifier so Intacct deduplicates retried operations, and a complete audit trail is maintained on every sync.

A real-world example

A services consulting firm runs Sage Intacct for accounting and financial reporting and uses Workday HCM for payroll and workforce management across 15 cost centers. Before the integration, the finance team downloaded payroll GL journals from Workday each pay period and manually entered them into Intacct, mapping each line to the correct cost center and GL account. Headcount in Intacct was reconciled by hand at month-end against Workday's active worker list. With Sage Intacct and Workday HCM connected, payroll journals post automatically after each run, allocated to the correct cost centers and GL accounts, and worker changes keep both systems synchronized. Month-end close is faster because the labor accounts are already reconciled, and the manual re-keying of payroll journals is eliminated.

What you can do

  • Post Workday payroll GL journals into Sage Intacct's general ledger after every pay run, allocated to the correct cost centers.
  • Keep Sage Intacct headcount aligned with Workday hires, terminations, and compensation changes.
  • Validate cost centers and GL accounts before posting journals, and hold invalid records for manual review.
  • Manage Sage Intacct session refresh (50-minute cache) and Workday OAuth 2.0 access token refresh (60-minute expiry) seamlessly.
  • Map Workday GL accounts to Sage Intacct accounts and serialize XML correctly, handling forbidden control characters and Intacct's single-gateway architecture.

Questions

Which direction does data move between Sage Intacct and Workday HCM?
The main flow is Workday into Sage Intacct. Payroll GL journals and worker records move from Workday into Intacct, while cost centers and GL dimensions are validated and aligned in both directions. Sage Intacct's GL journals are read-only from Workday's perspective, so ml-connector does not write financial entries back into payroll.
How does ml-connector handle Sage Intacct's session timeout and XML gateway architecture?
ml-connector caches the Sage Intacct session for its full 50-minute lifetime and automatically refreshes it on the next API call if it expires. All operations serialize through Intacct's single XML gateway endpoint, and ml-connector strips forbidden control characters (such as C0 controls) from string fields before the XML is posted.
How does the integration manage Workday's OAuth token and API version changes?
ml-connector tracks the Workday OAuth 2.0 refresh token lifecycle, requesting a new access token before the 60-minute expiry to avoid interruptions. It monitors Workday's API version deprecations (R1/R2 releases twice per year) and handles differences between REST (HCM data only) and SOAP (financial and procurement data). Rate limits trigger exponential backoff retries.

Related integrations

Connect Sage Intacct and Workday HCM

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

Get started