Epicor Kinetic and ServiceTitan integration
Epicor Kinetic runs your ERP and general ledger. ServiceTitan manages field service dispatch, scheduling, and invoicing for HVAC, plumbing, and electrical service teams. Connecting the two keeps your purchase orders, AP bills, and vendor master data in sync across operations. Service team expenses captured in ServiceTitan flow into Epicor without manual re-entry, and your vendor list stays consistent across both systems.
What moves between them
The main flow runs from ServiceTitan into Epicor Kinetic. ServiceTitan purchase orders and inventory bills are pushed via webhook to ml-connector, which translates the line items into Epicor AP invoices and records them against the appropriate vendor. Vendor master records flow in both directions so that new vendors in ServiceTitan appear in Epicor, and vendor changes in Epicor are synchronized back to ServiceTitan. Payments are read from ServiceTitan and posted into Epicor AP as AP payment records, matched to invoices by vendor and amount.
How ml-connector handles it
ml-connector listens for ServiceTitan webhook events (job.created, invoice.created, purchase-order updates) and verifies the HMAC-SHA256 signature on each incoming payload. For each purchase order, it extracts vendor and line-item data, maps the vendor to Epicor's vendor master using a name-based or ID-based lookup, then calls Epicor's GetNewAPInvHed to initialize a new AP invoice record, populates line items using OData relationships, and commits the record with UpdateMaster. Because Epicor publishes no public API rate limits and tokens expire hourly, ml-connector implements exponential backoff on OData queries, caches the Bearer token between calls, and refreshes it before expiry. Vendor mismatches are flagged and require manual mapping before the flow retries. GL account allocation is configured per customer since ServiceTitan does not expose GL dimensions through the API.
A real-world example
A regional HVAC service company runs ServiceTitan for dispatch, scheduling, and field invoicing across 12 service teams and three office locations. They use Epicor Kinetic ERP for accounting, purchasing, and inventory. Before the integration, the operations team exported purchase orders from ServiceTitan twice a week, manually re-entered them into Epicor as vendor invoices, and resolved vendor name mismatches by phone. With ServiceTitan and Epicor Kinetic connected, every purchase order or inventory bill created in ServiceTitan flows into Epicor as an AP invoice within minutes of the webhook push. Vendor records sync bidirectionally, so new vendors are available in Epicor before the first invoice arrives. Month-end reconciliation is faster because the finance team starts with all service-related AP already in the system, and the re-keying bottleneck is eliminated.
What you can do
- Push ServiceTitan purchase orders and inventory bills into Epicor Kinetic as AP invoice records mapped to the correct vendors.
- Synchronize vendor master records between ServiceTitan and Epicor Kinetic so service vendors are available in both systems.
- Handle Epicor Kinetic's OAuth2 token refresh, OData query syntax, and two-step AP invoice write pattern (GetNewAPInvHed followed by UpdateMaster).
- Verify ServiceTitan webhook signatures with HMAC-SHA256 and implement backoff on Epicor Kinetic rate limiting and token expiry.
- Audit every record with full transaction trail, including webhook payload, mapping decisions, and write success or failure status.
Questions
- Does ml-connector write new vendors into Epicor Kinetic if they do not already exist?
- Yes, for vendors that exist in ServiceTitan but not in Epicor, ml-connector can create new vendor master records in Epicor with name, address, and contact details pulled from ServiceTitan. Vendor matching uses a name-based or ID-based lookup configured per customer. If a match cannot be found or created, the invoice is held and flagged for manual review.
- How does the integration handle the fact that ServiceTitan AP bills are read-only?
- ServiceTitan generates AP bills automatically when a purchase order is marked received with auto-create-bill enabled. ml-connector reads these read-only bills and writes them into Epicor Kinetic as AP invoice records. Since the source of truth for billing is ServiceTitan's purchase-order receipt, ml-connector does not attempt to write back to ServiceTitan.
- What happens if Epicor Kinetic API tokens expire or if the ServiceTitan webhook signature fails verification?
- Epicor Kinetic Bearer tokens are cached and refreshed before expiry to prevent mid-request failures. ServiceTitan webhook payloads are verified against the HMAC-SHA256 signature before processing; if verification fails, the payload is rejected with a 401 response and logged as a security event. Both failures are captured in the audit trail and can trigger alerts.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to ServiceTitan
Connect Epicor Kinetic and ServiceTitan
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started