ml-connector
AcumaticaAdyen

Acumatica and Adyen integration

Acumatica runs your finance and operations. Adyen processes your card and alternative payments. Connecting the two means every Adyen settlement lands in the Acumatica general ledger without re-keying from a downloaded report. ml-connector reads Adyen's reconciliation reports and payment events, then posts the gross sales, refunds, and processor fees into Acumatica against the GL accounts you choose. Because Adyen has no invoice or vendor records of its own, the integration is built around the records Adyen does expose: transactions, refunds, payouts, disputes, and settlement reports.

How Acumatica works

Acumatica Cloud ERP exposes vendors, customers, AP bills, sales invoices, payments, GL accounts, and journal transactions through its Contract-Based REST API, served as JSON over HTTPS from a customer-specific instance URL. The endpoint version in the URL must match the running ERP release exactly, or the call returns 404, and all field values are wrapped in value objects. It authenticates with OAuth 2.0 through the built-in identity server, or with a legacy session cookie. Acumatica can push record changes via its Push Notifications system using a shared-secret header, but most integrations poll using a filter on LastModifiedDateTime.

How Adyen works

Adyen exposes payments, captures, refunds, payouts, disputes, and reconciliation reports through versioned REST APIs, each on its own base URL, with a merchant-specific live URL prefix that must be supplied for production calls. Authentication is an API key sent in the X-API-Key header, or Basic auth, scoped to a company or merchant account. Adyen has full webhook support with HMAC-SHA256 signatures, and pushes a REPORT_AVAILABLE event when a new settlement or reconciliation report is ready to download from a signed URL. Adyen has no vendor, invoice, purchase order, or GL account objects, so reconciliation reports and the pspReference are the canonical source for accounting.

What moves between them

The flow runs from Adyen into Acumatica. When Adyen fires a REPORT_AVAILABLE webhook, ml-connector downloads the settlement or reconciliation report from the signed URL, parses each line, and posts the gross receipts, refunds, chargebacks, and processor fees into Acumatica as journal transactions or applied payments against the GL accounts you map. Payment, capture, and refund events flow the same direction so cash movements are recorded as they clear. Every posted entry carries the Adyen pspReference as its external reference, so an Acumatica line can be traced back to the originating transaction. Acumatica is the system of record for the ledger; ml-connector does not write invoices or vendors back to Adyen because Adyen has no such objects.

How ml-connector handles it

ml-connector stores both credential sets encrypted and sends the Adyen X-API-Key with the merchant's live URL prefix on every call, while authenticating to Acumatica with OAuth 2.0 against the customer's instance URL and the exact endpoint version. Incoming Adyen webhooks are verified by recomputing the HMAC-SHA256 signature before any posting happens, and because Adyen can deliver the same notification more than once, the pspReference is used to deduplicate so a transaction is never booked twice. Settlement report lines are mapped to Acumatica GL accounts by merchant account and fee type, and amounts are converted from Adyen minor units into the currency and value-wrapped fields Acumatica expects. On the Acumatica side, ml-connector polls on LastModifiedDateTime as a catch-up safety net in case a push is missed, refreshes the OAuth token on a 401, and backs off with jitter when Acumatica returns 429 under its license rate limit. Each posting uses an idempotency check against the natural key so a retry after a failed call updates rather than duplicates, and every record carries a full audit trail and can be replayed.

A real-world example

A mid-sized online retailer running Acumatica for finance and inventory takes card and wallet payments through Adyen across its web store and a handful of physical locations. Before the integration, an accountant logged into the Adyen Customer Area each morning, downloaded the prior day's settlement report, and hand-entered the gross sales, refunds, and the processor fees into Acumatica, then spent the end of each month trying to tie the bank deposit back to thousands of individual transactions. With Acumatica and Adyen connected, each settlement report posts into the Acumatica ledger automatically, split into receipts, refunds, and fees against the right accounts, with the Adyen pspReference on every line. Bank reconciliation becomes a match against entries that are already in the ledger, and the manual download-and-key step is gone.

What you can do

  • Post Adyen settlement and reconciliation report lines into Acumatica's general ledger, split into receipts, refunds, and processor fees.
  • Record Adyen payment, capture, and refund events as Acumatica journal entries or applied payments as they clear.
  • Tag every Acumatica entry with the Adyen pspReference so each line traces back to the originating transaction.
  • Verify the Adyen webhook HMAC-SHA256 signature and deduplicate on pspReference before anything posts to the ledger.
  • Bridge Adyen's API key and live URL prefix with Acumatica OAuth and its version-locked endpoint, with retries and a full audit trail.

Questions

Which direction does data move between Acumatica and Adyen?
Data moves from Adyen into Acumatica. Settlement reports and payment, capture, and refund events flow from Adyen and post into the Acumatica general ledger as journal entries or applied payments. ml-connector does not write invoices or vendors back to Adyen, because Adyen is a payments platform and has no such records.
How does the integration get accounting data out of Adyen if it has no invoices or GL?
Adyen exposes settlement and reconciliation reports, which are the canonical source for accounting. When Adyen fires a REPORT_AVAILABLE webhook, ml-connector downloads the report from its signed URL, parses each line, and maps the receipts, refunds, and fees to the Acumatica GL accounts you choose. The Adyen pspReference is carried onto each Acumatica entry as the external transaction reference.
How are the two different authentication schemes handled?
ml-connector stores both credential sets encrypted. It sends the Adyen API key in the X-API-Key header along with the merchant's live URL prefix, and authenticates to Acumatica using OAuth 2.0 against the customer's instance URL and its exact endpoint version. It refreshes the Acumatica token on a 401 and verifies the Adyen webhook HMAC signature before processing any event.

Related integrations

Connect Acumatica and Adyen

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

Get started