Epicor Kinetic and Stripe integration
Epicor Kinetic runs your manufacturing operations and finance. Stripe processes your online payments and subscriptions. Connecting the two keeps your invoices and customer records synchronized, and moves payment data between systems without manual re-entry. When a new invoice is created in Epicor Kinetic, it can be pushed to Stripe as a billable document. When Stripe processes a payment, the charge records sync back to Epicor Kinetic so your AR balances reflect what was actually collected.
What moves between them
Invoices and customers flow from Epicor Kinetic into Stripe. New invoices created in Epicor Kinetic are queried on a schedule and pushed into Stripe as invoice objects. Customer records are synced bidirectionally so names, contact details, and billing addresses stay aligned. Payment data flows from Stripe back to Epicor Kinetic: charges, refunds, and payouts are retrieved via Stripe's REST API and reconciled against the invoices and customers in Epicor Kinetic so your accounts receivable balances match what Stripe collected.
How ml-connector handles it
ml-connector stores both credential sets encrypted and connects to Epicor Kinetic using either its OAuth2 bearer token or Basic Auth with the API key header, refreshing tokens as they expire. Because Epicor Kinetic is poll-only, ml-connector queries for changed invoices and customers using OData $filter on the UpdatedOn date field and paginates with $top and $skip. On the Stripe side, it uses the API key to read and create invoice records, customers, and charges via the REST API, and also receives webhook events from Stripe if registered to do so. Invoices are mapped from Epicor Kinetic to Stripe line-by-line, preserving amounts and GL account allocations where applicable. Charges returned from Stripe are tagged with the source Epicor Kinetic invoice ID for audit and reconciliation. ml-connector handles Stripe's at-least-once webhook delivery semantics by accepting idempotency guarantees at the business object level (customer ID, invoice number) rather than leaning on API-level deduplication, and it retries failed API calls with exponential backoff when Stripe returns rate-limit or temporary errors. Every transaction is logged with source record IDs, timestamps, and any transformation applied.
A real-world example
A mid-sized product distributor runs Epicor Kinetic for order-to-cash, inventory, and finance, and uses Stripe to accept online payments from customers via a web portal and subscription billing for maintenance contracts. Before the integration, the finance team exported invoices from Epicor Kinetic each day, manually created or updated matching invoice records in Stripe, and spent hours each week re-entering payment data from Stripe back into Epicor Kinetic to keep balances in sync. When a customer paid online, the reconciliation team had to hunt through both systems to mark the invoice paid in Epicor Kinetic and match it to the correct charge in Stripe. With Epicor Kinetic and Stripe connected, new invoices flow automatically into Stripe, payment data returns to Epicor Kinetic on a schedule, and the reconciliation team can verify customer and invoice records in one system without re-keying. Month-end close is faster because customer balances and collected payments already match.
What you can do
- Sync customers and invoices from Epicor Kinetic into Stripe so your billing records stay aligned across systems.
- Read charges and refunds from Stripe and post them back to Epicor Kinetic for AR reconciliation.
- Handle Epicor Kinetic OAuth2 and Basic Auth with API key headers, and Stripe API key authentication.
- Poll Epicor Kinetic on a schedule tied to your billing cycle using OData date filters to retrieve only changed records.
- Maintain a full audit trail with source record IDs, sync timestamps, and any data transformation applied.
Questions
- What records sync between Epicor Kinetic and Stripe?
- Invoices, customers, charges, and refunds sync between the two systems. Invoices and customers flow from Epicor Kinetic into Stripe, and charges and refunds flow from Stripe back to Epicor Kinetic for reconciliation. Subscription and payment intent records can also be synced if your workflow requires them.
- How does the integration handle the differences in authentication between Epicor Kinetic and Stripe?
- Epicor Kinetic uses either OAuth2 bearer tokens or Basic Auth with an API key header, and tokens expire in roughly one hour. Stripe uses only API key authentication sent via HTTP Basic Auth. ml-connector stores both credential sets encrypted, refreshes the Epicor Kinetic bearer token before it expires, and presents the Stripe API key on every request.
- Does the integration rely on Epicor Kinetic webhooks or does it poll?
- Epicor Kinetic publishes no native webhooks, so ml-connector polls on a schedule you control using OData date filters to retrieve only records modified since the last sync. Stripe does send webhooks for payment and invoice events, so ml-connector can receive push notifications from Stripe in addition to polling its REST API for current state.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to Stripe
Connect Epicor Kinetic and Stripe
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started