ml-connector
Microsoft Dynamics NAVGoogle Sheets

Microsoft Dynamics NAV and Google Sheets integration

Microsoft Dynamics NAV holds your financial records and vendor master data. Google Sheets is where finance teams, procurement staff, and managers review and analyze that data. Connecting the two keeps your spreadsheets current without manual export and re-entry. Vendor lists, customer records, purchase invoices, and general ledger entries flow from NAV into Sheets on a schedule you control, and every change is logged for audit and replay.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV (on-premises and cloud via Business Central online) exposes vendors, customers, purchase invoices, general ledger entries, dimensions, items, and employees through OData v4 REST APIs or legacy SOAP web services. Business Central online uses a tenant-specific base URL and requires OAuth 2.0 client credentials via Microsoft Entra ID for authentication. On-premises instances use a server and port (default OData port 7048) and support either OAuth 2.0 or Basic auth with a web service access key. NAV supports both webhooks (3-day expiry, ~30-second batching, up to 200 subscriptions per online environment) and polling for new and changed records.

How Google Sheets works

Google Sheets exposes a cloud-based spreadsheet through the Google Sheets API v4 over REST (JSON over HTTPS). You define your own data schema by arranging sheet tabs and column headers; there are no pre-built finance entities. Google Sheets authenticates via OAuth 2.0 (user-delegated Authorization Code flow or Service Account for server-to-server) and supports polling (recommended every 5-15 minutes) or push notifications via Google Drive watch channels, though channels expire hourly and require manual renewal.

What moves between them

The main flow moves from Microsoft Dynamics NAV into Google Sheets. Vendors, customers, purchase invoices, and general ledger entries are read from NAV via OData polling and written to Sheet tabs that you define, with columns mapped to the relevant NAV fields. The flow runs on a schedule you choose, such as daily or after each accounting batch. Because Google Sheets has no native finance entities, you structure your sheets to match your reporting needs: one tab for vendors with columns for code, name, payment terms, and balance due; another for invoices with columns for vendor, amount, due date, and status. Dimensions and items can also be synced to support dimension-aware reporting.

How ml-connector handles it

ml-connector stores your NAV tenant URL (for Business Central online) or server and port (for on-premises), along with OAuth credentials or Basic auth keys, encrypted at rest. On the Google Sheets side it handles OAuth 2.0 authorization and stores the target spreadsheet ID and sheet names. It polls NAV's OData endpoints on your defined schedule, transforms each vendor, customer, invoice, and GL entry into the column structure of the corresponding Sheet tab, and appends or updates rows to keep the spreadsheet fresh. Google Sheets has no HMAC signature verification for webhooks, so ml-connector relies on polling to maintain consistency. For Business Central online, NAV's 3-day webhook expiry means polling is often simpler than managing webhook renewals; for on-premises, it depends on your firewall and NAV Server configuration. Every sync carries a timestamp and unique record ID so you can replay a failed sync or audit which records changed in the last run. If NAV or Google Sheets returns a rate-limit or transient error, ml-connector backs off and retries.

A real-world example

A mid-sized distribution business runs Dynamics NAV on-premises to manage procurement, inventory, and accounts payable. The finance team reviews open invoices in a Google Sheet daily, marking which ones are approved for payment, and the operations team uses a second Sheet to monitor vendor performance. Before the integration, the AP coordinator exported vendor lists and invoice reports from NAV each morning and pasted them into the Sheets, a 30-minute manual task prone to copy errors and out-of-sync data. With Dynamics NAV and Google Sheets connected, the vendor master and open invoices appear in the Sheet automatically at the start of each business day, and the AP team can focus on approvals instead of data entry.

What you can do

  • Sync vendors, customers, purchase invoices, and general ledger entries from Microsoft Dynamics NAV to Google Sheets on a configurable polling schedule.
  • Map NAV OData entities to Sheet columns so each record type lands in the right tab with the correct fields.
  • Handle OAuth 2.0 authentication on both NAV (Business Central online or on-premises) and Google Sheets, with encrypted credential storage.
  • Support both Business Central online (tenant-specific URLs) and on-premises NAV Server instances without code changes.
  • Maintain a full audit trail and replay capability for every sync, so you can track which records changed and recover from partial failures.

Questions

Can I use this integration with on-premises Dynamics NAV, or only Business Central online?
Both. ml-connector supports Microsoft Dynamics NAV on-premises (via your server hostname and OData port, typically 7048) and Business Central online via the tenant-specific base URL. On-premises requires NAV Server Administrator to enable OData and API services, and your firewall must allow outbound HTTPS to Google Sheets and inbound access to the OData port from ml-connector.
Which Microsoft Dynamics NAV records can sync to Google Sheets?
Vendors, customers, purchase invoices, sales invoices, sales orders, general ledger entries, items, employees, dimensions, journals, and bank accounts can all be read from NAV OData and written to Sheet tabs you define. You choose which entities to sync and which columns in each tab map to NAV fields. GL Accounts themselves are read-only in NAV's API, but GL entries (posting results) can be synced.
Does ml-connector use webhooks or polling to detect changes in Dynamics NAV?
Polling is the primary mechanism. Business Central online webhooks expire every 3 days and require renewal, making polling often simpler to manage. ml-connector polls your NAV instance on a schedule you define (daily, hourly, etc.) and writes new and changed records to your Google Sheet. On-premises NAV can also use webhooks if your network permits, but polling works reliably without extra configuration.

Related integrations

Connect Microsoft Dynamics NAV and Google Sheets

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

Get started