ml-connector
Microsoft Dynamics NAVWise

Microsoft Dynamics NAV and Wise integration

Microsoft Dynamics NAV manages vendor invoices and payment workflows. Wise executes international transfers and multi-currency payouts. Connecting the two lets you automate the payment of foreign invoices from NAV directly into Wise without re-keying, track each transfer through the four-step Wise workflow, and post payout confirmations back into NAV's general ledger and bank reconciliation for real-time visibility. ml-connector handles the complexity of Wise's transfer sequence, idempotency keys, and rate limits while maintaining a complete audit trail of every transaction.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV is an on-premises and cloud ERP (Dynamics 365 Business Central online) for small and mid-size businesses. It exposes vendors, customers, purchase orders, invoices, accounts, and general ledger entries through OData v4 REST with OAuth 2.0 client credentials via Microsoft Entra ID (online) or legacy Basic auth (on-premises). NAV supports both webhooks (push, 3-day subscription expiry, ~30 second batching) and polling. Webhooks are available for vendors, customers, invoices, and accounts, though purchaseOrders are not in the standard webhook list. GL accounts are read-only, and general ledger entries are immutable once posted.

How Wise works

Wise is a global payments platform for international money transfers, multi-currency accounts, and cross-border payouts. The Wise Platform API exposes profiles, balances, recipients, and transfers via REST with OAuth 2.0 (12-hour token expiry, long-lived refresh tokens) or Personal API Token authentication. Wise fires webhooks for transfer state changes, payout failures, and balance updates, with signature verification via RSA-SHA256 digest. Transfer creation requires a four-step sequence: quote, recipient, transfer order, and fund payment. Recipients are immutable, and quotes expire if not funded within a time window. Rate limits are 100 req/sec and 1000 req/min for partner OAuth accounts.

What moves between them

Payment instructions flow from Microsoft Dynamics NAV into Wise. ml-connector reads vendor invoices and payment orders from NAV, matches them to Wise recipients and bank accounts (creating new recipients if needed), and executes the full transfer workflow: fetch a quote, create or validate the recipient, initiate the transfer, and fund the payment. Wise transfer confirmations and status updates flow back into NAV as posted payout records that link to the original invoices, enabling bank reconciliation. Balance updates from Wise are written back to NAV's bank accounts for real-time cash position tracking.

How ml-connector handles it

ml-connector stores OAuth credentials for both systems encrypted and refreshes Wise tokens when they approach the 12-hour expiry. On the NAV side, it reads payment orders via OData REST, accepting the configured tenant ID and on-premises base URL. For each payment order in NAV, ml-connector follows Wise's mandatory four-step transfer sequence: first it fetches a FX quote for the vendor's currency, then it creates or retrieves the Wise recipient record for that vendor, then it creates a transfer order linking the quote and recipient, and finally it initiates payment via the Wise funding endpoint. Each step includes idempotency keys (customerTransactionId for transfers, X-idempotence-uuid for conversions) to handle retries without duplicate transfers. When Wise returns a transfer state-change webhook, ml-connector matches it back to the originating NAV invoice and posts a payout record into NAV's general ledger. Rate limit backoff uses exponential jitter, and transfer status polling runs on a cadence tied to your payment schedule. Every record carries a full audit trail.

A real-world example

A mid-sized manufacturing company with vendors across Europe, Asia, and North America runs Microsoft Dynamics NAV for finance and procurement. The company currently manages foreign vendor payments manually: approving invoices in NAV, exporting them to a spreadsheet, setting up transfers in Wise, then manually recording the payments back into NAV for bank reconciliation. With NAV and Wise connected, each approved invoice payment flow automatically through Wise's transfer sequence, and payout confirmations post back into NAV's bank reconciliation module. The finance team no longer re-enters payments, and the cash position in NAV stays current with actual Wise payouts.

What you can do

  • Automate international vendor payments by reading approved invoices from NAV and executing the full Wise transfer workflow without manual intervention.
  • Create and manage Wise recipients for vendors automatically, with immutability safeguards and error handling when recipients cannot be updated.
  • Track the four-step Wise transfer sequence (quote, recipient, transfer, payment) with idempotency keys to prevent duplicate transfers on retry.
  • Post Wise transfer confirmations and payout status back into NAV general ledger and bank accounts for real-time reconciliation and audit.
  • Handle Wise rate limits, token refresh, quote expiry, and webhook signature verification with retries and a full audit trail.

Questions

Does ml-connector automate the entire Wise transfer workflow, or does it require manual steps in Wise?
ml-connector automates the complete four-step Wise workflow. It fetches a quote, creates or validates the recipient, initiates the transfer order, and funds the payment from NAV payment data without any manual intervention in Wise. Transfer status updates are posted back into NAV for visibility and reconciliation.
How does the integration handle Wise's idempotency and rate limits?
ml-connector includes idempotency keys (customerTransactionId for transfers, X-idempotence-uuid for conversions) in every request so retries do not create duplicate transfers. Rate limit backoff uses exponential jitter, and the integration respects Wise's 100 req/sec and 1000 req/min thresholds, queuing excess requests without dropping them.
What happens if a vendor in NAV does not yet exist as a Wise recipient?
ml-connector creates the recipient automatically in Wise the first time a payment order references that vendor. Recipients are immutable in Wise, so ml-connector validates the recipient details (name, bank account) before funding. If recipient details change in NAV, a new recipient must be created and the old one retired.

Related integrations

Connect Microsoft Dynamics NAV and Wise

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

Get started