ml-connector
Oracle NetSuiteUPS

Oracle NetSuite and UPS integration

Oracle NetSuite runs order management and inventory. UPS runs shipment fulfillment and tracking. Connecting the two keeps your orders and shipments in lockstep. When a sales order moves to fulfillment in Oracle NetSuite, ml-connector creates the shipment at UPS and returns the tracking number, and shipment status updates from UPS post back into Oracle NetSuite so you never have to check two systems. ml-connector handles OAuth 2.0 for both endpoints, manages token refresh cycles, and queues retries when UPS rate limits are hit.

How Oracle NetSuite works

Oracle NetSuite is a cloud ERP that exposes sales orders, invoices, items, customers, vendors, and fulfillment records through REST SuiteTalk APIs and SuiteQL for queries. Every call uses OAuth 2.0 client credentials, token-based authentication, or user-delegated access, and base URLs include the account ID in the domain. Oracle NetSuite sends webhooks via Event Subscriptions for supported record types, but the events carry no HMAC signature, so webhook verification relies on IP allowlists or shared secrets. Polling via SuiteQL is also available for historical or bulk reads. OAuth tokens are valid for 60 minutes.

How UPS works

UPS exposes shipment creation, rating, tracking, address validation, pickup scheduling, and shipment visibility through REST JSON APIs on separate sandbox and production endpoints. Every call requires OAuth 2.0 client credentials, optionally with a 6-digit merchant ID header. The Track Alert API pushes tracking updates via webhooks but subscriptions expire after 14 days and must be renewed. Quantum View polling is also supported for shipment visibility feeds. OAuth tokens are valid approximately 4 hours, and the service limits token requests to approximately 250 per day.

What moves between them

Orders and items flow from Oracle NetSuite into UPS when fulfillment begins. ml-connector reads sales orders and inventory details from Oracle NetSuite, sends them to UPS to create shipments, gets rate quotes, and returns the carrier-assigned tracking numbers back into Oracle NetSuite so order records show real-time shipment status. Shipment events from UPS update delivery status in Oracle NetSuite. The flow is read-write on the Oracle NetSuite side and read-write on UPS, with Oracle NetSuite as the source of truth for order data and UPS as the source of truth for carrier operations.

How ml-connector handles it

ml-connector stores OAuth credentials for both Oracle NetSuite and UPS encrypted and refreshes tokens on expiry: every 60 minutes for Oracle NetSuite and approximately every 4 hours for UPS. It polls Oracle NetSuite sales orders on a schedule tied to your fulfillment workflow and reads item details and ship-to addresses. Before creating a UPS shipment, it validates addresses against UPS address validation to catch typos and missing data. When UPS returns a 429 rate-limit response, ml-connector backs off and retries according to UPS rate-limit windows. Tracking numbers from UPS are written back to order records in Oracle NetSuite as custom fields or fulfillment line items. Track Alert webhooks from UPS deliver shipment events (picked up, in transit, delivered) back into Oracle NetSuite to keep status current. If a shipment creation fails, every call carries a job ID so it can be replayed without creating duplicates.

A real-world example

A mid-sized e-commerce distributor runs Oracle NetSuite for orders and inventory and ships through UPS for domestic and international delivery. Before the integration, the fulfillment team checked Oracle NetSuite for new orders, manually entered shipment details into the UPS portal, copied the tracking number back into Oracle NetSuite by hand, and then customers had to ask for tracking updates because the order system did not auto-refresh with delivery status. With Oracle NetSuite and UPS connected, orders in fulfillment automatically create shipments, tracking numbers populate in order records instantly, and customers see delivery status in their order history without re-entry or manual updates.

What you can do

  • Create UPS shipments directly from Oracle NetSuite sales orders, with automatic pickup of address and item details.
  • Validate ship-to addresses against UPS validation before committing to shipment creation.
  • Retrieve UPS rates and return the best carrier option with tracking number back into the Oracle NetSuite order record.
  • Sync real-time tracking updates from UPS (picked up, in transit, delivered) back into Oracle NetSuite order status.
  • Retry shipment creation and rate requests when UPS rate limits reset, with a full audit trail for each attempt.

Questions

Which direction does data move between Oracle NetSuite and UPS?
Orders and items flow from Oracle NetSuite to UPS when fulfillment begins. UPS creates the shipment and returns the tracking number, which flows back into Oracle NetSuite. Tracking events and delivery status from UPS also flow back into Oracle NetSuite so order records show real-time carrier progress. Oracle NetSuite is the source of truth for order data.
How does the integration handle OAuth token refresh for both systems?
ml-connector refreshes Oracle NetSuite tokens every 60 minutes and UPS tokens approximately every 4 hours by requesting new credentials before expiry. The refresh happens transparently on the background, and if a token expires mid-flight, the system detects the 401 response and immediately requests a fresh token and retries the call. Token requests count toward the UPS 250-per-day limit, so ml-connector caches tokens aggressively to minimize refresh traffic.
What happens if a UPS address is invalid or a rate request fails?
ml-connector validates addresses before shipment creation using the UPS address validation endpoint and returns errors if corrections are needed. If UPS rate limits are hit, it backs off according to rate-limit windows and retries automatically. All failed records are queued for replay with their original job ID, so a temporary outage does not create duplicate shipments or lose tracking history.

Related integrations

Connect Oracle NetSuite and UPS

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

Get started