ml-connector
Oracle JD EdwardsAdyen

Oracle JD Edwards and Adyen integration

Oracle JD Edwards runs financials and procurement on-premises. 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 Oracle JD Edwards as journal entries against the correct accounts and business units. ml-connector handles the very different APIs on each side and reconciles payment activity to the ledger on the cadence you set.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne is on-premises, so there is no shared hostname. It exposes data through the AIS Server REST gateway at a customer-provided base URL, authenticated by a session token passed in the jde-AIS-Auth header. Reads come from the data service against F-tables such as F0911 (account ledger), F0901 (account master), and F0401 (supplier master). Direct table writes are not supported: journal entries and other writes go through named orchestrations the customer configures in Orchestrator Studio, or the F0911Z1 batch table. JDE has no native outbound webhooks, so records are read by polling on the date-updated field.

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 Oracle JD Edwards. ml-connector consumes Adyen settlement and reconciliation reports and posts the resulting journals into the JDE account ledger through a configured orchestration: captured payments, refunds, processing fees, and chargebacks, each mapped to the matching JDE account and business unit. 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 journal entries back into Adyen.

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 JDE side it accepts the full AIS Server base URL per customer, logs in to obtain a session token, sends that token in the jde-AIS-Auth header, and re-authenticates when a call returns HTTP 444 (invalid token), which also happens whenever the AIS Server restarts. Adyen webhooks arrive signed with HMAC-SHA256, so each notification is verified before processing and the pspReference is used as a dedup 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 JDE accounts and business units, which are aligned first so every journal line lands on a valid account. Because JDE cannot write through a direct table POST, journals are created through the named orchestration the customer imports into Orchestrator Studio, and the connector accepts that orchestration name as a config field. The customer's CNC admin must add the connector egress IPs to the AIS Server allowed-hosts list, or calls return HTTP 405. Since JDE has no outbound webhooks, anything not covered by an Adyen push is reached by polling.

A real-world example

A mid-sized direct-to-consumer manufacturer sells finished goods through its own online store and runs Oracle JD Edwards EnterpriseOne on-premises for production, inventory, and finance, 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 JDE, then spent month-end close reconciling the bank deposit against the orders it was supposed to cover. With Oracle JD Edwards and Adyen connected, each settlement report posts into JDE automatically through the journal-entry orchestration, split into the right accounts and business units, 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 Oracle JD Edwards general ledger after every payout.
  • Record captured payments, refunds, processing fees, and chargebacks against the correct JDE accounts and business units.
  • Create JDE journal entries through a configured orchestration, since direct table writes are not supported.
  • Authenticate Adyen with its X-API-Key and the live URL prefix, and JDE with a session token that auto-refreshes on expiry.
  • Verify each Adyen HMAC webhook and dedup on pspReference, with retries and a full audit trail on every record.

Questions

Which direction does data move between Oracle JD Edwards and Adyen?
The flow is Adyen into Oracle JD Edwards. Settlement reports, captured payments, refunds, fees, and chargebacks move from Adyen into the JDE general ledger as journal entries. Adyen is treated as a read-only accounting source, so ml-connector does not write payment instructions or journal entries back into Adyen.
How does ml-connector write journal entries into JD Edwards if direct table writes are not allowed?
JDE does not allow direct REST writes to its tables, so all writes go through a named orchestration the customer imports and configures in Orchestrator Studio, or through the F0911Z1 batch table. ml-connector accepts that orchestration name as a config field and posts each settlement journal through it. The connector reads ledger and account data through the data service for verification and mapping.
How are Adyen webhooks and JDE's lack of webhooks handled?
Adyen webhooks arrive signed with HMAC-SHA256, so ml-connector verifies each one before processing and uses the pspReference as a dedup key, because Adyen can deliver the same notification more than once. Oracle JD Edwards has no native outbound webhooks, so it is reached by polling its data service tables on a schedule, with a poll also backfilling any Adyen report a webhook missed.

Related integrations

Connect Oracle JD Edwards and Adyen

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

Get started