ml-connector
QuickBooks OnlineUPS

QuickBooks Online and UPS integration

QuickBooks Online holds your bills and purchase orders. UPS moves your packages. Connecting them keeps your logistics costs current and your shipping visibility inside QBO. When you create a purchase order in QBO for goods from a supplier, ml-connector can send that shipment request to UPS. When UPS updates tracking on those shipments, ml-connector pulls the data back into QBO so you can see where packages are and what they cost without leaving your accounting system.

How QuickBooks Online works

QuickBooks Online exposes vendors, bills, purchase orders, invoices, and journal entries through the REST Accounting API v3, using OAuth 2.0 Authorization Code flow. Access tokens expire in one hour; refresh tokens rotate every 24-26 hours. QuickBooks sends webhook notifications on Create/Update/Delete operations and also supports CDC (Change Data Capture) polling with a 30-day history window. All API calls use a realm_id (company identifier) captured during OAuth callback, and every update requires a SyncToken for optimistic concurrency control. Webhook payloads contain only entity ID and operation type, so full records must be fetched via GET request.

How UPS works

UPS exposes shipments, tracking, ratings, address validation, and pickup scheduling through REST APIs, with OAuth 2.0 Client Credentials authentication. Access tokens expire in approximately 4 hours, with a rate limit of approximately 250 token requests per day. UPS offers Track Alert webhooks (push notifications on tracking changes) with a 14-day subscription validity, and Quantum View (polling feed) for shipment visibility. A merchant ID can be passed via x-merchant-id header. UPS has no billing or invoice API, so cost data must be retrieved only through shipment rating or lookup endpoints.

What moves between them

Purchase orders and shipment details flow from QuickBooks Online to UPS for shipment creation and rating. Tracking updates and shipment status flow back from UPS into QuickBooks Online as expense line items or memo fields on bills, synced on a polling schedule. Shipment costs are captured from UPS rating calls and posted as line items on QBO bills or journal entries. The integration does not write billing or invoicing data to UPS, since UPS has no invoice API.

How ml-connector handles it

ml-connector handles OAuth token management on both sides: QuickBooks Online's Authorization Code flow (cached realm_id, SyncToken on updates, token refresh before expiry), and UPS's Client Credentials flow (x-merchant-id header, token refresh before the 4-hour expiry). QuickBooks requires a full object representation with SyncToken for concurrency safety, so ml-connector fetches the current record, increments the token, then posts the update. UPS Track Alert subscriptions expire after 14 days, so ml-connector renews them automatically. Because QuickBooks sends webhook payloads with only entity ID, the integration must fetch full PurchaseOrder or Bill records via GET to extract shipment details. Tracking status from UPS is mapped into QBO bill memos or expense line items via journal entries. Rate limits from UPS (250 token requests per day) are respected by batching pulls and spacing token refreshes.

A real-world example

A growing e-commerce distributor uses QuickBooks Online to manage bills from suppliers and UPS to ship orders to customers. Before the integration, the fulfillment team created shipments in UPS manually and then the accounting team looked up UPS tracking numbers and shipment costs to add to corresponding bills in QuickBooks, a process that took hours per week and was error-prone. With QuickBooks Online and UPS connected, each purchase order created in QBO flows to UPS for shipment, tracking updates sync back automatically, and shipment costs post to the bill as line items. Month-end reconciliation is faster because logistics costs are already recorded in QBO with live tracking attached.

What you can do

  • Create shipments in UPS from QuickBooks Online purchase orders, with auto-rating for cost estimation.
  • Push UPS tracking updates back into QuickBooks Online bills as memo fields or journal line items.
  • Validate shipment addresses against UPS standards before posting back to QuickBooks Online.
  • Manage UPS Track Alert subscriptions automatically, renewing 14-day subscriptions before expiry.
  • Map shipment costs from UPS rating calls into QuickBooks Online expense accounts and bill line items.

Questions

Which direction does data flow between QuickBooks Online and UPS?
The main flow is QuickBooks Online to UPS for shipment creation and rating. Tracking updates and shipment costs flow back from UPS into QuickBooks Online as bill line items or journal entries. ml-connector does not write billing or invoice data to UPS, since UPS has no invoice API.
How does the integration handle QuickBooks Online's webhook payloads and SyncToken requirements?
QuickBooks Online webhook payloads contain only entity ID and operation type, so ml-connector fetches the full record via GET to extract shipment details. Every update to QuickBooks Online requires a SyncToken for concurrency control, so ml-connector reads the current record, increments the token, and posts the update to avoid conflicts.
What about UPS Track Alert subscription expiry and token refresh limits?
Track Alert subscriptions expire after 14 days and must be renewed; ml-connector renews them automatically before expiry. UPS enforces a limit of approximately 250 token requests per day, so ml-connector batches tracking pulls and times token refreshes to stay within the quota.

Related integrations

Connect QuickBooks Online and UPS

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

Get started