QuickBooks Online and ServiceTitan integration
ServiceTitan dispatches jobs and creates invoices for service work. QuickBooks Online records revenue and tracks bills for the business. Connecting the two keeps your accounting in sync with what ServiceTitan tracks about customers, jobs, and inventory. Service invoices created in ServiceTitan can flow into QuickBooks Online without re-entry, customer records stay aligned in both systems, and inventory used on jobs is tracked across both platforms.
What moves between them
The primary flow is from ServiceTitan into QuickBooks Online. When a job is completed and an invoice is created in ServiceTitan, ml-connector reads the invoice and any associated payments and creates or updates a corresponding invoice and payment record in QuickBooks Online. Customers and vendors are synced in both directions so that new customers added in either system appear in the other. Inventory items used on ServiceTitan jobs flow into QuickBooks Online to track the cost of materials. Purchase orders and inventory bills created in ServiceTitan are read into QuickBooks Online to reconcile accounts payable.
How ml-connector handles it
ml-connector stores ServiceTitan credentials encrypted and requests an OAuth2 bearer token every 15 minutes before expiry, then caches it to avoid token-per-call overhead. On the QuickBooks Online side it uses OAuth2 Authorization Code flow with the realm_id captured during initial setup, and refreshes the access token when it expires after 1 hour. Webhook events from both systems trigger immediate syncs for invoices and payments, while customer and vendor records are polled on a schedule you define. When a ServiceTitan invoice is posted to QuickBooks Online, line items are matched to QuickBooks Online accounts and classes if present, and the payment status is set to match. Customer and vendor names, addresses, and contact details are synchronized, with conflicts resolved by last-write-wins. Retries use exponential backoff when either API returns a rate-limit or transient error, and a full audit trail of every record sync is kept so failed syncs can be replayed.
A real-world example
A mid-sized HVAC contractor uses ServiceTitan to schedule technicians, dispatch jobs, and invoice customers for service work across multiple locations. The business runs QuickBooks Online for accounting and month-end close. Before the integration, the office manager manually exported service invoices from ServiceTitan each day and re-entered them into QuickBooks Online, leading to keying errors and delays in revenue recognition. With ServiceTitan and QuickBooks Online connected, completed jobs automatically become invoices in QuickBooks Online the same day, customer records stay in sync, and the accounting team can close the month without manual invoice entry.
What you can do
- Sync service invoices and payments created in ServiceTitan into QuickBooks Online as invoices and payment records.
- Keep customer records aligned between ServiceTitan and QuickBooks Online, including name, address, and contact details.
- Map inventory items and purchase orders from ServiceTitan into QuickBooks Online line items and bills.
- Refresh ServiceTitan OAuth2 tokens every 15 minutes and QuickBooks Online tokens after 1-hour expiry to prevent auth failures.
- Track every record with a full audit trail and replay failed syncs when downstream systems recover.
Questions
- Which direction do invoices and payments flow between ServiceTitan and QuickBooks Online?
- The primary flow is from ServiceTitan into QuickBooks Online. When a job is marked complete and an invoice is generated in ServiceTitan, ml-connector reads that invoice and any associated payments and creates or updates a corresponding invoice and payment in QuickBooks Online. Customers and vendor records are synced in both directions so data stays aligned.
- How does ml-connector handle the different OAuth2 flows in each system?
- ServiceTitan uses OAuth2 client-credentials grant, which ml-connector caches for 900 seconds (15 minutes) to avoid token overhead on every call. QuickBooks Online uses OAuth2 Authorization Code flow with realm_id in the URL path, and ml-connector refreshes the 1-hour access token before expiry. Both credentials are stored encrypted.
- What happens if a sync fails partway through, such as when QuickBooks Online returns a rate limit?
- ml-connector stores a full audit trail of every record synced and retries with exponential backoff when either system returns a transient or rate-limit error. Once the downstream system recovers, the record can be replayed from the audit trail without losing data or creating duplicates.
Related integrations
More QuickBooks Online integrations
Other systems that connect to ServiceTitan
Connect QuickBooks Online and ServiceTitan
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started