ml-connector
Exact OnlineServiceTitan

Exact Online and ServiceTitan integration

Exact Online runs your accounting and procurement. ServiceTitan runs your service operations and dispatch. Connecting them keeps your supplier lists, purchase orders, and job-related expenses synchronized. New suppliers added in Exact Online flow into ServiceTitan automatically, purchase orders from Exact Online are available to service teams for cost tracking and procurement, and invoices generated from ServiceTitan jobs post back into Exact Online without manual re-entry. ml-connector handles the OAuth2 on both sides, manages token refresh, and tracks every record movement for audit and replay.

How Exact Online works

Exact Online exposes accounts (suppliers and customers), purchase orders, purchase invoice lines, GL accounts, cost centers, items, and bank accounts through an OData-flavored REST API authenticated with OAuth 2.0. The platform is region-specific with base URLs for the Netherlands, Belgium, UK, Germany, France, Spain, and USA, and uses division IDs to support multi-division organizations. Webhooks are supported for accounts, purchase orders, invoices, GL accounts, and many other entities with HMAC-SHA256 signature verification. Refresh tokens last 30 days and rotate on each refresh. Access tokens expire after 10 minutes, requiring frequent refresh calls.

How ServiceTitan works

ServiceTitan exposes vendors, purchase orders, invoices, payments, inventory bills, items, and employees through a REST API authenticated with OAuth2 client-credentials grant. Every call requires a Client ID, Client Secret, App Key header, and Tenant ID in the URL path. Tokens are valid for 15 minutes and the platform enforces a rate limit of 60 calls per second per app per tenant. Webhooks are available with HMAC-SHA256 signature verification and support events such as invoice.created, payment.created, customer.created, and appointment.scheduled. Inventory bills (AP Bills) are read-only and are auto-generated when a purchase order is marked received.

What moves between them

Suppliers from Exact Online flow into ServiceTitan as vendors. Purchase orders created in Exact Online are mirrored in ServiceTitan so service teams can track material and labor costs against customer jobs. Invoice and payment records generated by ServiceTitan are polled on a schedule and posted back into Exact Online for accounting reconciliation. Items and services are aligned across both systems so cost codes match in both directions. The sync is bidirectional for master data (suppliers, items) and unidirectional for transactional records (invoices flow from ServiceTitan to Exact Online for entry into the GL).

How ml-connector handles it

ml-connector stores both credential sets encrypted and manages OAuth2 refresh on both sides independently. On the Exact Online side, it handles the 10-minute token refresh cycle and region-specific base URLs by accepting the division ID per customer. On the ServiceTitan side, it injects the App Key header on every request and caches the 15-minute client-credentials token to avoid unnecessary auth calls. Supplier records are fetched from Exact Online via webhook when available, or polled on a schedule if webhook delivery is not enabled, and matched to ServiceTitan vendors by name or external ID. Purchase orders flow from Exact Online to ServiceTitan with line-item cost mapping so service work orders and jobs capture the material costs. ServiceTitan's read-only AP Bills and lack of GL account exposure mean invoices are read from ServiceTitan and posted into Exact Online's purchase invoice entity for GL posting. Rate limits are tracked and backoff is applied when ServiceTitan returns 429. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized HVAC and plumbing contractor uses Exact Online for accounting and procurement in their head office, and ServiceTitan to dispatch and manage service jobs across multiple branches. Before the integration, the office manager manually entered supplier lists from Exact Online into ServiceTitan, and service technicians could not see the cost of materials or equipment they were pulling from stock. After each invoice from a material supplier was processed in ServiceTitan, a manual journal entry was required in Exact Online to record the expense. With Exact Online and ServiceTitan connected, new suppliers are available in ServiceTitan the same day they are added to Exact Online, purchase orders automatically create cost tracking records in ServiceTitan so technicians see material expenses before ordering, and invoices from suppliers post directly into Exact Online's payables with the correct cost center, cutting month-end reconciliation time and eliminating manual invoice re-entry.

What you can do

  • Sync Exact Online suppliers into ServiceTitan vendors automatically, with updates flowing in both directions.
  • Mirror Exact Online purchase orders into ServiceTitan so field teams track material and labor costs against jobs.
  • Post ServiceTitan invoices and payments back into Exact Online for payables and accounting reconciliation.
  • Handle Exact Online OAuth2 with 10-minute token refresh and region-specific URLs, and ServiceTitan OAuth2 client-credentials with App Key header injection.
  • Align items, cost centers, and dimensions across both systems so cost codes and purchase order allocations match without remapping.

Questions

Which direction does data move between Exact Online and ServiceTitan?
Suppliers and items flow from Exact Online into ServiceTitan. Purchase orders are mirrored from Exact Online to ServiceTitan so service teams can track costs. Invoices and payments generated by ServiceTitan are read back into Exact Online for accounting entry. Master data such as suppliers, items, and cost centers are synchronized bidirectionally to ensure both systems reference the same entities.
How does ml-connector handle Exact Online's region-specific URLs and OAuth token refresh?
ml-connector accepts the division ID and region per customer and constructs the appropriate Exact Online base URL (Netherlands, Belgium, UK, Germany, France, Spain, or USA). It manages the 10-minute OAuth access token refresh cycle independently and caches refresh tokens, which last 30 days and rotate on each refresh. If a refresh token expires, the user must re-authorize in the Exact Online App Center.
Why are ServiceTitan AP Bills read-only and how does invoicing work?
ServiceTitan generates AP Bills (inventory bills) automatically when a purchase order is marked received with auto-create-bill enabled, and these are read-only via API. ml-connector reads invoices and payments from ServiceTitan on a schedule and posts them into Exact Online's purchase invoice entity for GL posting and expense tracking. For supplier invoices that do not originate in ServiceTitan, they are entered directly in Exact Online and optionally synchronized to ServiceTitan for reference.

Related integrations

Connect Exact Online and ServiceTitan

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

Get started