ml-connector
Epicor KineticPlaid

Epicor Kinetic and Plaid integration

Epicor Kinetic manages your manufacturing and distribution operations. Plaid connects to your bank accounts to provide real-time transaction visibility and payment capabilities. Connecting the two brings your banking data directly into your general ledger, eliminating manual bank statement entry and speeding cash reconciliation. gl account coding is preserved, and transfers initiated through Plaid flow back to Epicor for audit and control.

How Epicor Kinetic works

Epicor Kinetic exposes vendors, invoices, purchase orders, customers, parts, general ledger accounts, and cash application records through REST and OData v4 endpoints, available at your tenant-specific instance URL. Authentication supports Basic Auth, API Key headers, OAuth2 client credentials, or Token Resource Service bearer tokens for on-premises deployments. Because Epicor publishes no native outbound webhooks, transactions are retrieved by polling OData endpoints with date filters on the UpdatedOn field to capture changes since the last sync. Write operations for GL postings require a two-step pattern: GetNewGLTransaction followed by UpdateMaster.

How Plaid works

Plaid provides access to bank accounts, investment accounts, transaction history, and account balances through REST POST endpoints at https://production.plaid.com. Authentication uses client_id and secret supplied as headers or request body fields, and per-user account access is obtained through the three-step Plaid Link flow that exchanges a public token for an access token. Plaid supports webhooks for transaction sync notifications, investments, transfers, and item events, delivered as HTTP POST to your registered endpoint with JWT signature verification (ES256) and a request body SHA-256 claim for integrity. Plaid can also initiate ACH and wire transfers on behalf of users with proper authorization.

What moves between them

The main flow is from Plaid into Epicor Kinetic. As transactions post to connected bank accounts, Plaid sends webhook notifications with transaction details including amount, date, merchant, and account identifier. ml-connector receives these notifications, maps the Plaid account to the corresponding Epicor bank account by routing number and currency, looks up or creates the matching GL account for the transaction category, and posts a GL journal entry recording the cash receipt or payment. Transfer initiations from Plaid are logged in Epicor's cash management audit trail. Account balance updates from Plaid sync to Epicor bank account master records daily.

How ml-connector handles it

ml-connector stores both credential sets encrypted: Plaid client_id and secret for API calls, and Epicor OAuth2 credentials or Token Resource Service tokens for the ERP. On the Plaid side, ml-connector registers a webhook endpoint and validates incoming notifications by verifying the JWT signature against Plaid's public key, checking the iat claim age, and comparing the request body SHA-256 hash to the claim, rejecting any that fail. For Epicor writes, ml-connector implements the two-step pattern required for GL transactions: first calling GetNewGLTransaction to obtain a blank record template, then populating fields and calling UpdateMaster to persist the entry. Plaid transactions are mapped by account to Epicor bank accounts using routing number and currency as the join key, avoiding collisions across multiple bank relationships. Because Plaid uses per-user access tokens with 24-month transaction history windows, ml-connector checks for historical gaps during account linking and retrieves back-dated transactions on first sync. Transfer descriptions are limited to 15 characters for RTP and 10 for ACH, so ml-connector truncates or omits the merchant name where needed. Every posting carries an audit trail linking the original Plaid transaction ID to the Epicor GL entry.

A real-world example

A mid-sized food distribution company runs Epicor Kinetic for procurement, inventory, and finance across three regional warehouses. They use Plaid to aggregate cash positions from checking and money-market accounts at multiple banks. Before the integration, the accounting team downloaded bank statements from each institution every morning, manually reconciled line items to vendor credits and customer over-payments, and hand-posted cash application journals into Epicor at day-end. With Epicor and Plaid connected, each transaction from any bank account appears as a GL entry within minutes of posting at the bank, routed to the correct cash account in Epicor, and flagged for review if the amount exceeds a tolerance. The team now spends their time on reconciliation exceptions rather than data entry, and month-end close completes two days earlier because the cash accounts are current.

What you can do

  • Post Plaid bank transactions into Epicor Kinetic's general ledger within minutes of the transaction posting at the bank, with full merchant and category detail.
  • Map Plaid accounts to Epicor bank accounts by routing number and currency to keep multiple bank relationships aligned.
  • Validate Plaid webhook signatures using JWT verification and SHA-256 body hashing to prevent spoofing.
  • Initiate ACH and wire transfers through Plaid and log them in Epicor's cash management audit trail for review and compliance.
  • Retrieve 24-month Plaid transaction history on first account linkage and sync daily balance updates to Epicor bank account master records.

Questions

How does ml-connector map Plaid bank accounts to Epicor Kinetic?
ml-connector matches Plaid accounts to Epicor bank accounts using routing number and currency as the join key. This avoids collisions when a company has multiple checking accounts at the same institution or in different currencies. The mapping is established during account linking and stored encrypted in the connector's database.
Does ml-connector handle Plaid's per-user access tokens and transaction history limits?
Yes. Plaid access tokens are obtained through the three-step Link flow for each user, and ml-connector stores them encrypted. Transaction history in Plaid is limited to 24 months, so ml-connector checks for gaps on first sync and retrieves historical transactions to ensure Epicor's GL is not missing earlier postings. Daily syncs thereafter bring new transactions only.
How are Plaid's transfer description limits (10-15 characters) handled when posting to Epicor?
ACH transfers are limited to 10 characters and RTP to 15 characters on the Plaid side. ml-connector truncates the merchant or transaction description to fit these limits, then posts the full original description in the memo field of the Epicor GL entry so audit and review are not impaired.

Related integrations

Connect Epicor Kinetic and Plaid

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

Get started