ml-connector
Microsoft Dynamics NAVAdyen

Microsoft Dynamics NAV and Adyen integration

Dynamics NAV manages invoices, customers, and cash flow. Adyen processes and settles payments globally. Connecting the two routes customer payments and supplier payouts through Adyen's network while keeping your general ledger and bank accounts reconciled without re-keying. Payment authorizations, captures, and refunds from Adyen flow back into NAV as journal entries and bank transactions, matched to the original invoices.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV exposes customers, vendors, sales invoices, purchase invoices, payment journals, general ledger accounts, bank accounts, and dimensions through OData v4 REST or SOAP web services over a tenant-specific URL. Cloud instances (Dynamics 365 Business Central online) authenticate with OAuth 2.0 client credentials via Microsoft Entra ID. NAV supports webhooks that expire after 3 days and must be renewed, or polling via the REST API. GL accounts and posted entries are read-only, and journals can be posted to create ledger entries. Invoices carry amounts, due dates, customer and vendor references, and dimensions for cost allocation.

How Adyen works

Adyen exposes payments, captures, refunds, cancellations, transfers, and disputes through REST APIs organized by area: Checkout (payment authorization and capture), Management API (account and reference data), and Transfers API (Balance Platform payouts). Authentication uses API Keys scoped to company or merchant accounts, delivered via X-API-Key header or Basic Auth. Adyen sends payment events through webhooks with HMAC-SHA256 signature verification, including AUTHORISATION, CAPTURE, REFUND, CANCELLATION, and EXPIRE events. Adyen is primarily a payment processor: it handles cash movements but has no native vendor records, invoices, or GL accounts.

What moves between them

Payment requests flow from Dynamics NAV into Adyen: when a sales invoice is due or a purchase payment is authorized, ml-connector sends a payment request to Adyen's Checkout API with the amount, customer or vendor ID, and invoice reference. Adyen returns authorization and capture events via webhooks. ml-connector receives each webhook, verifies the HMAC-SHA256 signature, and posts the payment status (authorized, captured, failed, refunded) as a journal line in NAV's bank account and general ledger. Refund requests initiated in NAV flow to Adyen's refund endpoint and return as REFUND or REFUND_FAILED events, also posted to NAV. Settlement reconciliation is pulled from Adyen settlement reports and matched to NAV invoices and payments by reference.

How ml-connector handles it

ml-connector stores the Adyen API Key encrypted and authenticates each request with the X-API-Key header. It maps NAV customers and vendors to Adyen shopper references so the same entity is recognized on both sides. When NAV initiates a payment, ml-connector reads the invoice amount, currency, and payment journal metadata, constructs the Adyen Checkout request, and stores the Adyen payment reference as a custom field on the NAV journal line. On the webhook side, ml-connector accepts Adyen events at a registered endpoint, validates the HMAC-SHA256 signature using the shared webhook key, and posts the result as a cash receipt or payment journal line in NAV. NAV's GL accounts and bank account dimensions are respected: payment journals post to the correct cash account and income/expense dimension per the original invoice. Adyen rate limits and 429 responses trigger exponential backoff and retry. Because Adyen webhooks can be delayed or missed, ml-connector also polls settlement reports on a schedule and reconciles any gaps. Every payment and settlement carries a full audit trail linking the NAV invoice to the Adyen transaction ID.

A real-world example

A small manufacturing distributor runs Dynamics NAV for invoicing, accounts payable, and GL. They take online payments through Adyen and issue refunds on orders. Before the integration, the finance team manually tracked Adyen settlement reports, matched them to NAV invoices line by line, and created bank deposit and refund journal entries in NAV weekly. Reconciliation required spreadsheets, and timing mismatches between when Adyen settled and when NAV recorded the deposit created month-end GL discrepancies. With Adyen and NAV connected via ml-connector, each customer payment flows through Adyen and posts to NAV's bank account and AR in real-time via webhook, refunds reverse to the original invoice automatically, and the bank account reconciles on the day Adyen settles funds.

What you can do

  • Route sales invoice payments from Dynamics NAV through Adyen for authorization, capture, and settlement while maintaining the invoice and customer reference.
  • Post Adyen payment events (authorizations, captures, refunds, cancellations, failures) as bank and cash receipt journals in NAV's general ledger, matched to the original invoice.
  • Map Dynamics NAV customers and vendors to Adyen shopper references so payments and refunds are correctly attributed across both systems.
  • Verify Adyen webhook signatures with HMAC-SHA256 and reconcile settlement reports on a schedule, retrying failed posts and detecting gaps.
  • Track every payment and settlement with a full audit trail linking NAV invoice numbers and dimensions to Adyen transaction IDs and settlement dates.

Questions

What payment events flow from Adyen into Dynamics NAV?
Payment authorizations (AUTHORISATION), captures (CAPTURE), refunds (REFUND), cancellations (CANCELLATION), and failures (REFUND_FAILED) flow from Adyen webhooks into NAV as cash receipt or payment reversal journal lines. Each journal line posts to the bank account and GL with the original invoice reference and dimension, and carries the Adyen payment ID for audit and reconciliation.
How does ml-connector handle Adyen API Key authentication and webhook signature verification?
ml-connector stores the Adyen API Key encrypted and presents it via the X-API-Key header on every payment request to Adyen. For webhooks, ml-connector verifies the HMAC-SHA256 signature using the shared webhook key before processing any event. Requests with invalid signatures are rejected immediately.
Does ml-connector reconcile Adyen settlements to Dynamics NAV bank accounts?
Yes. ml-connector polls Adyen settlement reports on a schedule and matches them to NAV bank deposits and payment journals by invoice reference and amount. If a settlement is delayed or a webhook is missed, the polling reconciliation detects the gap and posts any missing journal lines, keeping the bank account in sync.

Related integrations

Connect Microsoft Dynamics NAV and Adyen

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

Get started