ml-connector
Epicor KineticUPS

Epicor Kinetic and UPS integration

Epicor Kinetic runs your manufacturing, distribution, and order management. UPS handles shipment creation and tracking. Connecting the two keeps your fulfillment process end-to-end: sales orders flow from Epicor into UPS as shipments, UPS tracking data flows back into Epicor so your order status stays current, and customer addresses are validated in real time. ml-connector manages the authentication and token lifecycle on both sides and moves the data on a schedule you control.

How Epicor Kinetic works

Epicor Kinetic exposes sales orders, order lines, customers, parts, and shipping addresses through REST OData v4 endpoints scoped to a tenant URL and company code. Authentication is available via Basic Auth, API Key headers, OAuth2 client credentials, or token resource exchange depending on your deployment model (cloud SaaS vs on-premises). Epicor has no native outbound webhooks, so all data is retrieved by polling with OData $filter on date fields to fetch records updated since the last sync. Pagination uses $top and $skip parameters. Bearer tokens expire in approximately one hour and must be refreshed on each polling cycle.

How UPS works

UPS provides REST APIs for shipment creation, rating, tracking, and address validation. OAuth2 client credentials with a client ID and secret are required, with an optional merchant ID header for multi-account routing. Track Alert subscriptions push tracking events to a registered webhook endpoint with a 14-day validity window. Quantum View provides a polling-based shipment visibility feed for customers without webhooks enabled. OAuth tokens expire in approximately four hours, and there is a limit of approximately 250 token requests per day. UPS has no billing or invoice API, so financial data does not flow through the connector.

What moves between them

Sales orders are polled from Epicor based on confirmation date and line status. For each confirmed order line with a shippable part, ml-connector creates a shipment in UPS using the customer address from Epicor, part weight from Epicor parts master, and the shipment value. Tracking events flow back from UPS via Quantum View polling or Track Alert webhooks, and ml-connector writes tracking numbers and estimated delivery dates into Epicor fulfillment or order status fields. This creates a closed-loop visibility chain from order placement through delivery.

How ml-connector handles it

ml-connector stores Epicor and UPS credentials encrypted and refreshes the Epicor bearer token every sync cycle (typically hourly) since tokens expire in one hour. On the UPS side, it caches the OAuth token for its approximately four-hour lifespan to stay under the daily token request limit, and uses the merchant ID header if the customer has multiple UPS accounts. It polls Epicor every polling interval using OData queries filtered on order confirmation date, maps Epicor customer names and addresses to UPS shipment fields, and validates Epicor addresses through UPS address validation before shipment creation. UPS Quantum View feed polling fetches tracking updates and writes them back into Epicor order status or fulfillment tables. Because Epicor is pull-only and UPS requires OAuth token management, ml-connector does not rely on push notifications from either side. Track Alert subscriptions are configured per shipment and renewed before the 14-day expiry. Every shipment creation, tracking update, and address validation is logged with a full audit trail so failed operations can be replayed after credential or configuration changes.

A real-world example

A mid-sized regional distributor uses Epicor Kinetic to manage inventory, orders, and shipping across three warehouses. Before the integration, the fulfillment team printed pick lists from Epicor, manually typed customer addresses and part weights into UPS, generated shipment labels, and then manually updated Epicor order status with tracking numbers once shipments left the building. This created duplicate data entry, address errors, and delays in customer visibility. With Epicor and UPS connected, confirmed orders flow automatically into UPS shipments with validated addresses, labels print immediately, and UPS tracking updates synchronize back into Epicor order status in real time. Customers see accurate delivery estimates without manual re-entry, and month-end order reconciliation no longer requires re-keying shipment data.

What you can do

  • Create UPS shipments automatically from confirmed sales orders in Epicor, with validated customer addresses and accurate weights.
  • Sync UPS tracking numbers and estimated delivery dates back into Epicor order status for end-to-end fulfillment visibility.
  • Validate customer addresses in real time through UPS address validation before shipment creation.
  • Manage Epicor token refresh and UPS OAuth token lifecycle to stay within rate limits and prevent authentication outages.
  • Maintain a complete audit trail on shipment creation, tracking updates, and address validation so failed operations can be replayed.

Questions

What data flows between Epicor Kinetic and UPS?
Sales orders, order lines, and customer addresses flow from Epicor into UPS as shipments. Tracking numbers, tracking events, and estimated delivery dates flow back from UPS into Epicor order status and fulfillment records. Part weight and customer name are mapped from Epicor to UPS shipment fields. UPS has no billing API, so financial data does not move through the connector.
How does the integration handle token expiry and OAuth limits?
Epicor bearer tokens expire in approximately one hour, so ml-connector refreshes the token on each polling cycle. UPS OAuth tokens expire in approximately four hours, and ml-connector caches the token to stay under the daily limit of approximately 250 token requests. If a token request fails, the connector backs off and retries with exponential backoff before alerting.
Why does the integration use polling instead of webhooks?
Epicor Kinetic has no native outbound webhooks, so all data is retrieved by polling with OData filters on order confirmation date. UPS offers Track Alert subscriptions which expire every 14 days and require renewal, or Quantum View polling without the 14-day renewal requirement. ml-connector uses Quantum View polling for simplicity and to avoid recurring subscription management overhead.

Related integrations

Connect Epicor Kinetic and UPS

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

Get started