Sage 100 and UPS integration
Sage 100 runs your order management, inventory, and shipping operations. UPS handles shipment rating and tracking. Connecting the two keeps your order fulfillment automated from dispatch to tracking. Sales orders in Sage 100 flow into UPS for rating, shipment creation, and label generation, and tracking updates come back into Sage 100 so your customers always have visibility. ml-connector handles the complexity of the local Sage agent, OAuth with UPS, address validation, and shipment retries.
What moves between them
Sales orders from Sage 100 flow into UPS for rating and shipment creation. For each order, ml-connector reads the ship-to address and line items from Sage 100, validates the address against UPS, requests a rate quote for the weight and destination, creates a shipment in UPS with the chosen service level, and stores the UPS tracking number back in Sage 100 as a reference. Tracking events from UPS flow back into Sage 100 via Track Alert subscriptions (renewed every 14 days) so the sales order record always shows current shipment status.
How ml-connector handles it
ml-connector stores the UPS OAuth credentials encrypted and refreshes the bearer token when approaching expiry or when UPS returns 401. For Sage 100, it stores the local agent endpoint and credentials (API key or mTLS) encrypted, and connects to the BOI layer on the customer's server to read sales orders and write tracking back. Because Sage 100 has no webhooks, ml-connector polls DateLastUpdated on sales orders every 15 minutes to detect new or modified orders ready to ship. Address validation against UPS happens before rating to catch invalid addresses early. Shipment creates are tagged with an idempotency key derived from the Sage order number and date to prevent duplicate shipments if a create call times out and is retried. Track Alert subscriptions are renewed every 13 days so the 14-day window never expires. Every shipment carry, rating, and tracking update is logged with a full audit trail so failed shipments can be replayed after issues are resolved.
A real-world example
A mid-sized distributor runs Sage 100 on-premises to manage customer orders, inventory, and fulfillment. They ship multiple carrier services (ground, express) based on customer service level. Before the integration, the warehouse team manually rated each order in the UPS website, selected a service, created the shipment, and copied the tracking number back into Sage 100 for customer communication. With Sage 100 and UPS connected, each new order in Sage 100 automatically rates against UPS based on weight and destination, creates a shipment, and populates the tracking number, so the warehouse focuses only on picking and packing. Tracking updates come back into Sage 100 automatically, and customers see current status without manual updates.
What you can do
- Automatically read sales orders from Sage 100 via polling and create shipments in UPS with the appropriate service level.
- Validate ship-to addresses against UPS before creating shipments to catch errors early.
- Store UPS tracking numbers in Sage 100 sales order records so customer service and fulfillment teams have one source of truth.
- Authenticate to Sage 100 via the local BOI Windows agent and to UPS via OAuth2, with encrypted credential storage.
- Receive tracking updates from UPS via Track Alert API subscriptions and post them back into Sage 100.
Questions
- How does ml-connector connect to Sage 100 if there is no cloud API?
- ml-connector stores the endpoint and credentials for the local Sage 100 BOI Windows agent on the customer's server, encrypted. It connects to that agent to read sales orders and write tracking data back, bridging from the customer's on-premises network to UPS without exposing the Sage server directly.
- Does Track Alert subscription expiry need manual renewal?
- No. ml-connector renews Track Alert subscriptions every 13 days automatically, so the 14-day subscription window never expires. You will not need to manually resubscribe or lose tracking visibility.
- What happens if UPS rates a shipment as ineligible or the address is invalid?
- Address validation runs before rating, so most invalid addresses are caught and logged for manual review before a shipment create is attempted. If UPS declines a rate or shipment create, ml-connector logs the full response and pauses that order, flagging it for the fulfillment team to resolve (e.g. split the shipment or correct the address).
Related integrations
More Sage 100 integrations
Other systems that connect to UPS
Connect Sage 100 and UPS
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started