ml-connector
Microsoft Dynamics 365 Business CentralAdyen

Microsoft Dynamics 365 Business Central and Adyen integration

Microsoft Dynamics 365 Business Central runs finance and operations. Adyen processes card payments, refunds, and payouts. Connecting the two brings settled payment activity into the general ledger without re-keying. After each Adyen settlement, the captured amounts, refunds, processing fees, and chargebacks post into Business Central against the correct GL accounts and dimensions, and customer payments can be applied to the sales invoices they settle. ml-connector handles the very different APIs on each side and reconciles payment activity to the ledger on the cadence you set.

How Microsoft Dynamics 365 Business Central works

Microsoft Dynamics 365 Business Central exposes vendors, customers, sales and purchase invoices, GL accounts, dimensions, journals, and customer payment journals through the Business Central API v2.0, a REST API built on OData v4. It authenticates with Microsoft Entra ID OAuth 2.0 client credentials scoped to a named environment, and every resource nests under a company. GL accounts and general ledger entries are read-only, but financial postings are written through generic journal lines and customer payment journals. Business Central supports push subscriptions that signal when a record changes, but those notifications carry no data and expire every three days, so the connector also polls with an OData lastModifiedDateTime filter.

How Adyen works

Adyen is a payments platform, not an ERP, so it has no native vendor, invoice, purchase order, GL account, or customer record objects. It exposes payments, captures, refunds, payouts and transfers, disputes, and reconciliation reports through versioned REST APIs, each with its own base URL. Every call carries an X-API-Key header or Basic auth scoped to a company or merchant account, and live endpoints require a merchant-specific URL prefix. Adyen pushes events such as AUTHORISATION, CAPTURE, REFUND, CHARGEBACK, and REPORT_AVAILABLE by webhook, signed with HMAC-SHA256. Settlement and reconciliation reports are the canonical source for accounting, since there is no batch pull API for historical transactions.

What moves between them

The flow runs from Adyen into Microsoft Dynamics 365 Business Central. ml-connector consumes Adyen settlement and reconciliation reports and posts the resulting journals into the Business Central general ledger through generic journal lines: captured payments, refunds, processing fees, and chargebacks, each mapped to the matching GL account and dimension values. Where an Adyen payment carries a merchantReference that ties to a Business Central sales invoice, the capture is applied as a customer payment so the invoice is marked paid. Capture, refund, and report-available webhooks from Adyen trigger the work as soon as activity settles, and a scheduled poll backfills anything a webhook missed. Adyen is treated as a read-only accounting source, so ml-connector never writes payment instructions or financial entries back into Adyen.

How ml-connector handles it

ml-connector stores both credential sets encrypted. It requests a Microsoft Entra ID OAuth token for the Business Central environment and refreshes it on expiry, and it sends the Adyen X-API-Key on every request, switching to the merchant-specific live URL prefix when the environment is live. Adyen webhooks arrive signed with HMAC-SHA256, so each notification is verified before processing and the pspReference is used as an idempotency key, because Adyen can deliver the same notification more than once. On REPORT_AVAILABLE, the settlement report is downloaded from the signed URL, parsed, and its lines mapped to Business Central GL accounts and dimensions, which are aligned first so every journal line lands on a valid account and dimension. Because Business Central GL accounts and ledger entries are read-only, postings are written as general journal lines, and captures that match an open sales invoice are recorded through a customer payment journal. Business Central change subscriptions expire every three days, so ml-connector renews them before expiry and falls back to an OData lastModifiedDateTime poll. Adyen rate limits return a too-many-requests error and Business Central returns HTTP 429 when throttled, so ml-connector backs off with jitter and retries, and every record carries a full audit trail and can be replayed if a Business Central post fails.

A real-world example

A direct-to-consumer manufacturer with around 200 employees sells finished goods through its own online store and uses Microsoft Dynamics 365 Business Central for finance and inventory, with Adyen as the payment processor at checkout. Before the integration, the finance team downloaded Adyen settlement reports each day and manually entered the gross sales, refunds, and processing fees into Business Central, then spent month-end close reconciling the bank deposit against the orders it was supposed to cover. With Business Central and Adyen connected, each settlement report posts into Business Central automatically as journal lines split across the right GL accounts and dimensions, so the payment fees are recognized and the deposits already tie out. The daily re-keying step is gone and close starts from reconciled numbers.

What you can do

  • Post Adyen settlement and reconciliation reports into the Business Central general ledger as journal lines after every payout.
  • Record captured payments, refunds, processing fees, and chargebacks against the correct Business Central GL accounts and dimensions.
  • Apply Adyen captures to matching Business Central sales invoices through a customer payment journal where a merchant reference ties them together.
  • Receive Adyen capture, refund, and report-available webhooks, verified by HMAC-SHA256, and act on them as activity settles.
  • Authenticate Adyen with its API key and live URL prefix, and Business Central with Microsoft Entra ID OAuth, with retries and a full audit trail on every record.

Questions

Which direction does data move between Microsoft Dynamics 365 Business Central and Adyen?
The flow is Adyen into Business Central. Settlement reports, captures, refunds, fees, and chargebacks move from Adyen into the Business Central general ledger. Adyen is treated as a read-only accounting source, so ml-connector does not write payment instructions or financial entries back into Adyen.
Does Adyen post invoices or purchase orders into Business Central?
No. Adyen is a payments platform and has no native invoice, purchase order, or vendor objects. What it provides is payment, refund, payout, dispute, and reconciliation report data, and ml-connector maps that activity into the Business Central general ledger as journal lines rather than as AP or AR documents.
How does the integration handle Adyen webhooks and Business Central subscriptions?
Adyen webhooks are signed with HMAC-SHA256, so ml-connector verifies each notification before processing and uses the pspReference to dedup redelivered events. Business Central also offers change subscriptions, but they carry no data and expire every three days, so ml-connector renews them ahead of expiry and backstops them with a scheduled OData poll filtered on the last modified time.

Related integrations

Connect Microsoft Dynamics 365 Business Central and Adyen

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

Get started