Microsoft Dynamics NAV and ServiceTitan integration
ServiceTitan manages dispatch and invoicing for field-service businesses. Microsoft Dynamics NAV manages accounting and finance. Connecting the two keeps your purchase orders and invoices in sync without re-keying. Work orders and inventory bills from ServiceTitan flow into Microsoft Dynamics NAV as purchase invoices and general ledger entries, so your field costs are recorded in the general ledger automatically. ml-connector bridges the different APIs and handles the credentials, retries, and audit trail.
What moves between them
Purchase orders created or updated in ServiceTitan flow into Microsoft Dynamics NAV as purchase invoices, mapped to the matching vendor in NAV. Inventory bills (generated when purchase orders are marked received in ServiceTitan) are read and mapped into NAV's general ledger journal entries, allocated to the appropriate GL accounts and dimensions. The flow runs from ServiceTitan into NAV on a polling schedule or via ServiceTitan webhooks if available. Reference data such as vendors, items, and dimensions are aligned in both directions so field-service purchase orders land on valid NAV accounts.
How ml-connector handles it
ml-connector stores the OAuth2 credentials for both systems and refreshes tokens when they expire (15 minutes for ServiceTitan, per the client credentials flow). For Microsoft Dynamics NAV online, it uses OAuth 2.0 via Microsoft Entra ID; for on-premises NAV, it uses OAuth 2.0 or Basic auth depending on your instance configuration. It polls ServiceTitan for new or updated purchase orders and inventory bills on a schedule you set, then maps those records to NAV's vendor master, GL accounts, and dimensions before posting them as purchase invoices and journal lines. ml-connector handles the ServiceTitan rate limit (60 calls per second) and implements exponential backoff on retries. It tracks the webhook subscription window in NAV and renews before expiry so notifications do not drop. Every record carries a full audit trail showing which ServiceTitan order mapped to which NAV invoice and GL entry, and jobs can be replayed if a downstream call fails.
A real-world example
A regional HVAC and plumbing contractor runs ServiceTitan for dispatch and job invoicing across four service territories, and uses Microsoft Dynamics NAV online for accounting. Before the integration, the office team exported purchase orders from ServiceTitan weekly and manually entered them into NAV as purchase invoices, then had to reconcile service-cost allocations to job codes and GL accounts during month-end close. With ServiceTitan and NAV connected, each ServiceTitan purchase order automatically posts into NAV mapped to the correct GL account and service territory dimension, and inventory bills flow directly to the journal. The accounting team no longer re-keys field-service purchases, month-end reconciliation is faster, and the general ledger reflects the true cost of each territory's service work.
What you can do
- Post ServiceTitan purchase orders into Microsoft Dynamics NAV as purchase invoices with automatic vendor and item mapping.
- Flow inventory bills from ServiceTitan into NAV's general ledger journal, allocated to the correct GL accounts and dimensions.
- Authenticate ServiceTitan with OAuth2 and Microsoft Dynamics NAV with OAuth2 via Microsoft Entra ID (online) or Basic auth (on-premises).
- Renew NAV webhook subscriptions before the 3-day expiry window and handle field-service-to-ERP data mapping with a full audit trail.
- Support polling on a schedule tied to your service workflow, with retries and error replay on every record.
Questions
- Which direction does data move between Microsoft Dynamics NAV and ServiceTitan?
- The main flow is from ServiceTitan into Microsoft Dynamics NAV. Purchase orders and inventory bills from ServiceTitan move into NAV as purchase invoices and journal entries. Reference data such as vendors, items, and dimensions can be aligned in both directions so field-service orders map to valid NAV GL accounts. NAV GL accounts are read-only, so ml-connector does not write financial entries back into ServiceTitan.
- How does the integration handle the 3-day webhook subscription expiry in NAV?
- ml-connector tracks the 3-day expiry window on NAV webhook subscriptions and automatically renews them before they expire so push notifications from NAV do not drop. For entities like purchase orders that are not in NAV's standard webhook list, ml-connector can poll instead of waiting for a push.
- What happens to purchase orders that ServiceTitan marks as received but NAV has not yet processed?
- ml-connector polls ServiceTitan for new and updated purchase orders on a schedule you set, then maps them to NAV vendors, items, and GL accounts before posting as purchase invoices. Inventory bills (generated when orders are marked received in ServiceTitan) are read and posted as journal lines. If a downstream NAV call fails, ml-connector retries with exponential backoff and keeps a full audit trail so the job can be replayed.
Related integrations
More Microsoft Dynamics NAV integrations
Other systems that connect to ServiceTitan
Connect Microsoft Dynamics NAV and ServiceTitan
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started