ml-connector
Oracle E-Business SuiteExpensify

Oracle E-Business Suite and Expensify integration

Oracle E-Business Suite runs your enterprise financials and procurement. Expensify captures employee expenses and corporate card transactions. Connecting the two turns submitted expense reports into AP invoices in Oracle without re-keying, so your payables ledger stays current with actual spending, approval workflows are visible in both systems, and month-end close accounts for all employee reimbursements and corporate card charges automatically.

How Oracle E-Business Suite works

Oracle E-Business Suite exposes financials, procurement, HR, and inventory through the Integrated SOA Gateway, a database-level REST or SOAP web service layer deployed per customer instance. Each customer provides their own hostname and port. Authentication uses HTTP Basic Auth (username and password) or a session token obtained from a login endpoint that returns an XML access token. Every request requires application context headers specifying responsibility, application, security group, NLS language, and organization ID. Oracle publishes no webhooks, so expense data is read by polling the AP_INVOICES_ALL table and related vendor and employee tables. The EBS user must have Invoke permissions granted on each deployed REST service via the Integration Repository.

How Expensify works

Expensify is a cloud expense management platform where employees submit expense reports, managers approve them, and corporate card transactions are automatically captured and categorized. The platform exposes reports, expenses, employees, and approval status through a POST-based REST API at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations. All requests use an API key pair (partnerUserID and partnerUserSecret) generated in the Expensify integrations settings and passed inline with every request. Expensify has no webhooks and no test environment, so all API calls run against production. Expense data is pulled via scheduled polling with date-range and status filters.

What moves between them

Expense reports flow one direction: from Expensify into Oracle E-Business Suite. ml-connector polls Expensify on a schedule you set, extracts approved expense reports and their line items, and loads them into Oracle's AP_INVOICES_INTERFACE table as invoices from employee-mapped vendors. Employees are pre-mapped to Oracle vendor records by email or employee ID so each report is attributed to the correct vendor. Corporate card expenses are consolidated per cardholder, and policy tags in Expensify map to Oracle GL account codes and cost centers so each invoice line posts to the correct general ledger account. The import runs through Oracle's concurrent programs, which validate GL account combinations, apply approval controls, and move records to the base AP_INVOICES_ALL table. The synchronization is one-way and scheduled, not real-time.

How ml-connector handles it

ml-connector stores the Expensify API key pair encrypted and the Oracle E-Business Suite hostname, port, and credentials encrypted. For each polling cycle, it requests approved reports from Expensify within a date range, then for each report retrieves the full expense lines. Employee names and email addresses are matched against a pre-built employee-to-vendor mapping (loaded once at setup or refreshed on demand) so each report becomes an AP invoice from that vendor. Expensify policy tags are mapped to Oracle GL account codes via configuration, so expense categories and cost centers land on valid GL combinations. ml-connector validates each GL account combination against the GL_CODE_COMBINATIONS table before submitting to AP_INVOICES_INTERFACE. The batch insert uses HTTPS and the required Oracle application context headers. Because Oracle EBS sessions expire after 30 to 60 minutes, ml-connector detects 401 responses and re-authenticates automatically. Concurrent program execution in Oracle may take minutes to hours, so ml-connector polls the interface table and audit logs to track import status. Every expense report and line item carries a full audit trail, including validation errors and rejection reasons, so failed records can be reviewed and replayed if the underlying issue is resolved.

A real-world example

A professional services firm with 300 employees across three offices uses Oracle E-Business Suite for project accounting and payables. Employees submit expense reports through Expensify weekly after client travel and on-site work. Before the integration, the accounting team exported Expensify reports by hand each week, manually mapped employee names to the correct vendor record, and entered the totals into Oracle's payables forms, re-keying GL account codes from a shared spreadsheet. With Expensify and Oracle E-Business Suite connected, approved reports flow automatically into the AP invoice queue each Friday, pre-mapped to the correct employee vendor and project cost center. The accounting team now reviews Oracle's import log for any validation errors and can re-run imports immediately if a GL account combination needs correction, cutting manual data entry from eight hours per week to less than one hour.

What you can do

  • Pull approved Expensify expense reports on a weekly or daily schedule and load them into Oracle E-Business Suite as AP invoices.
  • Map Expensify employees to Oracle E-Business Suite vendor records by email or employee ID so reports are attributed to the correct payee.
  • Align Expensify expense categories and policy tags with Oracle GL accounts and cost centers so each expense line posts to the correct general ledger account.
  • Handle Oracle's application context headers and session token refresh, and validate GL account combinations before submitting invoices to the AP interface table.
  • Track the import status of each report through Oracle's concurrent program processing and provide a full audit trail of validation errors and rejections.

Questions

How does the integration handle the fact that Oracle E-Business Suite requires application context headers on every API call?
ml-connector accepts the application context configuration (responsibility, application, security group, organization ID, and NLS language) as part of the initial setup and includes these headers on every request to the Integrated SOA Gateway. If the Oracle user's responsibility changes, the configuration is updated in place and applied to all subsequent calls.
What happens if an Expensify expense category does not have a mapped GL account in Oracle E-Business Suite?
ml-connector validates the entire invoice before submitting to AP_INVOICES_INTERFACE. If a line item's GL account combination is not found in GL_CODE_COMBINATIONS, the validation fails and the report is flagged for review. The accounting team corrects the mapping or the expense category configuration in Expensify, and ml-connector can re-run the import with the corrected data.
Does the integration support corporate card expenses as well as employee-submitted reports?
Yes. Expensify captures corporate card transactions automatically and includes them in reports alongside employee-submitted expenses. ml-connector consolidates all expenses within an approved report and loads them as a single AP invoice, with each line item mapped to the employee or cardholder and the appropriate GL account based on the expense category or tag.

Related integrations

Connect Oracle E-Business Suite and Expensify

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

Get started