ml-connector
Microsoft Dynamics NAVPlaid

Microsoft Dynamics NAV and Plaid integration

Microsoft Dynamics NAV handles accounting, invoicing, and general ledger for your business. Plaid connects you to your bank accounts and financial institutions. Integrating the two brings verified bank transaction data into NAV, automatically reconciles deposits and withdrawals to the cash accounts in your ledger, and lets you initiate ACH or wire transfers directly from purchase orders or payables. Month-end reconciliation no longer requires manual matching of bank statements to GL entries.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV exposes vendors, customers, purchase orders, invoices, general ledger entries, dimensions, items, employees, and bank accounts through OData v4 REST APIs secured with OAuth 2.0 client credentials. The cloud product (Dynamics 365 Business Central) uses a tenant-specific base URL and per-company routing; on-premises installations use internal hostnames and ports. NAV supports both webhooks (with 3-day subscription expiry) and polling; webhooks are available for transactions, dimensions, GL entries, and invoices. GL entries are immutable once posted, and GL accounts themselves are read-only in the standard API.

How Plaid works

Plaid provides read access to bank account balances and transaction history (up to 24 months) and write capabilities to initiate ACH and wire transfers. All endpoints are secured with client_id and secret supplied as HTTP headers or body fields. Plaid delivers transaction updates through webhooks signed with JWT (ES256) keys that must be verified against Plaid's public JWK set. Transfers require an idempotency key, a 10 to 15 character description, and a unique request ID. Plaid enforces signature verification on all webhooks and rate limits on the transfers endpoint.

What moves between them

Bank transaction data flows from Plaid into NAV. After Plaid webhooks signal new transactions or account changes, ml-connector polls Plaid for verified transaction details and posted account balances, then matches those transactions to NAV bank accounts by account number and currency. Reconciling entries post into NAV's cash journals, keyed to the matching bank GL account and dimension. Transfer initiation flows from NAV outbound: purchase order approvals or payables can trigger ACH or wire transfers through Plaid, with the transfer description and amount pulled from NAV and the destination bank details looked up or pre-configured per Plaid Item.

How ml-connector handles it

ml-connector stores Plaid client credentials encrypted and performs the three-step Plaid Link token flow to obtain per-bank access tokens, which it then caches until revocation or expiry. On webhook delivery, it validates the JWT signature against Plaid's published public key, checks the iat claim freshness, and verifies the request body SHA-256. When Plaid signals new transactions, ml-connector fetches them via the transactions/sync endpoint with cursor-based pagination, enriches them with counterparty and category data, and attempts to match them to NAV bank accounts. Matched transactions post as single-line cash journal entries in NAV keyed to the bank account and optional cost center dimension. For outbound transfers, ml-connector constructs the Plaid transfer request with idempotency key, enforces the 15 character description limit for ACH, and retries on rate limit 429 responses with exponential backoff. Every record carries the transaction ID and timestamp from both systems for full traceability.

A real-world example

A regional service firm runs NAV for accounting and project billing across three office locations. They use Plaid to aggregate bank feeds from five business accounts across two banks. Before integration, the accounting team reconciled bank statements to NAV cash accounts by hand each week, spending four hours matching deposits to invoices and detecting errors. With Plaid and NAV connected, each bank deposit and withdrawal flows into NAV automatically, matched to the correct location cost center, and most deposits self-reconcile by matching to posted invoices. Discrepancies surface immediately, and the accounting team now completes weekly reconciliation in 30 minutes. The team can also initiate payables transfers through Plaid directly from approved vendor invoices in NAV, with full audit trail.

What you can do

  • Automatically match and post verified Plaid bank transactions into Microsoft Dynamics NAV cash accounts and GL journals, keyed to the correct cost center.
  • Validate Plaid webhook signatures using JWT ES256 verification against Plaid's public key and enforce timestamp freshness.
  • Initiate ACH and wire transfers from NAV payables or purchase orders through Plaid, with idempotency key deduplication and rate limit retry.
  • Map Plaid transaction accounts and counterparties to NAV dimensions, cost centers, and bank GL accounts for accurate reconciliation.
  • Maintain a complete audit trail of every Plaid transaction matched and every transfer initiated, with both Plaid and NAV reference IDs stored.

Questions

Which direction does data move between Microsoft Dynamics NAV and Plaid?
The primary flow is Plaid into NAV: transaction data and account balances flow from Plaid into NAV for matching and reconciliation. Transfer initiation flows from NAV outbound through Plaid to execute ACH and wire transfers. Reference data such as bank accounts and cost centers is aligned in both directions.
How does ml-connector handle Plaid's signature verification requirement?
Plaid signs all webhooks with a JWT (ES256) containing the request body hash and issue timestamp. ml-connector fetches Plaid's public JWK set on startup and caches it, verifies the JWT signature on every webhook, checks the iat claim is fresh (less than 5 minutes old), and computes the SHA-256 of the raw request body to match the request_body_sha256 claim in the JWT. Signature mismatches are rejected immediately.
Does ml-connector handle the Plaid Link token flow and per-bank access tokens?
Yes. ml-connector manages the complete three-step Plaid Link flow to obtain per-bank access tokens for each connected institution. Access tokens are stored encrypted alongside other credentials, and the flow handles token refresh and revocation. Each Plaid Item (bank connection) is tied to a NAV bank account via configuration.

Related integrations

Connect Microsoft Dynamics NAV and Plaid

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

Get started