ml-connector
Epicor KineticGoCardless

Epicor Kinetic and GoCardless integration

Epicor Kinetic runs your manufacturing, distribution, or retail finance. GoCardless collects payments directly from your customers' bank accounts, worldwide. Connecting the two automates your AR collections: new customers in Epicor create mandates in GoCardless, invoices flow as billing requests, and collections automatically reverse write to your general ledger. No manual handoffs, no exported spreadsheets, no re-entry lag.

How Epicor Kinetic works

Epicor Kinetic exposes customers, invoices, AR details, and GL accounts through REST OData endpoints on a tenant-specific URL, with filtering on dates and fields. Authentication uses Basic Auth, API Key, OAuth2 client credentials (cloud only), or a Bearer token issued via Token Resource Service (on-premises). Epicor has no native webhooks; all integrations poll using OData $filter on UpdatedOn and other timestamps, with pagination via $top and $skip. Write operations require a two-step pattern: GetNewXxx followed by UpdateMaster.

How GoCardless works

GoCardless exposes customers, mandates, payments, subscriptions, and payouts through a stable REST API with OAuth bearer tokens. The platform sends real-time webhook events (HMAC-SHA256 signed) to a registered endpoint when mandates are created, payments succeed or fail, and payouts are issued. Polling is supported but webhooks are primary. Payouts are read-only, created automatically by GoCardless after settlements. Amount fields are in smallest currency units (pence/cents).

What moves between them

Customer records flow from Epicor Kinetic to GoCardless, creating or updating customers and bank mandates. Invoices in Epicor become billing requests in GoCardless, triggering one-time or recurring collections based on AR terms. When GoCardless reports payment success or failure via webhook, ml-connector updates the invoice status in Epicor and posts the cash receipt (or reversal) to the general ledger. Payout reconciliation flows from GoCardless into Epicor's cash and AR accounts.

How ml-connector handles it

ml-connector polls Epicor Kinetic on a schedule you define, querying for customers and invoices updated since the last sync using OData $filter on UpdatedOn. For each new customer, it creates a GoCardless customer record and stores the customer ID encrypted for lookups. Invoices become billing requests; ml-connector maps the invoice amount (converted to pence/cents) and the AR due date to GoCardless collection terms. On the GoCardless side, ml-connector verifies every webhook signature with HMAC-SHA256 against the registered secret and processes payment events. When a payment succeeds, it updates the Epicor invoice status and calls UpdateMaster to post the cash receipt to the AR clearing account and the target GL account. If a payment fails, ml-connector logs the reversal. Payout data flows back into Epicor daily, reconciling the cash account. Bearer tokens are refreshed automatically before expiry, and failed API calls retry with exponential backoff.

A real-world example

A mid-market food distributor uses Epicor Kinetic for order-to-cash and accounting. Today, the credit team exports invoices weekly, uploads them to GoCardless by hand, tracks payment status in a spreadsheet, and keys cash receipts into Epicor manually each week - a 6-hour process prone to reconciliation gaps. After connecting Epicor Kinetic to GoCardless, invoices post from the system to GoCardless the day they are created, customers who set up mandates collect automatically on terms, and payment confirmations reverse-post to Epicor's AR automatically. The credit team now spends 1 hour validating exceptions instead of 6 hours on manual entry, and cash is recognized the same day it lands in the bank.

What you can do

  • Sync Epicor Kinetic customers to GoCardless and create bank payment mandates for recurring collections.
  • Post Epicor Kinetic invoices to GoCardless billing requests, converting amounts to pence/cents and mapping invoice terms to collection windows.
  • Receive real-time GoCardless payment webhooks, verify signatures, and update Epicor invoice status on collection success or failure.
  • Reconcile GoCardless payouts back into Epicor by posting cash receipts to AR and GL accounts on a daily schedule.
  • Poll Epicor Kinetic with OData filters and OAuth2 or Token Resource Service, with retries and a full audit trail on every customer and payment record.

Questions

How does ml-connector handle the different authentication methods between Epicor Kinetic and GoCardless?
Epicor Kinetic supports multiple auth patterns - Basic Auth, OAuth2 (cloud only), or Token Resource Service (on-premises). ml-connector reads the auth method you specify in your cell configuration and applies it to all OData queries. GoCardless uses bearer tokens; ml-connector stores the token encrypted and refreshes it before expiry. Both credential sets are stored in the cell Postgres database and are never visible in logs or audit trails.
Can ml-connector handle Epicor Kinetic's two-step write pattern and GoCardless webhooks at the same time?
Yes. ml-connector polls Epicor using OData filters to find changed customers and invoices, then creates billing requests in GoCardless. On the return path, it listens for GoCardless payment webhooks (verifying HMAC-SHA256 signatures), and when a payment succeeds, calls Epicor's UpdateMaster API to post the cash receipt in two steps: GetNewInvoice to fetch the current state, then UpdateMaster to record the payment. All operations are idempotent and carry a full audit trail.
What happens if a GoCardless webhook fails to post or arrives out of order?
ml-connector verifies every GoCardless webhook with the registered secret and returns 401 if the signature is invalid - this tells GoCardless to keep retrying. If a webhook is delayed or arrives out of order, the audit log preserves the timestamp and API response from Epicor, so you can replay the payment post manually if needed. ml-connector also polls Epicor daily for unpaid invoices and reconciles payout status, so any missed webhooks are caught on the next cycle.

Related integrations

Connect Epicor Kinetic and GoCardless

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

Get started