Epicor Kinetic and Microsoft Dynamics 365 Sales integration
Epicor Kinetic runs manufacturing and distribution finance. Dynamics 365 Sales manages the pipeline from leads through orders. Connecting them keeps your vendor master and customer records in sync between ERP and CRM, and flows AP invoices from Epicor into Dynamics so sales and finance operate from the same source of truth. New vendors and invoice records in Epicor appear in Dynamics without manual re-entry, and customer accounts stay aligned across both systems.
What moves between them
The main data flow runs from Epicor Kinetic into Microsoft Dynamics 365 Sales. Vendor master records from Epicor are mapped to accounts in Dynamics, and AP invoices are posted as related invoice records. Customer records flow the same direction so Dynamics account lists reflect Epicor's active customers. The sync runs on a schedule tied to your accounting cycle, typically daily or weekly, since Epicor is pull-only and has no native push mechanism. Dynamics supports webhooks for other workflows, but the inbound vendor and customer sync always polls Epicor.
How ml-connector handles it
ml-connector stores both credential sets encrypted and bridges the authentication differences: on the Epicor side it uses the tenant-specific URL and includes the required x-api-key header with the bearer token, and on the Dynamics side it presents the OAuth2 client credentials for Entra ID and refreshes the token when a call returns 401. It polls Epicor's OData endpoints with $filter queries on the UpdatedOn date field to retrieve only records changed since the last sync, using offset pagination ($skip) to walk through large result sets. Vendor records are mapped to Dynamics accounts, and AP invoice line items are created as related invoice records against those accounts. Epicor's one-hour bearer token expiry is handled with refresh logic, and the two-step write pattern (GetNewXxx then UpdateMaster) is not needed on the read side. Dynamics 256 KB webhook payload limit is respected by batching smaller invoice groups. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized manufacturing distributor runs Epicor Kinetic for procurement, finance, and inventory, and uses Dynamics 365 Sales for the sales team managing customer accounts and opportunities. Before the integration, the finance team exported AP invoices from Epicor weekly and manually created records in Dynamics for accounts payable visibility in the CRM. When a customer placed a purchase order, vendor details had to be looked up separately because Dynamics held outdated vendor data. With Epicor and Dynamics connected, each week's new vendors and invoices flow automatically into Dynamics, the sales team sees current vendor information against each account, and finance can track which invoices tie to which opportunities and orders without switching systems.
What you can do
- Sync vendor master records from Epicor Kinetic into Dynamics 365 Sales as accounts, keeping both systems aligned.
- Post AP invoices from Epicor into Dynamics with line-item detail, linked to the corresponding vendor account.
- Map Epicor customers into Dynamics accounts so the CRM reflects the current customer master.
- Authenticate Epicor with its tenant-specific URL, API Key header, and OAuth2 or Basic Auth, and Dynamics with Entra ID OAuth2.
- Poll Epicor on a schedule using OData date filters to retrieve only changed records, with retries and a full audit trail on every sync.
Questions
- Why does ml-connector poll Epicor instead of waiting for a webhook?
- Epicor Kinetic has no native outbound webhooks. The only way to capture vendor and invoice changes is to poll the OData endpoints using $filter queries on the UpdatedOn date field. ml-connector runs this polling on a schedule tied to your accounting cycle, typically daily or weekly.
- Does the integration write data back into Epicor Kinetic?
- No. The data flows one direction: Epicor to Dynamics. Vendors, customers, and AP invoices are read from Epicor and posted into Dynamics as accounts and related records. Writes back into Epicor are not part of this integration. Dynamics 365 Sales is read-mostly for this connection; it consumes vendor and invoice data, not sources it back.
- How does ml-connector handle Epicor's API Key requirement and tenant-specific URLs?
- ml-connector stores the API Key and tenant base URL per customer and includes the x-api-key header on every Epicor request, even when using OAuth2 bearer tokens. Because Epicor publishes no shared base URL, ml-connector accepts the full tenant URL for each instance and appends the Company segment to reach the correct OData endpoints.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to Microsoft Dynamics 365 Sales
Connect Epicor Kinetic and Microsoft Dynamics 365 Sales
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started