ml-connector
Exact OnlineUPS

Exact Online and UPS integration

Exact Online tracks orders and inventory; UPS moves the goods. Connecting the two keeps shipping and delivery records aligned across your business. When a sales order ships through UPS, the tracking number appears in Exact Online, and as UPS delivers the shipment, Exact Online sees the delivery confirmation. ml-connector bridges the two platforms so sales orders and goods deliveries stay current with real shipping activity.

How Exact Online works

Exact Online exposes sales orders, goods deliveries, items, and accounts through a REST API with OData v3 query syntax. The service is region-specific (Netherlands, Belgium, UK, Germany, France, Spain, USA each have their own base URL), and requires the division ID as a parameter on every API call. Authentication uses OAuth 2.0 Authorization Code Grant with a 10-minute access token and 30-day rotating refresh token, granted by app registration in the Exact Online App Center. Exact Online supports webhooks for push notifications on sales orders and goods deliveries, so ml-connector can receive updates immediately when an order or delivery record changes. The webhook payload contains only the entity key and action type (create/update/delete), requiring a separate REST call to fetch the full entity data.

How UPS works

UPS exposes shipments, ratings, tracking events, and pickups through a REST JSON API. The sandbox and production endpoints use different hostnames. Authentication uses OAuth 2.0 Client Credentials, with the client_id, client_secret, and an optional UPS account number (x-merchant-id header). The access token lifetime is approximately 4 hours, with a rate limit of approximately 250 token requests per day. UPS offers two sync models: Track Alert API for push notifications on tracking number updates (up to 100 tracking numbers per subscription, valid for 14 days then must be renewed), and Quantum View for polling shipment visibility feeds. UPS has no billing or invoice API, and no access to historical shipment data beyond the tracking and alert feed.

What moves between them

The main flow runs from Exact Online into UPS. When a sales order is marked ready to ship in Exact Online, ml-connector creates a UPS shipment and retrieves the tracking number. The tracking number is written back to the goods delivery record in Exact Online. As the shipment moves through UPS, tracking events arrive either via UPS Track Alert subscriptions or Quantum View polling, and ml-connector updates the goods delivery status in Exact Online. Delivery confirmation closes the goods delivery in Exact Online. The reverse flow (rates and pickup schedules from UPS) can also be exposed in Exact Online for sales order planning if your workflow requires it.

How ml-connector handles it

ml-connector stores the Exact Online refresh token encrypted and refreshes it before it expires. For UPS, it stores the OAuth 2.0 client credentials encrypted and requests a fresh token every 4 hours or when a 401 response indicates token expiry. Because Exact Online requires the division ID and region-specific base URL per customer, ml-connector caches both at setup and uses them on every API call. When a Goods Delivery is created in Exact Online via webhook, ml-connector parses the webhook and fetches the full sales order and line-item details via REST to gather the shipment data (weight, dimensions, destination address) needed to create a UPS shipment. It stores the UPS tracking number in the Goods Delivery record using Exact Online's transaction line or document field. For tracking updates, ml-connector subscribes to UPS Track Alert for active tracking numbers (renewing the 14-day subscription before expiry) and polls Quantum View as a fallback or for historical feed data. When a tracking event arrives, ml-connector maps the UPS event status to the Exact Online goods delivery status. Refresh token rotation (30-day lifetime) is handled automatically; if a refresh token expires, the user must re-authorize in the App Center. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized ecommerce retailer runs Exact Online in Germany for order management, inventory, and accounting. They ship domestically and internationally via UPS. Before the integration, the fulfillment team manually entered tracking numbers into Exact Online from UPS emails, and customers had to contact support or log into UPS.com to see delivery status. Invoicing and goods receipts in Exact Online were often out of sync with actual shipments. With Exact Online and UPS connected, each order that enters the fulfillment queue automatically generates a UPS shipment, the tracking number flows back into Exact Online within seconds, and customers can see live tracking status linked from their order. Goods delivery records close automatically when UPS confirms delivery, so month-end inventory reconciliation matches reality without manual chase.

What you can do

  • Create UPS shipments automatically when a goods delivery is marked ready to ship in Exact Online, and store the tracking number in the delivery record.
  • Receive tracking updates from UPS and update the goods delivery status in Exact Online in real time.
  • Map UPS tracking event statuses to Exact Online delivery statuses so order fulfillment visibility is current across both systems.
  • Authenticate both systems securely: refresh Exact Online OAuth tokens before expiry and handle UPS token lifecycle across the 4-hour token window.
  • Renew UPS Track Alert subscriptions every 14 days and maintain a full audit trail of every shipment and tracking event.

Questions

Which direction does data move between Exact Online and UPS?
The primary flow is from Exact Online into UPS. Sales orders and goods deliveries trigger UPS shipment creation and tracking number capture. Tracking events and delivery confirmations flow back from UPS into Exact Online to update goods delivery status. Reference data such as addresses and item dimensions may also sync bidirectionally to ensure accurate shipment rating.
How does ml-connector handle the region-specific Exact Online URLs and division IDs?
ml-connector stores the region-specific base URL (Netherlands, Belgium, UK, Germany, France, Spain, or USA) and division ID per customer at setup time. Both are cached and used on every Exact Online API call, so shipments and tracking data are always routed to the correct customer instance.
What happens when the UPS Track Alert subscription expires after 14 days?
ml-connector tracks the 14-day expiry window and renews the Track Alert subscription for active tracking numbers before expiry. If a renewal fails, ml-connector falls back to Quantum View polling to ensure no tracking events are missed.

Related integrations

Connect Exact Online and UPS

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

Get started