ml-connector
Epicor KineticFedEx

Epicor Kinetic and FedEx integration

Epicor Kinetic is the ERP where you manage procurement, inventory, and GL accounts. FedEx is the carrier and logistics platform where you create shipments, quote rates, generate labels, and track packages. Connecting the two keeps your procurement and logistics timelines aligned. Purchase orders in Epicor automatically become shipments on FedEx, carrier quotes and rates stay current in your GL dimensions, and incoming tracking events update receiving status without manual data entry.

How Epicor Kinetic works

Epicor Kinetic exposes purchase orders, vendors, customers, parts, GL accounts, and AP invoices via REST OData v4 APIs, documented in the Swagger endpoint built into each tenant instance. Authentication is Basic Auth with username and password, OAuth2 client credentials, or a short-lived Bearer token exchanged via the Token Resource Service. A Company segment is mandatory in all v2 API URLs, and record changes are retrieved through OData $filter queries on UpdatedOn timestamps or custom BAQs. Epicor has no native outbound webhooks, so purchase orders are read by polling at intervals you control, and the integration relies on business object uniqueness constraints for deduplication.

How FedEx works

FedEx exposes shipment creation, rate quoting, label generation, package tracking, and freight management via REST JSON APIs. All requests require OAuth2 authentication with client credentials, and the Bearer token must be cached for up to one hour to avoid hitting the strict auth rate limit of three tokens per five seconds. Tracking data is available through pull-based Track API calls, which accept up to 30 tracking numbers per request, or through push webhooks via the Advanced Integrated Visibility service, which requires a paid subscription. FedEx publishes no invoice REST API, so billing and payment remain in the FedEx Billing Online web portal. The integration uses the transactionId field provided by the Ship API for client-side deduplication.

What moves between them

The main flow runs from Epicor Kinetic into FedEx. Purchase orders from Epicor are polled at set intervals and mapped into FedEx shipments, with shipper and recipient addresses drawn from vendor and customer records in Epicor. FedEx rate quotes are returned and stored in Epicor GL dimensions so shipping cost can be allocated to the correct cost center. Tracking events flow back from FedEx into Epicor at a polling cadence tied to your procurement calendar, updating the receiving status of each line item and creating an audit trail. Shipping labels are generated in FedEx and linked back to the original purchase order in Epicor.

How ml-connector handles it

ml-connector stores both Epicor OAuth2 credentials and FedEx API credentials encrypted, refreshing tokens before expiry so outages do not interrupt the sync. On the Epicor side, it polls purchase orders using OData $filter on the UpdatedOn field and the Company segment specified per customer. On the FedEx side, it batches tracking calls using the Track API, passing up to 30 tracking numbers per request to stay within rate limits. Rate quotes are cached and mapped to Epicor GL accounts so each shipment cost lands on the correct income statement line. FedEx auth rate limits require strict token caching to avoid the 403 lockout that triggers at three tokens in five seconds, and ml-connector implements exponential backoff on any 429 or 403 response. Purchase orders already shipped are marked as voided in Epicor using the two-step GetNewPO and UpdateMaster pattern. Every shipment and tracking event carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized discrete distributor runs Epicor Kinetic for procurement and inventory across three warehouses in different regions. Before the integration, the procurement team entered purchase orders into Epicor, then manually created shipments in FedEx, tracked packages by logging into the FedEx portal, and updated receiving in Epicor after shipments arrived. Month-end reconciliation required matching Epicor receiving status to FedEx tracking events by hand. With Epicor Kinetic and FedEx connected, purchase orders automatically flow to FedEx, shipping rates are calculated and allocated to the correct GL account per warehouse, and incoming tracking updates automatically advance receiving status. The procurement team now sees shipment status inside Epicor and does not need to log into FedEx or re-key arrival dates.

What you can do

  • Create FedEx shipments from Epicor Kinetic purchase orders, with shipper and recipient addresses automatically populated from vendor and customer records.
  • Quote FedEx carrier rates and allocate shipping costs to the correct Epicor GL accounts and cost centers per warehouse.
  • Poll FedEx Track API for package tracking events and automatically update Epicor receiving status and purchase order line items.
  • Authenticate both Epicor Kinetic (OAuth2 Bearer token) and FedEx (OAuth2 client credentials) with strict token caching to avoid auth rate limits.
  • Generate a full audit trail on every purchase order, shipment, and tracking event, with the ability to replay failed downstream calls.

Questions

Which direction does data move between Epicor Kinetic and FedEx?
The main flow is Epicor into FedEx. Purchase orders are polled from Epicor and mapped into FedEx shipments. Tracking events and rate quotes flow back from FedEx into Epicor to update receiving status and allocate shipping costs to GL accounts. Shipping labels are generated in FedEx and linked to the original purchase order in Epicor for audit and reconciliation.
How does the integration handle Epicor Kinetic's polling-only architecture and FedEx rate limits?
ml-connector polls Epicor purchase orders using OData $filter on the UpdatedOn field at intervals you control, avoiding the need for webhooks. On the FedEx side, it strictly caches OAuth2 tokens for up to one hour to stay under the three-tokens-per-five-seconds auth rate limit, and batches tracking calls to request up to 30 tracking numbers at once, staying within the 1,400-transaction-per-10-second API limit.
How are shipping costs mapped to Epicor GL accounts?
FedEx rate quotes are returned for each shipment and stored in Epicor GL dimensions based on the warehouse or cost center associated with the purchase order vendor. This allows month-end reconciliation to show shipping costs allocated to the correct income statement line without manual journal entries or cost reallocations.

Related integrations

Connect Epicor Kinetic and FedEx

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

Get started