Sage 300 and Adyen integration
Sage 300 runs accounts payable, accounts receivable, and general ledger for mid-market finance teams. Adyen processes online payments, captures, refunds, and payouts across channels. Connecting the two keeps your payment records aligned with your invoices and ledger entries, so settlement reports from Adyen post automatically into Sage 300 without manual reconciliation. ml-connector handles Sage 300's Basic Auth with uppercase credentials and Adyen's API key authentication, maps transactions to invoices, and tracks every record for audit and replay.
What moves between them
Sage 300 invoices and payments flow to Adyen via periodic poll to track which invoices have been settled. Adyen settlement and transaction records flow back to Sage 300; ml-connector matches Adyen transactions against Sage 300 invoices by amount and customer, posts settlement batches to Sage 300's accounts payable, and posts net settlement amounts to the general ledger journal batches. The flow is one-directional for payment records (Adyen to Sage 300) and read-only on the Adyen side; Sage 300 invoices are the source of truth for what should be settled.
How ml-connector handles it
ml-connector polls Sage 300 on a schedule for open invoices in ARInvoiceBatches and payment records in ARReceiptAndAdjustmentBatches, with date filters and pagination to avoid timeouts. It stores both credential sets encrypted: Sage 300 credentials as uppercase Basic Auth header, and Adyen API key in the X-API-Key header. On each poll, it reads Adyen settlement and transaction events either via webhook signature verification or by querying recent reports, matches transactions to Sage 300 invoices by amount and customer account, and stages settlement records for posting. To post back to Sage 300, it batches matched settlements into ARReceiptAndAdjustmentBatches for accounts receivable and GLJournalBatches for the general ledger, posting net settlement amounts to the mapped GL account for payment processing. Retries are applied on HTTP timeouts and 5xx errors; Sage 300 IIS timeouts on large batches (1500+ calls) are addressed by splitting polls into smaller date windows. Every record carries a source transaction ID, amount, date, and full audit trail for replay if a downstream post fails.
A real-world example
A regional e-commerce company processes customer payments through Adyen for online orders and uses Sage 300 for order fulfillment and finance. Before the integration, the finance team exported settlement reports from Adyen daily, matched transactions manually to Sage 300 invoices by customer and amount, and entered the net settlement into accounts receivable twice a week. Reconciliation took four hours per week and errors were common due to timing differences between Adyen settlement and Sage 300 invoice dates. With Sage 300 and Adyen connected, settlement reports from Adyen are matched automatically to invoices and posted to both accounts receivable and the general ledger on a daily schedule, eliminating the manual matching step and keeping the two systems in agreement.
What you can do
- Poll Sage 300 invoices and match them against Adyen settlement transactions by customer account and amount.
- Post Adyen settlement records to Sage 300 accounts receivable and general ledger with full audit trail.
- Authenticate Sage 300 with HTTP Basic Auth using uppercase credentials and Adyen with API key header authentication.
- Verify Adyen webhook signatures using HMAC-SHA256 and retry failed Sage 300 posts on timeout.
- Handle IIS AppPool timeouts by splitting large polling windows into smaller date ranges and replaying failed settlements.
Questions
- How does the integration match Adyen transactions to Sage 300 invoices?
- ml-connector polls Sage 300's ARInvoiceBatches for open invoices, keying on customer account number and invoice amount. It matches each Adyen transaction (CAPTURE, REFUND, TRANSFER) against open invoices by comparing the customer's Adyen merchant account to their Sage 300 customer record and the transaction amount to the invoice total or partial payment. Unmatched transactions are flagged for manual review.
- What happens if Sage 300's IIS server times out during a large poll?
- Sage 300 IIS AppPool can timeout on queries with 1500+ API calls. ml-connector detects timeout errors and automatically splits the polling window into smaller date ranges, retrying each chunk. If Sage 300 is temporarily unreachable, the connector backs off exponentially and tries again on the next scheduled poll, preserving pending settlement records in its queue.
- Can the integration reverse a posted settlement or handle Adyen refunds and disputes?
- Yes. When Adyen issues a REFUND or CANCELLATION event, ml-connector creates a matching reversal entry in Sage 300's ARReceiptAndAdjustmentBatches with a negative amount, reversing the original settlement post. Adyen chargebacks and disputes flow as notification events via webhook; ml-connector logs them to the audit trail and flags them for manual dispute handling, since Sage 300 has no native dispute resolution.
Related integrations
More Sage 300 integrations
Other systems that connect to Adyen
Connect Sage 300 and Adyen
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started