ml-connector
Oracle JD EdwardsChargebee

Oracle JD Edwards and Chargebee integration

Oracle JD Edwards EnterpriseOne runs financials and the general ledger. Chargebee runs subscription billing, invoicing, and payment collection. Connecting the two means the invoices, credit notes, and payments Chargebee produces flow into the JD Edwards ledger without re-keying, and the customer master stays in agreement with Chargebee billing accounts. ml-connector handles the very different APIs on each side and moves the data on a schedule you control. Because JD Edwards has no native outbound webhooks, the connector polls Chargebee and reads JD Edwards on a timed cycle.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne exposes finance data through the on-premises AIS Server REST gateway, with no fixed public base URL, so the customer provides the AIS host and port. The connector authenticates by posting a JDE username and password to the token request endpoint and passing the returned session token in the jde-AIS-Auth header on every call. Reads use the data service against F-tables such as F0411 (AP ledger), F0911 (account ledger), F0901 (account master), and F0101 (address book), while writes go through named orchestrations like JDE_ORCH_04_Add_Supplier_Invoice or the form service. JDE has no native outbound webhooks, so records are read by polling on the UPMJ or DGJ date fields.

How Chargebee works

Chargebee exposes customers, subscriptions, invoices, credit notes, payment transactions, and items through its REST v2 API on a site-specific subdomain that varies by region. It authenticates with HTTP Basic auth, where the API key is the username and the password is empty, with no OAuth or token exchange. Lists use offset-based pagination capped at 100 records per page, and rate limits return HTTP 429 with a Retry-After header. Chargebee supports outbound webhooks with no HMAC signature, so the recommended pattern is to re-fetch each event by id rather than trust the pushed payload.

What moves between them

The main flow runs from Chargebee into Oracle JD Edwards. ml-connector reads posted Chargebee invoices, credit notes, and payment transactions and posts them into the JD Edwards general ledger and AP ledger as journal entries through orchestrations, mapped to the matching JD Edwards accounts and cost centers. Customer records flow the same direction so the JD Edwards address book reflects Chargebee billing accounts. Item and currency references are aligned so each billing line resolves to a real JD Edwards object account. Chargebee is the system of record for billing, so ml-connector does not write subscriptions or invoices back into Chargebee from the ledger.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Chargebee side it signs each request with Basic auth built from the API key and an empty password, and derives the correct site subdomain from the region. On the JD Edwards side it accepts the full AIS base URL per customer, since JDE publishes no shared hostname, posts credentials to obtain a session token, and re-authenticates automatically on HTTP 444 (invalid token) after an AIS Server restart. Because JDE has no native outbound webhooks, it polls Chargebee invoices, credit notes, and transactions on a schedule, paging with the limit and next_offset values, and honors Chargebee's Retry-After on a 429. Accounts and cost centers are mapped first, so every journal line references a JD Edwards account that already exists. Neither system offers an idempotency-key header, so ml-connector dedupes on the Chargebee resource id and a BullMQ jobId before posting through the JDE orchestration, which avoids double-booking a re-read invoice. Where Chargebee webhooks are enabled, ml-connector re-fetches each event by id rather than trusting the pushed body, and the connector must run from an egress IP on the customer's AIS allowedHosts list or calls return HTTP 405.

A real-world example

A mid-sized SaaS company with roughly 200 employees bills its subscription product through Chargebee and runs Oracle JD Edwards EnterpriseOne for corporate finance and the general ledger. Before the integration, an accountant exported invoice and payment registers from Chargebee each month and keyed the revenue totals into JD Edwards by hand, which left the ledger days behind billing and made revenue accounts hard to reconcile at close. With Oracle JD Edwards and Chargebee connected, each posted invoice, credit note, and payment flows into the JD Edwards ledger within the polling window, allocated to the right account and cost center, and customer changes keep the two systems aligned. Month-end close starts with the revenue accounts already current, and the manual re-keying step is gone.

What you can do

  • Post Chargebee posted invoices, credit notes, and payments into the Oracle JD Edwards ledger through orchestrations.
  • Keep the JD Edwards address book aligned with Chargebee billing accounts.
  • Map Chargebee item and currency codes to JD Edwards accounts and cost centers so billing lands on valid dimensions.
  • Authenticate Chargebee with HTTP Basic auth and Oracle JD Edwards with its AIS session token.
  • Poll Chargebee on a schedule with resource-id and jobId dedup, backoff on 429, retries, and a full audit trail on every record.

Questions

Which direction does data move between Oracle JD Edwards and Chargebee?
The main flow is Chargebee into Oracle JD Edwards. Posted invoices, credit notes, and payment transactions move from Chargebee into the JD Edwards ledger as journal entries, and customer records are aligned the same direction. Chargebee is the billing system of record, so ml-connector does not write subscriptions or invoices back into Chargebee from the ledger.
How does the integration authenticate against each system?
Chargebee uses HTTP Basic auth, where the API key is the username and the password is empty, scoped to the site subdomain for the account's region. JD Edwards uses its AIS session token, obtained by posting the JDE username and password and passed in the jde-AIS-Auth header. ml-connector stores both credential sets encrypted and re-authenticates JDE automatically when the AIS Server returns HTTP 444.
Does Chargebee push events, or does ml-connector poll for them?
Both are supported, but polling is the default because JD Edwards has no native outbound webhooks. ml-connector reads Chargebee invoices, credit notes, and transactions on a schedule, paging with limit and next_offset and honoring Retry-After on a 429. Where Chargebee webhooks are enabled, it re-fetches each event by id rather than trusting the pushed payload, since Chargebee provides no HMAC signature.

Related integrations

Connect Oracle JD Edwards and Chargebee

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

Get started