ml-connector
Oracle Fusion Cloud ERPPlaid

Oracle Fusion Cloud ERP and Plaid integration

Oracle Fusion Cloud ERP maintains your general ledger, accounts payable, and accounts receivable in one system. Plaid connects your actual bank accounts so you see every transaction as it settles. Connecting the two means bank deposits and payments flow directly into Oracle's subledger automatically, eliminating manual cash application and reconciliation work. Every transaction is verified, matched to customer or vendor records, and posted to the correct GL account and cost center.

How Oracle Fusion Cloud ERP works

Oracle Fusion Cloud ERP exposes journalLines, journalHeaders, receivablesInvoices, payments, suppliers, and glAccounts through REST APIs at a tenant-specific pod URL. Authentication uses OAuth2 Client Credentials with bearer tokens valid roughly one hour. The API supports OData-style filtering by LastUpdateDate or CreationDate, so ml-connector can poll for recent changes every 5 to 15 minutes. Bulk import via FBDI (File Based Data Import) is also available for batch journal posting. Oracle Fusion does not offer direct outbound webhooks unless integrated with Oracle Integration Cloud middleware, so polling is the standard pattern for external connectors.

How Plaid works

Plaid exposes transactions, account balances, and transfer history through REST POST endpoints delivered via webhooks to a registered URL. Every webhook carries a JWT signature verified with ES256 and a public key from Plaid's JWKS endpoint. Authentication uses client credentials (client_id and secret) supplied as custom headers or request body fields. Plaid also requires per-user access tokens obtained via a three-step Plaid Link flow for each bank connection. Transactions are available for up to 24 months of history and can be queried with cursor-based pagination. Transfer write operations require an idempotency key and support ACH transfers up to 10 characters in the description field.

What moves between them

Bank transactions and balances flow from Plaid into Oracle Fusion Cloud ERP. ml-connector receives Plaid webhooks when new transactions are detected or updated, verifies the JWT signature, and queries the Plaid transaction API for the full details. Each transaction is matched to a customer or vendor record in Oracle using the bank party name and amount, then posted as a journal line into the AR or AP subledger and the cash account in the general ledger. If Plaid detects a transaction removal or reversal, ml-connector posts a reversing journal entry in Oracle. The matching and posting run on a schedule tied to your daily cash application window, not in real time, so batches of transactions are processed together for efficiency.

How ml-connector handles it

ml-connector stores Plaid client credentials and per-user access tokens encrypted. It exposes a webhook endpoint that Plaid calls when new transactions are detected, verifies the JWT signature using Plaid's JWKS public key and checks the iat claim to reject old messages, then confirms receipt with a 200 response within Plaid's 10-second window. For each verified transaction, ml-connector retrieves the full record from Plaid's transactions/get endpoint using the user access token and cursor pagination. On the Oracle Fusion side, ml-connector authenticates via OAuth2 Client Credentials, refreshes the bearer token when it expires, and queries AR invoices and AP invoices to find matching unpaid records using customer name, vendor name, and amount. When a match is found, ml-connector posts a journal entry into the AR or AP subledger and the cash account. Bank transfers and reversals are detected via Plaid's TRANSACTIONS webhook types and corresponding reversing entries are posted to Oracle. Because Plaid's transaction history extends 24 months, ml-connector can reconcile back-dated transactions if needed, but normal flow only processes recent transactions detected by the webhook. All posting is idempotent - retried transactions post only once because each carries a Plaid transaction ID that is stored in Oracle's journal line description as a dedup key.

A real-world example

A mid-market subscription SaaS company runs Oracle Fusion Cloud ERP for finance and billing. Customer payments arrive across multiple bank accounts - bank transfers, ACH, and credit card processing - and were previously matched to invoices by hand three times a week. With Plaid and Oracle Fusion connected, each payment that appears in the bank account is automatically matched to an outstanding AR invoice by customer name and amount, and a cash receipt is posted to AR and the cash GL account. Reversals and chargebacks are detected and reversing entries are posted automatically. The accounting team runs cash application once a day instead of three times a week, and reconciliation between the AR subledger and the bank account is nearly complete before month-end close begins.

What you can do

  • Receive Plaid webhook notifications of new transactions and verify JWT signatures with ES256 and JWK public key lookup.
  • Post bank transaction receipts and payments into Oracle Fusion's AR and AP subledgers matched to customer and vendor records.
  • Reconcile transactions backward 24 months if needed, allowing recovery of missed or delayed postings.
  • Handle Plaid transfer reversals and chargebacks by posting corresponding reversing journal entries in Oracle.
  • Authenticate Plaid with client credentials and per-user access tokens, and Oracle Fusion with OAuth2 Client Credentials and automatic token refresh.

Questions

In which direction do transactions flow between Plaid and Oracle Fusion Cloud ERP?
Bank transactions and balances flow from Plaid into Oracle Fusion. ml-connector receives Plaid webhooks for new and updated transactions, verifies the signature, and posts matching entries into Oracle's AR and AP subledgers and cash account. Posting is read-only on the Plaid side - ml-connector does not write transfers back to Plaid.
How does ml-connector verify Plaid webhook signatures?
Plaid delivers every webhook as an HTTP POST with a JWT in the request body signed with ES256. ml-connector fetches Plaid's JWK public key, verifies the JWT signature, and checks the iat claim to ensure the message is less than 5 minutes old. If verification fails or the message is stale, ml-connector rejects it and does not process the transaction.
How are bank transactions matched to Oracle Fusion invoices?
ml-connector queries Oracle's AR and AP subledgers for unpaid invoices and matches them to Plaid transactions by customer or vendor name and amount. When a match is found, a cash receipt or payment entry is posted to the matching invoice in the subledger and to the cash GL account. The Plaid transaction ID is stored in the journal line description for deduplication if the posting is retried.

Related integrations

Connect Oracle Fusion Cloud ERP and Plaid

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

Get started