SAP S/4HANA and Adyen integration
SAP S/4HANA runs your finance and accounting. Adyen processes payments, refunds, and payouts at checkout. Connecting the two brings settled card and payment activity into the general ledger without manual entry. After each Adyen settlement, the captured amounts, refunds, processing fees, and chargebacks post into SAP S/4HANA as journal entries against the correct GL accounts and cost centers. ml-connector handles the very different APIs on each side and reconciles payment activity to the ledger on the cadence you set.
What moves between them
The flow runs from Adyen into SAP S/4HANA. ml-connector consumes Adyen settlement and reconciliation reports and posts the resulting journals into the SAP general ledger as journal entries: captured payments, refunds, processing fees, and chargebacks, each mapped to the matching SAP GL account and cost center. Capture, refund, and report-available webhooks trigger the work as soon as activity settles, and a scheduled OData 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 SAP itself has no outbound payment-initiation API to drive.
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. On the SAP side it requests an OAuth 2.0 client credentials token against the tenant token URL from the Communication Arrangement, caches it until it nears its short expiry, and fetches an X-CSRF-Token before each journal entry posting, since SAP returns HTTP 403 on a write without one. 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 SAP GL accounts and cost centers, which are aligned first so every journal line lands on a valid dimension. SAP cloud does not push webhooks without Event Mesh, so it is polled with a LastChangeDateTime filter rather than waiting for a push. Adyen rate limits return a too-many-requests error and SAP returns HTTP 429 with Retry-After, so ml-connector backs off and retries, and every record carries a full audit trail and can be replayed if a SAP post fails.
A real-world example
A mid-sized direct-to-consumer apparel maker sells finished goods through its own online store and runs SAP S/4HANA Cloud 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 keyed the gross sales, refunds, and processing fees into SAP by hand, then spent month-end close reconciling the bank deposit against the orders it was supposed to cover. With SAP S/4HANA and Adyen connected, each settlement report posts into SAP automatically as a journal entry, split into the right GL accounts and cost centers, 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 SAP S/4HANA general ledger as journal entries after every payout.
- Record captured payments, refunds, processing fees, and chargebacks against the correct SAP GL accounts and cost centers.
- 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 SAP with OAuth 2.0 plus the X-CSRF-Token required for every write.
- Poll SAP on a schedule with retries and a full audit trail on every record, because SAP cloud does not push webhooks without Event Mesh.
Questions
- Which direction does data move between SAP S/4HANA and Adyen?
- The flow is Adyen into SAP S/4HANA. Settlement reports, captures, refunds, fees, and chargebacks move from Adyen into the SAP general ledger as journal entries. 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 SAP S/4HANA?
- 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 SAP general ledger as journal entries rather than as supplier invoices.
- How does the integration handle Adyen webhooks and SAP write requirements?
- Adyen pushes signed HMAC-SHA256 notifications such as CAPTURE, REFUND, and REPORT_AVAILABLE, which ml-connector verifies and deduplicates by pspReference before posting to SAP. Because SAP requires an X-CSRF-Token on every write and does not push webhooks without Event Mesh, ml-connector fetches that token before each posting and polls SAP on a schedule you control to backfill anything a webhook missed.
Related integrations
More SAP S/4HANA integrations
Other systems that connect to Adyen
Connect SAP S/4HANA and Adyen
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started