Epicor Kinetic and Wise integration
Epicor Kinetic runs your procurement and finance. Wise handles international payments and multi-currency accounts. Connecting the two turns approved invoices into scheduled payouts without manual re-entry. Vendor master data stays synchronized between systems, and every payment execution is recorded in Epicor Kinetic's audit trail so finance can reconcile exactly what moved and when.
What moves between them
The main flow runs from Epicor Kinetic into Wise. After an AP invoice is marked approved in Epicor Kinetic, ml-connector retrieves it via polling, looks up the matching Wise recipient based on vendor master data, creates a Wise quote for the invoice amount and currency, establishes a transfer order, and funds it. Vendor master data (addresses, SWIFT codes, account numbers) flows from Epicor Kinetic to Wise during setup, and balance notifications flow back from Wise into Epicor Kinetic's audit log so accounting reconciles Wise balances against AP subsidiary ledger. AP payment records in Epicor Kinetic are marked Posted only after the Wise transfer enters a terminal state (Paid or Permanently Failed).
How ml-connector handles it
ml-connector stores both credential sets encrypted: Epicor Kinetic Base Auth credentials and API Key in one envelope, Wise OAuth2 client credentials and refresh token (or personal API token) in another. On the Epicor side, it polls approved APInvoices filtered by UpdatedOn greater than the last sync timestamp, using OData $top/$skip pagination. For each invoice, it queries the matching Vendor record to extract payment details such as SWIFT code and account number. On the Wise side, ml-connector maps the vendor's payment method and currency to a Wise recipient (creating one if new), requests a fresh quote at the time of payment, and executes the four-step transfer sequence. Because Wise quotes expire quickly, ml-connector validates the quote timestamp before fund payment. OAuth2 bearer tokens on both sides are cached and refreshed on 401 response. Transfer idempotency is enforced by Wise via the customerTransactionId field (invoice number + sequence), so retried payments do not duplicate. Webhook listeners can consume transfersstate-change events from Wise to update AP Payment status in real time, or ml-connector can poll Wise Transfer state as a fallback. Every record carries a full audit trail including OData request/response, Wise transfer metadata, and reconciliation status.
A real-world example
A mid-sized manufacturing distributor runs Epicor Kinetic for procurement and finance, and buys parts from suppliers across Europe and Asia. Before integration, the accounts payable team approved invoices in Epicor Kinetic, then manually created Wise transfers for international vendor payments, matching each invoice to the correct recipient and currency. Reconciliation required comparing Epicor Kinetic payment records against Wise transfer history by hand. With Epicor Kinetic and Wise connected, each approved invoice automatically triggers a payment transfer at the scheduled cadence, with vendor details pulled from Epicor Kinetic and the Wise transfer linked back to the invoice in the audit trail. Month-end reconciliation now reads the status directly from Wise webhooks, and duplicate payments are impossible because the transfer is idempotent by invoice number.
What you can do
- Automatically create Wise transfers for approved Epicor Kinetic AP invoices on a schedule.
- Map vendor master data from Epicor Kinetic to Wise recipients, syncing payment details and currency preferences.
- Execute the full Wise four-step transfer sequence (quote, recipient, order, fund) with automatic quote refresh if expired.
- Enforce idempotency on Wise transfers via customerTransactionId so retried payments do not create duplicates.
- Consume Wise transfer state-change webhooks or poll transfer status to update AP Payment records in Epicor Kinetic in real time.
Questions
- How does ml-connector handle the four-step Wise transfer sequence?
- ml-connector builds the transfer in phases: it first queries or creates the Wise recipient from vendor master data, then requests a quote for the invoice amount and currency (always fresh, since Wise quotes expire), then creates the transfer order, and finally funds the transfer. If funding fails, the transfer remains unfunded and can be retried with a new quote.
- What happens when Epicor Kinetic OAuth2 tokens expire or Wise webhooks are unavailable?
- ml-connector caches bearer tokens on both sides and automatically refreshes them on any 401 Unauthorized response, so token expiry does not interrupt the flow. If Wise webhooks are unavailable, ml-connector falls back to polling Wise Transfer state on a schedule and updates Epicor Kinetic AP Payment records based on the polled status, maintaining eventual consistency.
- How does the integration prevent duplicate payments?
- Wise enforces idempotency via the customerTransactionId field, which ml-connector populates with a stable key (e.g., invoice number plus sequence). If the same invoice is retried, Wise rejects the duplicate transfer or returns the original transfer ID, so ml-connector updates Epicor Kinetic with the existing transfer rather than creating a new one.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to Wise
Connect Epicor Kinetic and Wise
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started