ml-connector
Oracle E-Business SuiteZuora

Oracle E-Business Suite and Zuora integration

Oracle E-Business Suite runs your core financials and procurement. Zuora handles subscription billing and order-to-cash for recurring revenue. Connecting the two keeps your subscription orders, invoices, and payments flowing into Oracle without manual re-entry. Subscriptions created in Zuora become accounts in Oracle, Zuora invoices post to Oracle's general ledger with the correct GL dimensions, and payment receipts from Zuora automatically match to Oracle invoices so month-end close is faster and more accurate.

How Oracle E-Business Suite works

Oracle E-Business Suite exposes financial and procurement data through the Integrated SOA Gateway (ISG), which publishes REST or SOAP web services from the Integration Repository. Each customer instance has its own ISG hostname and port; there is no fixed global URL. Authentication uses HTTP Basic Auth or a session token obtained from the login endpoint, and calls must include Oracle application context headers (responsibility, organization, security group, language, and legal entity). Because EBS has no native webhook system, data is read by polling open interface views filtered by LAST_UPDATE_DATE with limit-offset pagination. Write operations to open interface tables are asynchronous: the connector posts a record, then Oracle's concurrent programs import and validate it into the base tables, a process that can take minutes to hours.

How Zuora works

Zuora is a REST API platform for subscription billing and revenue management, covering product catalogs, subscriptions, invoicing, payments, and revenue recognition. The base URL must be captured from the customer tenant (rest.zuora.com or a regional variant). Authentication uses OAuth 2.0 Client Credentials: the connector exchanges client_id and client_secret for a 1-hour bearer token, which is reused across requests. Zuora supports Callout Notifications (webhooks) on billing events (invoice posted, invoice due), payment events (payment processed for electronic payments only), and subscription changes (renewed, cancelled, amended). Webhook payloads are minimal and contain only the object ID, so the connector calls back to fetch the full record. Zuora imposes rate limits (50,000 RPM in production) and enforces cursor-based pagination with a maximum page size of 40 records per call.

What moves between them

The primary flow runs from Zuora into Oracle E-Business Suite. After a subscription is created or an invoice is posted in Zuora, ml-connector polls the subscription and invoice records, maps the Zuora account to an Oracle customer account (HZ_CUST_ACCOUNTS), translates the subscription items to Oracle line items, and posts the invoice to Oracle's AR_INTERFACE_LINES_ALL open interface table. Oracle's concurrent programs then import the interface records into the accounts receivable base tables and the general ledger. Payment receipts from Zuora (electronic payments only) are polled and matched to Oracle invoices so the AR aging is kept current. Cost centers, product mappings, and GL account assignments are configured once and reused across all invoices so no manual mapping is needed for each transaction.

How ml-connector handles it

ml-connector stores the Oracle ISG hostname, port, and Basic Auth credentials encrypted, plus the customer's Oracle organization context headers (responsibility, organization ID, security group). At runtime it obtains a session token via the ISG login endpoint, includes it in every Oracle API call, and re-authenticates on a 401 response when the session expires (typically 30-60 minutes). For Zuora, it caches the OAuth bearer token (which lasts 1 hour) and refreshes it before expiry. The connector polls Zuora subscriptions and invoices on a schedule and uses Zuora's webhook notifications where configured to receive real-time alerts on key events (invoice posted, payment processed); webhook payloads trigger a callback fetch of the full record. On the Oracle side, ml-connector inserts records into open interface tables (AR_INTERFACE_LINES_ALL, AP_INVOICES_INTERFACE) and then monitors for the concurrent program to complete the import into the base tables. If the import fails (invalid GL account, incorrect organization context, or blocked AR workflow), the full error is captured and the record is held for manual review or replay. Zuora rate limits (50,000 RPM) are respected with exponential backoff on 429 responses. All records carry a complete audit trail showing the source ID from Zuora, the target ID from Oracle, the mapping applied, and the result of the import.

A real-world example

A B2B SaaS company with a large on-premises Oracle EBS instance for core accounting runs Zuora for subscription management and billing. Before the integration, the accounting team exported subscription and invoice data from Zuora weekly, manually created customer accounts in Oracle, keyed in line items from Zuora invoices, and posted the AR and GL entries by hand. The process took 2-3 days per week and errors in mapping subscriptions to the correct GL account or cost center were found late in the month-end close. With Oracle E-Business Suite and Zuora connected, each new subscription creates a customer record in Oracle instantly, invoices post automatically to the correct GL accounts matched by product, and payment receipts reconcile against Oracle invoices without manual lookup. The accounting team reclaimed the 2-3 days and month-end close now starts with AR and GL already aligned.

What you can do

  • Sync subscription and invoice data from Zuora into Oracle E-Business Suite on a schedule or via webhook notifications.
  • Map Zuora subscriptions to Oracle customer accounts and line items with configurable GL account and cost center assignment.
  • Authenticate to the Oracle ISG with session token refresh and handle multi-hour concurrent program import delays.
  • Poll Zuora on a schedule with exponential backoff on rate limits, respecting the 50,000 RPM production threshold.
  • Maintain a full audit trail of every invoice and payment from Zuora to Oracle with source IDs, mappings applied, and import results.

Questions

How does the connector handle Oracle ISG authentication and session timeouts?
ml-connector obtains a session token from the ISG login endpoint using the stored Basic Auth credentials and application context headers, then includes the token in every call to the ISG. When a call returns 401 (token expired), the connector re-authenticates immediately and retries the request. Since session timeouts in EBS are typically 30-60 minutes, the connector handles re-auth as a routine part of polling.
What happens when a Zuora invoice is posted and Oracle's concurrent program is still importing it?
ml-connector posts the invoice to Oracle's open interface table (AR_INTERFACE_LINES_ALL) and then polls the base table (RA_INTERFACE_LINES_ALL) to check when the import is complete. If the import fails (for example, an invalid GL account or incorrect organization context), the error is captured and the record is held for review or replay.
Which Zuora payment events trigger a sync to Oracle, and why only electronic payments?
ml-connector syncs payments when Zuora fires the Payment Processed notification, but only for electronic payments. External payments (checks, bank transfers recorded offline) and manual payments (entered directly in Zuora) do not send notifications in Zuora, so the connector must poll to detect them. Electronic payments are synced to Oracle AR to match the invoice receipt and keep the aging current.

Related integrations

Connect Oracle E-Business Suite and Zuora

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

Get started