Microsoft Dynamics NAV and Zuora integration
Microsoft Dynamics NAV runs order-to-cash for small and mid-market businesses. Zuora runs subscription billing and revenue recognition for recurring-revenue models. When the two are connected, sales orders created in Microsoft Dynamics NAV flow to Zuora as subscription requests, and invoice status from Zuora syncs back to NAV for accurate revenue recognition. ml-connector handles the OAuth setup on both sides and maps NAV customers and items to Zuora products and accounts without manual re-entry.
What moves between them
Sales orders created in Microsoft Dynamics NAV flow into Zuora as new subscriptions or subscription amendments tied to matching NAV customers. Invoice status and payment information from Zuora sync back to NAV to update invoice records for accurate revenue recognition and accounting. Customer and product master data are aligned in both directions so that NAV items map to Zuora products and NAV customer dimensions are reflected in Zuora account hierarchies. The sync runs on a schedule you control, typically aligned with your billing and close cycles.
How ml-connector handles it
ml-connector manages OAuth 2.0 on both sides: it requests a bearer token from Microsoft Entra ID using NAV credentials, and independently requests a bearer token from Zuora using Zuora client credentials, refreshing each when it approaches expiry. Because NAV is pull-only for on-premises (webhooks require renewal every 3 days on cloud), ml-connector polls NAV sales orders and invoices on a cadence you define, typically daily or weekly. Zuora webhooks are optional; if enabled, ml-connector listens for Invoice Posted and Payment Processed events and pulls the corresponding records from Zuora to enrich NAV invoice records. ml-connector tracks Zuora's multi-region base URL per customer so routing is always correct, and it handles the minimal webhook payloads Zuora sends by calling back to fetch full details. Rate limits on both sides are respected: Zuora enforces 50,000 requests per minute on production and 2,000 on the auth endpoint, while NAV enforces OData query limits. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A software-as-service company uses Microsoft Dynamics NAV for order and invoice management and Zuora for subscription billing and revenue recognition. Previously, sales operations manually created subscriptions in Zuora each time a new deal was signed and closed in NAV, and the finance team had to reconcile invoice status and payment records between the two systems at month-end close. After connecting NAV and Zuora, sales orders created in NAV automatically spawn subscriptions in Zuora with the correct product SKUs and customer billing hierarchy, invoice statuses flow back to NAV for automated revenue journal posting, and month-end close requires no manual reconciliation between billing and the general ledger.
What you can do
- Flow sales orders from Microsoft Dynamics NAV into Zuora as new subscriptions, automatically mapping NAV customers to Zuora accounts and NAV items to Zuora products.
- Sync invoice status, payment status, and payment records from Zuora back to Microsoft Dynamics NAV to drive automated revenue journal posting.
- Manage OAuth 2.0 authentication on both sides and refresh tokens as they approach expiry without manual intervention.
- Respect Zuora's multi-region endpoint requirements and handle region-specific base URLs per customer.
- Poll on a schedule you control with retries, error replay, and a complete audit trail on every record moved between systems.
Questions
- How does the integration handle the differences between NAV customers and Zuora accounts?
- ml-connector maintains a mapping between NAV customers and Zuora accounts, either by matching on email domain or company name, or by storing the Zuora account ID in a custom field on the NAV customer record. When a sales order is created in NAV, ml-connector looks up the matching Zuora account and creates a new subscription tied to that account. Payments and invoices flow back to NAV using the same mapping, so finance records always reference the correct customer.
- Does the integration work with Microsoft Dynamics NAV on-premises?
- Yes. On-premises NAV deployments can use either OAuth 2.0 or the legacy basic authentication method with a web service access key. The OData endpoint must be enabled on the NAV Server Administration tool, and the OData port (default 7048) must be open through the firewall. ml-connector handles the authentication detail, so setup is the same from the configuration perspective.
- What happens when Zuora's webhook subscription expires or endpoints are unavailable?
- If Zuora webhooks are enabled, Zuora event subscriptions do not expire, but ml-connector can still poll Zuora on a schedule to catch any events missed due to network issues or endpoint downtime. NAV webhooks expire after 3 days on the cloud version and must be renewed by ml-connector before expiry. If webhook renewal fails, ml-connector falls back to polling and raises an alert so you can diagnose the issue.
Related integrations
More Microsoft Dynamics NAV integrations
Other systems that connect to Zuora
Connect Microsoft Dynamics NAV and Zuora
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started