ml-connector
Microsoft Dynamics NAVTaxJar

Microsoft Dynamics NAV and TaxJar integration

Microsoft Dynamics NAV manages your orders, invoices, and general ledger. TaxJar calculates sales tax rates and tracks nexus obligations across states. Connecting them ensures every transaction is taxed correctly at the point of sale, without manual lookups or re-entry, and creates a complete audit trail for tax compliance. Orders that flow through NAV automatically calculate their correct tax burden in real time and sync back with the tax rate applied.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV exposes sales orders, sales invoices, customers, and general ledger entries through OData v4 REST or SOAP web services. The cloud variant (Dynamics 365 Business Central online) uses a tenant-specific URL and authenticates with OAuth 2.0 client credentials via Microsoft Entra ID, while on-premises deployments support both OAuth 2.0 and legacy Basic auth. NAV publishes webhook push events for entities including sales invoices and sales orders (with a 3-day subscription expiry and ~30 second batching), or polling is available. GL entries are immutable once posted. Webhooks are supported but expire every 3 days and require renewal, and if a webhook endpoint returns a non-2xx status other than 408/429/5xx, the subscription is immediately deleted.

How TaxJar works

TaxJar exposes tax rate lookup, transaction reporting, and nexus region tracking through a REST API at https://api.taxjar.com/v2/. Authentication uses a single API key submitted as a Bearer token in the Authorization header; OAuth 2.0 is not supported. TaxJar does not publish webhooks or push events to external systems, so all integration is polling or merchant-initiated POST. The platform separates real-time tax calculations (POST to /taxes at checkout) from order reporting (POST/PUT to /transactions/orders after fulfillment). Sandbox mode is stateless and validates request format only without persisting data. Customer-level exemption settings take precedence over order-level exemptions.

What moves between them

Sales orders and invoices flow from Microsoft Dynamics NAV to TaxJar. When a sales order or invoice posts in NAV, ml-connector polls the OData endpoint for the new transaction, extracts the ship-to address, order total, and line item details, submits the transaction to TaxJar's tax calculation endpoint, and stores the resulting tax rate and jurisdiction breakdown in NAV's audit trail. This flow is one-directional; TaxJar does not write data back into NAV. The sync runs on a configurable schedule aligned to your order volume, typically polling NAV every 15 to 60 minutes depending on throughput.

How ml-connector handles it

ml-connector retrieves the NAV OData endpoint URL and OAuth 2.0 tenant ID per customer, using the Microsoft Entra ID credentials to obtain a fresh bearer token on each request. For on-premises NAV, it accepts Basic auth and the OData port (default 7048). It then polls the sales invoices and sales orders collections for records created or modified since the last sync. For each transaction, ml-connector extracts the customer address, order lines with product IDs and quantities, and invoice total. The transaction is posted to TaxJar's /transactions/orders endpoint with the API token as a Bearer header. TaxJar returns the calculated tax amount broken down by jurisdiction and nexus region. ml-connector stores this response in a custom field or journal in NAV for audit and compliance reporting. If a TaxJar request fails (rate limit, network error), ml-connector retries with exponential backoff up to 3 attempts. If the NAV webhook subscription expires (after 3 days), ml-connector automatically renews it. Transactions are deduplicated by order number so duplicate submissions do not create duplicate tax filings.

A real-world example

A growing e-commerce business ships from a single warehouse but sells across the country. The business uses Microsoft Dynamics NAV to manage orders and invoices, but the finance team manually looks up sales tax rates in a spreadsheet every time an order ships, then enters the rate into NAV by hand. This is slow, error-prone, and creates gaps in the audit trail. With NAV and TaxJar connected, each sales order that posts in NAV automatically calculates its correct tax rate in TaxJar, the amount is logged in NAV with a timestamp and TaxJar reference ID, and the finance team has a complete record of tax obligations by state for quarterly reporting. Month-end close includes validated tax data, and the manual lookup step is eliminated.

What you can do

  • Automatically calculate sales tax rates for orders in Microsoft Dynamics NAV using TaxJar's real-time tax engine.
  • Sync sales invoices and orders from NAV to TaxJar and log the tax calculation result back into NAV for compliance audit.
  • Support both Business Central online (OAuth 2.0 and Entra ID) and on-premises Microsoft Dynamics NAV (Basic auth).
  • Manage NAV webhook subscription renewal (3-day expiry) and fall back to polling if webhooks are unavailable.
  • Deduplicate order submissions to TaxJar by order number and handle rate-limit retries with exponential backoff.

Questions

Which direction does data move between Microsoft Dynamics NAV and TaxJar?
Data flows one-directional from NAV to TaxJar. Sales orders and invoices in NAV are polled, submitted to TaxJar for tax calculation, and the resulting tax amount and jurisdiction breakdown is logged back into NAV for audit. TaxJar does not write data back into NAV.
Does the integration work with both Business Central online and on-premises NAV?
Yes. ml-connector supports Business Central online using OAuth 2.0 client credentials via Microsoft Entra ID, and on-premises NAV using Basic auth with a web service access key. You provide the appropriate URL and credentials per environment.
How does ml-connector handle NAV webhook expiry and TaxJar rate limits?
NAV webhooks expire every 3 days and require manual renewal; ml-connector monitors subscription age and automatically renews before expiry. TaxJar enforces API rate limits (429 response); ml-connector backs off and retries up to 3 times with exponential jitter. All failed transactions are logged and can be replayed once the issue is resolved.

Related integrations

Connect Microsoft Dynamics NAV and TaxJar

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

Get started