ml-connector
Workday Financial ManagementServiceTitan

Workday Financial Management and ServiceTitan integration

ServiceTitan runs scheduling and invoicing for service trades; Workday runs your enterprise finance. Connecting the two keeps your accounts payable records in sync with the work your field teams complete. Invoices and automatically-generated AP bills from ServiceTitan flow into Workday's accounts payable module, mapped to the suppliers and cost codes already set up in your chart of accounts. Labor, materials, and equipment costs land on the GL accounts they belong to, and your finance team can reconcile AP aging and cash disbursements without re-keying or manual matching.

How Workday Financial Management works

Workday Financial Management is a cloud ERP module hosted at {hostname}.myworkday.com that covers accounts payable, accounts receivable, procurement, general ledger, cash management, and financial reporting. It exposes suppliers, supplier invoices, purchase orders, payments, GL accounts, worktags, customers, and journal entries through two APIs: a SOAP/XML interface (WWS) for full read-write operations and a REST/JSON interface for lighter transactional reads. Authentication uses either an Integration System User (ISU) with WS-Security UsernameToken for SOAP calls, or OAuth2 refresh-token flow for REST. Workday has no native webhooks or event stream; all data reading relies on polling with date-range filters on Get operations, with recommended polling intervals of 15 to 60 minutes for transactional entities and daily for suppliers.

How ServiceTitan works

ServiceTitan is a REST/JSON API for field-service-management businesses in HVAC, plumbing, electrical, and similar trades. It exposes invoices, payments, inventory bills (AP bills), purchase orders, vendors, tax zones, customers, items, employees, business units, jobs, and appointments at https://api.servicetitan.io/{namespace}/v2/tenant/{tenantId}/. Authentication uses OAuth2 client-credentials grant with a 15-minute token lifetime, plus an ST-App-Key header sent on every request and a Client ID and Client Secret. ServiceTitan supports outbound webhook push with HMAC-SHA256 signature verification and event types including invoice.created, invoice.updated, and payment.created. Rate limits are 60 calls per second and 100-second request timeout per call, with AP Bills generated automatically when purchase orders are marked received.

What moves between them

Invoices and AP bills flow from ServiceTitan into Workday's accounts payable and general ledger. After a service job is completed and billed in ServiceTitan, ml-connector reads the resulting invoice and the automatically-generated AP bill, maps the service items to GL expense accounts and the vendor to a matching Workday supplier, and posts the AP transaction into Workday's payables module with journal entries to the cost accounts. ServiceTitan does not read from Workday, so the flow is one direction only. Polling runs on a schedule you control, typically once per hour or once per day depending on your invoicing volume.

How ml-connector handles it

ml-connector stores the OAuth2 client credentials for ServiceTitan encrypted and refreshes the access token every 15 minutes before it expires, caching it to avoid per-call token overhead. On the Workday side it stores the ISU credentials for SOAP authentication. When reading ServiceTitan invoices and AP bills, ml-connector queries the API with date-range filters to find new and updated records since the last poll. It maps each vendor in ServiceTitan to the matching supplier in Workday using supplier name or code matching, and maps line items to GL accounts based on item type (labor, materials, equipment) and a configuration table you define. ServiceTitan AP bills are read-only, so ml-connector never writes back to ServiceTitan. Workday SOAP operations for complex bulk invoice import are used where needed, with fallback to REST for simpler updates. Every invoice and AP bill carries a deduplication key so replaying a failed record does not create duplicates in Workday. ml-connector respects ServiceTitan's 60-calls-per-second rate limit and backs off on 429 responses.

A real-world example

A plumbing and HVAC contractor with multiple field teams operates ServiceTitan for dispatch and job invoicing, and uses Workday for enterprise accounting. Before the integration, the finance office received a report of completed jobs from ServiceTitan each week, then manually entered each invoice into Workday's accounts payable module, coding labor and materials to the correct GL accounts for cost tracking. This took 4 to 6 hours per week and led to coding errors. With ServiceTitan and Workday connected, each job invoice is automatically posted to AP and the general ledger within an hour, coded to the right labor and materials accounts. The finance team can now run accurate job costing reports and monthly close takes half the time.

What you can do

  • Read ServiceTitan invoices and automatically-generated AP bills and post them into Workday's accounts payable and general ledger.
  • Map ServiceTitan vendors to Workday suppliers and line items to GL accounts based on item type and a configuration table you define.
  • Authenticate ServiceTitan with OAuth2 client credentials and Workday with ISU credentials, and manage token refresh so calls do not fail due to expiry.
  • Poll ServiceTitan on a schedule tied to your invoicing volume, with deduplication and full audit trail on every record.
  • Respect ServiceTitan's rate limits and back off on API throttling so your integration does not trigger account blocks.

Questions

Which direction does data flow between Workday and ServiceTitan?
The flow is one direction, from ServiceTitan into Workday. Invoices and AP bills created in ServiceTitan are read by ml-connector and posted into Workday's accounts payable and general ledger. ServiceTitan does not read from Workday, so Workday supplier and account changes do not push back to ServiceTitan.
How does ml-connector map ServiceTitan vendors and invoices to Workday suppliers and GL accounts?
ml-connector matches ServiceTitan vendors to Workday suppliers using name or code lookup, and maps invoice line items to GL accounts based on item type (labor, materials, equipment) and a configuration table you provide. If a vendor or account is not found, the record is flagged for manual review in the audit trail before posting.
Does ml-connector support ServiceTitan webhooks, or does it poll?
ml-connector can accept ServiceTitan webhook pushes for invoice.created and invoice.updated events if you register the endpoint in ServiceTitan Developer Portal, or it can poll the REST API on a regular schedule. Polling is the default and does not require webhook configuration on your side.

Related integrations

Connect Workday Financial Management and ServiceTitan

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

Get started