ml-connector
Zoho BooksWorkday HCM

Zoho Books and Workday HCM integration

Zoho Books handles accounting and invoicing for growing teams. Workday HCM runs payroll, worker management, and procurement at scale. When the two systems are connected, supplier invoices and labor cost journals generated in Workday HCM flow automatically into Zoho Books GL without re-keying, and worker records stay aligned so expense allocation stays accurate. ml-connector manages the very different authentication methods on each side, regional endpoint routing for Zoho Books, polling without webhooks, and a complete audit trail on every transaction.

How Zoho Books works

Zoho Books is a REST API with regional base URLs determined by customer region (US, EU, India, Australia, Japan, Canada, China, Saudi Arabia). It uses OAuth2 Authorization Code flow with 1-hour access token expiry and user-delegated refresh tokens that do not expire. Every API call requires an organization_id query parameter resolved after authentication. The platform publishes invoices, bills, purchase orders, contacts, vendor payments, chart of accounts, and journals through list and detail endpoints with offset-based pagination. Webhook support is available for outgoing events, but HMAC signature verification must be implemented on the connector side. Rate limits are 100 requests per minute across all plans, with daily limits varying by edition, and concurrent call limits per plan tier.

How Workday HCM works

Workday HCM is a single-tenant cloud platform accessible via three API surfaces: SOAP for full CRUD on financial and procurement data, REST for HCM and staffing only, and custom reporting via RaaS for ad-hoc extracts. SOAP uses WS-Security UsernameToken with Integration System User credentials; REST uses OAuth2 with 60-minute access token expiry and a long-lived refresh token configured at ISU setup. Workday does not support native webhooks or Business Process Notifications without Workday Studio, so polling is mandatory. Supplier invoices, purchase orders, GL accounts, and journals are SOAP-only resources. Pagination maxes at approximately 2000 records per SOAP request, and most HCM resources support date-filtered queries for incremental pulls.

What moves between them

Supplier invoices and GL journal postings flow from Workday HCM into Zoho Books. After each payroll cycle or supplier invoice approval in Workday HCM, ml-connector polls the SOAP API for new invoices and GL transactions, transforms them to Zoho Books bill and journal entry format, and writes them to the correct regional Zoho Books instance. Worker records flow in the same direction so headcount changes in Workday HCM are mirrored in Zoho Books contacts for expense allocation alignment. Reference data such as GL accounts and cost centers is read from both systems to validate mappings before write operations. GL transactions are read-only in both systems, so ml-connector writes only to bill and journal endpoints.

How ml-connector handles it

ml-connector stores Zoho Books OAuth2 credentials encrypted and refreshes the access token proactively at 55 minutes to prevent expiry mid-flight. For Workday HCM it stores ISU username and password encrypted and constructs WS-Security headers on every SOAP request. Customer region is resolved from the Zoho Books token response and cached; all subsequent Zoho Books calls route to the correct regional base URL. Workday HCM endpoints are constructed using the customer-specific subdomain and tenant ID. Because Workday does not offer webhooks, ml-connector polls both Workday HCM SOAP endpoints and Zoho Books list endpoints on a schedule tied to the payroll cycle or invoice approval cadence. Zoho Books rate limits (100 per minute) are tracked across all parallel flows and backed off when approached. Supplier invoice records are deduplicated using Workday HCM supplier invoice number as idempotency key since Zoho Books has no native idempotency support. All GL journal lines are mapped to validated Zoho Books GL accounts and departments before posting. If a write fails, the entire transaction is logged with full context so it can be replayed once the issue is resolved.

A real-world example

A professional services firm uses Workday HCM for payroll, benefits, and supplier management across three offices. Zoho Books handles invoicing and general ledger. Each month the finance team manually pulled supplier invoices from Workday HCM and re-entered them in Zoho Books, then tracked GL postings from payroll separately and posted them by hand. Worker records drifted between systems during hiring and terminations, causing expense allocation errors at month-end. With Workday HCM and Zoho Books connected, supplier invoices and labor cost GL postings flow automatically into Zoho Books each payroll cycle, eliminating re-keying. Worker headcount stays synchronized, so cost allocations are accurate from day one. Month-end close is now two days shorter.

What you can do

  • Read supplier invoices and GL transactions from Workday HCM SOAP API and write them as bills and journals in Zoho Books.
  • Sync worker records from Workday HCM to Zoho Books contacts so headcount and expense allocation stay aligned.
  • Route all Zoho Books API calls to the correct regional endpoint based on customer region.
  • Authenticate Zoho Books via OAuth2 with proactive token refresh and Workday HCM via SOAP WS-Security UsernameToken.
  • Poll both systems on a schedule tied to payroll and supplier invoice cycles without native webhooks, with rate-limit tracking and deduplication by invoice number.

Questions

How does ml-connector handle the two different API styles between Zoho Books REST and Workday HCM SOAP?
ml-connector maintains separate client instances for each API surface. Zoho Books calls are REST with OAuth2 bearer tokens routed through the customer's regional base URL. Workday HCM calls are SOAP with WS-Security headers constructed from the ISU credentials. Both credentials are stored encrypted and refreshed according to each system's expiry rules. Transformations between the two API schemas happen transparently in the mapping layer.
Why does the integration poll instead of using webhooks?
Zoho Books supports outgoing webhooks but Workday HCM does not offer native webhook delivery. Since at least one system does not have webhooks, ml-connector uses polling on both sides to ensure consistent, predictable data flow. The polling schedule is tied to your payroll and invoice approval cycles, and the audit trail logs every fetch and write operation.
What happens if a supplier invoice number already exists in Zoho Books?
ml-connector uses the Workday HCM supplier invoice number as the idempotency key to avoid duplicate bill entries. If a bill with the same invoice number is detected during a retry or rerun, it is skipped and logged so you can see that the record was already processed. This prevents accidental duplicate postings while keeping a complete audit trail.

Related integrations

Connect Zoho Books and Workday HCM

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

Get started