ml-connector
Oracle E-Business SuiteStripe

Oracle E-Business Suite and Stripe integration

Oracle E-Business Suite manages your accounts receivable, invoices, and general ledger. Stripe processes your online payments and subscription charges. Connecting the two lets you sync customers from Oracle E-Business Suite into Stripe, record Stripe charges back into your GL automatically, and close AR faster without manual re-keying of payments. The integration keeps your cash receipts journals aligned with actual card and bank deposits, and your AR aging reports match reality.

How Oracle E-Business Suite works

Oracle E-Business Suite (R12.2) exposes AR invoices (RA_INTERFACE_LINES_ALL), customers (HZ_CUST_ACCOUNTS, HZ_PARTIES), GL accounts (GL_CODE_COMBINATIONS), and journal entries (GL_JE_HEADERS, GL_JE_LINES) through the Integrated SOA Gateway (ISG), a REST API deployed by each customer on their own hostname and port. Authentication uses HTTP Basic Auth or session tokens obtained via login endpoint; every request must include application context headers for responsibility, organization, security group, and language. Oracle E-Business Suite has no modern webhook system, so ml-connector polls the ISG for open invoices and payments on a schedule; internal Workflow Business Events exist but require Oracle Integration Cloud as middleware, so polling is the standard approach.

How Stripe works

Stripe exposes customers, invoices, charges, payment intents, subscriptions, and transactions through HTTPS REST API at https://api.stripe.com/v1, authenticated with an API key sent via HTTP Basic Auth (username=key, empty password). Stripe sends webhook events (payment_intent.succeeded, charge.captured, invoice.payment_succeeded) to a registered endpoint, but ml-connector verifies the Stripe-Signature header (HMAC-SHA256) on every webhook and can also poll for payment intents and charges via list endpoints. Stripe returns responses as JSON and rate-limits per gateway node; prices and customers are immutable or require archive, not update.

What moves between them

Customers flow from Oracle E-Business Suite to Stripe so that Stripe knows which customer an incoming payment belongs to. Stripe charges and successful payment intents flow back into Oracle E-Business Suite: ml-connector reads each charge from Stripe, maps it to the matching Oracle E-Business Suite customer and open invoice, and posts a cash receipt journal entry into Oracle E-Business Suite's GL to the cash and AR accounts. The mapping is exact: Stripe charge amount must match the Oracle E-Business Suite invoice amount (or a partial payment flag exists). Charges arrive in Stripe real-time and ml-connector can receive them via webhook or poll on a daily basis, depending on your preference.

How ml-connector handles it

ml-connector stores the Oracle E-Business Suite ISG hostname, username, and password encrypted per customer, and calls the login endpoint to obtain a session token; if a later call returns 401, it re-authenticates and retries. The Stripe API key is also stored encrypted. On Stripe's side, ml-connector listens for webhook events (charge.succeeded, payment_intent.succeeded) at a registered endpoint, validates the Stripe-Signature header using the webhook signing secret, and then reads the full charge object from Stripe's API to confirm the current state (at-least-once delivery means the webhook may arrive late or out of order). For Oracle E-Business Suite, ml-connector maps the Stripe charge to an open RA_INTERFACE_LINES_ALL invoice by customer account and amount, then inserts a GL_JE_LINES row for the cash receipt (posting to the AR and cash accounts you configure). Because Oracle E-Business Suite writes to interface tables and concurrent programs import asynchronously, ml-connector tracks the GL_JE_HEADERS status and retries with exponential backoff if the journal fails validation. Stripe rate limits (typically 100 requests/second) are handled with backoff; if the Stripe API returns 429, ml-connector pauses and retries within a few seconds.

A real-world example

A SaaS company invoices customers monthly via Oracle E-Business Suite AR and accepts payments via Stripe through their website and mobile app. Before the integration, their finance team exported daily Stripe deposit reports, matched the charges to Oracle E-Business Suite invoices by customer name, and manually entered the cash receipts into Oracle E-Business Suite's GL each morning. With Stripe and Oracle E-Business Suite connected, charges post into the GL automatically within minutes of being captured in Stripe, customers sync once per day so Stripe stays current, and month-end close starts with AR fully reconciled to actual deposits.

What you can do

  • Sync customers from Oracle E-Business Suite to Stripe daily so Stripe knows the correct billable entity for each incoming charge.
  • Receive Stripe charge and payment intent webhooks, validate the signature, and record successful payments into Oracle E-Business Suite's GL as cash receipts.
  • Map Stripe charges to Oracle E-Business Suite invoices by customer and amount, handling partial payments and multi-invoice charges.
  • Authenticate to Oracle E-Business Suite via the ISG with HTTP Basic Auth and session tokens, re-authenticating when tokens expire.
  • Track journal entry import status in Oracle E-Business Suite and retry if validation fails, with exponential backoff and full audit trail on every record.

Questions

How do you handle the Stripe webhook signature and ensure accurate data?
ml-connector listens for Stripe webhooks at a registered endpoint and validates the Stripe-Signature header using HMAC-SHA256 with the webhook signing secret. Since Stripe delivers webhooks at-least-once and may replay events, ml-connector always re-fetches the charge object from Stripe's API after webhook arrival to confirm the current state before recording the payment into Oracle E-Business Suite.
Which direction does data flow between Oracle E-Business Suite and Stripe?
Customers flow from Oracle E-Business Suite to Stripe daily so Stripe knows the correct billable entity. Payment data flows from Stripe back to Oracle E-Business Suite: ml-connector reads Stripe charges and payment intents, maps them to matching Oracle E-Business Suite invoices by customer and amount, and posts cash receipt journals into the GL.
What happens if an Oracle E-Business Suite journal entry fails validation or a Stripe charge disputes?
If a GL journal fails validation in the ISG, ml-connector retries with exponential backoff and logs the error in the audit trail so the record can be replayed once the issue is fixed. If a Stripe charge results in a dispute, ml-connector does not post it until the dispute is resolved; the charge remains in the audit log for manual review.

Related integrations

Connect Oracle E-Business Suite and Stripe

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

Get started