ml-connector
Epicor KineticProcurify

Epicor Kinetic and Procurify integration

Epicor Kinetic runs procurement and finance. Procurify runs purchase requests and spend management. Connecting the two keeps your approved buying and your ERP invoices in sync. New purchase orders and requisitions from Procurify move into Epicor Kinetic as formal POs on the right vendor with the right GL codes, and supplier invoices and payments from Epicor flow back to Procurify so you always know what you owe against what you approved. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.

How Epicor Kinetic works

Epicor Kinetic exposes vendors, purchase orders, AP invoices, AP payments, GL accounts, customers, and parts through REST and OData v4 endpoints on a tenant-specific URL using Basic Auth, API Key, or OAuth2 client credentials. Tokens expire in about one hour and require refresh logic. The cloud product uses a dedicated Epicor SaaS hostname; on-premises instances use a custom server URL. Epicor has no native outbound webhooks, so finance records are read by polling with OData date filters on fields like UpdatedOn. Creating and updating complex objects like purchase orders requires a two-step pattern with GetNewXxx followed by UpdateMaster.

How Procurify works

Procurify exposes purchase orders, requisitions, bills, payments, vendors, and account codes through REST endpoints on a customer-specific subdomain using OAuth2 client credentials. Token lifetime is 24 hours. The API does not support webhooks or push notifications, so data is retrieved by polling with date-range filters on fields like last_modified and dateModified. Purchase orders are generated from approved requisitions rather than created directly. Order items and payments are read-only. Vendor management, account codes, and locations are writable endpoints with superuser restrictions on location creation.

What moves between them

The main flow runs from Procurify into Epicor Kinetic. Approved purchase orders and requisitions from Procurify are synced into Epicor Kinetic as new purchase orders, mapped to the correct vendor and GL account. Reference data such as vendors, account codes, and departments is aligned in both directions. Invoices and payments read from Epicor flow back into Procurify to close out approved orders and track actual spending against requisitions. The sync runs on a schedule you set, typically after each approval workflow in Procurify.

How ml-connector handles it

ml-connector stores Epicor API credentials (Basic Auth or OAuth2 client credentials with API Key header) and Procurify OAuth2 credentials encrypted, and refreshes Epicor tokens as they approach expiry. It polls Procurify's purchase-orders and requisitions endpoints with date filters to find new approvals, then uses Epicor's two-step write pattern (GetNewPurchaseOrder followed by UpdateMaster) to create matching POs with the vendor from Procurify and the GL account from the mapping. Vendor and account code reference tables are kept aligned in both directions. On the return flow, ml-connector reads Epicor APInvoices and APPayments with OData date filters and pushes them back into Procurify as bill records and payment records to track actual spend. Both systems are polled on your schedule rather than waiting for a push, and every record carries a full audit trail so a failed downstream call can be replayed. The integration maps Procurify requisition IDs to Epicor purchase order numbers so both systems reference the same logical order.

A real-world example

A mid-sized distribution company runs Epicor Kinetic for finance, procurement, and inventory, and uses Procurify for purchase requests and vendor management. Before the integration, buyers approved orders in Procurify, then procurement staff manually entered each approved order into Epicor as a formal PO, a step that took hours and introduced errors. When invoices arrived from vendors, they had to cross-check both systems to code the invoice to the right PO. With Procurify and Epicor Kinetic connected, each approved requisition flows into Epicor as a complete PO with vendor and account code already mapped, eliminating the manual re-entry step. Invoice receipt and payment matching happen automatically, and the team can see at a glance which orders are pending, invoiced, or paid in either system.

What you can do

  • Sync approved purchase orders and requisitions from Procurify into Epicor Kinetic as new purchase orders with correct vendor and GL account mapping.
  • Keep vendor and account code reference data aligned between both systems in both directions.
  • Read AP invoices and payments from Epicor and sync them back to Procurify to close out orders and track actual spending against approved requisitions.
  • Authenticate Epicor with Basic Auth or OAuth2 client credentials with API Key header, and Procurify with OAuth2, refreshing tokens as they expire.
  • Poll both systems on a schedule you set with date filters on UpdatedOn, last_modified, and dateModified, with full audit trail on every record and replay capability on failure.

Questions

How does the integration handle Epicor Kinetic's two-step write pattern for purchase orders?
ml-connector uses the GetNewPurchaseOrder call to retrieve a new template, fills in the vendor and line items from Procurify data, then calls UpdateMaster to commit the record. This pattern is required for complex objects like purchase orders and ensures the PO is complete before it reaches the ERP.
Can purchase orders created in Procurify be edited in Epicor after sync?
Yes. Once synced into Epicor, a purchase order is a native Epicor record that can be edited, split, or voided by your procurement team. ml-connector does not overwrite edits made in Epicor, so your team has full control after initial creation. The mapping between the Procurify requisition ID and Epicor PO number is preserved for audit purposes.
What happens if a vendor in Procurify does not exist in Epicor?
ml-connector requires vendors to be pre-loaded in Epicor before creating purchase orders. If a Procurify vendor is not found, the sync is skipped and logged as an error. You can configure ml-connector to create new vendors in Epicor if needed, or maintain a mapping table to match Procurify vendors to existing Epicor vendor records.

Related integrations

Connect Epicor Kinetic and Procurify

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

Get started