ml-connector
Microsoft Dynamics GPAdyen

Microsoft Dynamics GP and Adyen integration

Microsoft Dynamics GP runs financials and the general ledger on-premises. Adyen processes card payments, refunds, and payouts. Connecting the two brings settled payment activity into the ledger without re-keying settlement reports. After each Adyen settlement, the captured amounts, refunds, processing fees, and chargebacks post into Microsoft Dynamics GP as unposted journal entries against the correct GL accounts. 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 GP works

Microsoft Dynamics GP is an on-premises ERP that exposes vendors, payables invoices, purchase orders, AP payments, GL accounts, and GL journal entries through SBA REST on GP 2015 and later, or through SOAP Web Services on older installs, with eConnect as a lower-level fallback. There is no cloud endpoint, so the customer must expose the SBA or SOAP service through their firewall or relay calls through a local agent. Authentication is Windows Authentication tied to a dedicated Active Directory domain account, with no OAuth, API keys, or tokens, and the company name in the URL is the actual SQL Server database name. GP has no webhooks or event stream, so records are read by polling on ModifiedDate, and SBA write bodies must wrap data in a Payload key.

How Adyen works

Adyen is a payments platform, not an ERP, so it has no native vendor, invoice, purchase order, or GL account 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 GP. ml-connector consumes Adyen settlement and reconciliation reports and posts the resulting entries into the GP general ledger as unposted journal batches: captured payments, refunds, processing fees, and chargebacks, each mapped to the matching GP GL account. Capture, refund, and report-available webhooks 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, and it never posts a GP batch automatically when the customer prefers to review it first.

How ml-connector handles it

ml-connector stores both credential sets encrypted and sends the Adyen X-API-Key on every request, switching to the merchant-specific live URL prefix when the environment is live, because Adyen has no generic live hostname. On the GP side it presents the Windows domain account over Negotiate or NTLM against the customer's SBA or SOAP endpoint, since GP has no OAuth or API key, and it targets the company by its SQL Server database name rather than the display name. Adyen webhooks arrive signed with HMAC-SHA256, so each notification is verified before processing and the pspReference is used as an idempotency key, since 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 GP GL accounts, which are aligned first so every journal line lands on a valid account. GP journal entries are created as unposted batches through the GL transaction operation, and amounts in minor units are converted to GP decimals, with CurrencyId and ExchangeRate supplied when the company runs multicurrency and the fiscal period confirmed open. Because GP has no inbound webhook and no idempotency header, ml-connector polls it on a schedule and checks for an existing batch before posting to avoid duplicates, and it keeps polling gentle since aggressive calls hit the customer's own SQL Server. Adyen rate limits return a too-many-requests error, so ml-connector backs off and retries, and every record carries a full audit trail and can be replayed if a GP write fails.

A real-world example

A mid-sized specialty retailer with about 200 staff runs Microsoft Dynamics GP on its own server for financials and collects card payments online and in store through Adyen. Before the integration, the accounting team downloaded Adyen settlement reports each day and hand-keyed the gross receipts, refunds, and processing fees into GP as journal entries, then spent month-end close reconciling each bank deposit against the payments it was supposed to cover. With Microsoft Dynamics GP and Adyen connected, each settlement report posts into GP automatically as an unposted batch split across the right GL accounts, so the processing fees are recognized and the deposits already tie out before anyone reviews them. 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 Microsoft Dynamics GP general ledger after every payout.
  • Record captured payments, refunds, processing fees, and chargebacks against the correct GP GL accounts as unposted batches.
  • 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 Microsoft Dynamics GP with its Windows domain account.
  • Poll GP on a schedule with retries and a full audit trail on every record, because GP is on-premises and cannot be pushed to.

Questions

Which direction does data move between Microsoft Dynamics GP and Adyen?
The flow is Adyen into Microsoft Dynamics GP. Settlement reports, captures, refunds, fees, and chargebacks move from Adyen into the GP general ledger as unposted journal batches. 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 Microsoft Dynamics GP?
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 GP general ledger as journal entries rather than as AP documents.
How does the integration reach an on-premises GP server that has no webhooks?
Microsoft Dynamics GP runs on the customer's own server with no cloud endpoint, so the customer exposes the SBA or SOAP service through their firewall or relays calls through a local agent, and ml-connector authenticates with a Windows domain account. Because GP has no webhooks or idempotency header, ml-connector polls it on a schedule, keeps the call rate gentle to protect the customer's SQL Server, and checks for an existing batch before posting.

Related integrations

Connect Microsoft Dynamics GP and Adyen

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

Get started