ml-connector
QuickBooks DesktopUPS

QuickBooks Desktop and UPS integration

QuickBooks Desktop manages your accounting and expense records on Windows. UPS handles shipment creation, tracking, and delivery. Connecting the two keeps your freight expenses and revenue aligned. Shipped items tracked in UPS automatically update in QuickBooks Desktop so you can reconcile freight costs and revenue by shipment status without manual re-entry. ml-connector handles the SOAP Web Connector polling on your Windows machine and the OAuth dance with UPS, and maintains a full audit trail for compliance.

How QuickBooks Desktop works

QuickBooks Desktop is a locally-installed Windows accounting system from Intuit. It exposes vendors, bills, purchase orders, invoices, customer records, accounts, items, and employees through SOAP and QBXML. Integration requires a customer-hosted Web Connector agent (QBWC) on the same Windows machine where QuickBooks runs. The QBWC agent calls your remote SOAP service on a configurable polling interval, typically 5 to 15 minutes. Your SOAP endpoint authenticates the QBWC agent with a session-token handshake (username and password for the authenticate() call, returning a session GUID), then responds to queries with QBXML envelopes describing the changes. QuickBooks must be open and logged into the company file for polling to work. Changes are detected with ModifiedDateRangeFilter queries, and deletions are detected with TxnDeletedQueryRq.

How UPS works

UPS provides REST APIs for shipment creation, rating, tracking, address validation, and pickup scheduling via OAuth 2.0 client credentials (client_id, client_secret, and optional merchant ID). The UPS sandbox is at https://wwwcie.ups.com/api and production at https://onlinetools.ups.com/api. Tokens last approximately 4 hours, and UPS enforces a limit of approximately 250 token requests per day. UPS supports two main synchronization modes: Track Alert webhooks (for real-time tracking updates on up to 100 shipments per subscription, valid for 14 days) and Quantum View polling (a shipment visibility feed requiring a UPS account portal subscription). UPS does not expose a billing or invoice API, and legacy XML/SOAP authentication was decommissioned June 3, 2024.

What moves between them

The integration reads shipment tracking events and exceptions from UPS and writes them into QuickBooks Desktop as transaction records or expense entries. Outbound flow from QuickBooks Desktop to UPS occurs when a sales order or purchase order is recorded in QB and mapped to a UPS shipment; ml-connector reads that QB transaction and creates or updates the shipment in UPS. Tracking data flows from UPS back into QB as transaction status or customer/vendor history, so freight cost reconciliation is complete. This data flows on a polling schedule tied to your accounting period end date rather than real-time, because QuickBooks Desktop does not support webhooks.

How ml-connector handles it

ml-connector stores both credential sets encrypted: QuickBooks Desktop's QBWC username and password, and UPS OAuth client_id and client_secret. For QuickBooks Desktop, ml-connector presents itself as a remote SOAP service (listening at a URL you register in your QBWC configuration), handles the session-token handshake on each poll cycle, and responds with QBXML queries filtered by ModifiedDateRangeFilter to detect changes in bills, invoices, and customer records since the last run. For UPS, ml-connector refreshes the OAuth token before it expires and uses Track Alert or Quantum View polling to retrieve shipment events. Because QuickBooks Desktop enforces EditSequence version counters on update operations, ml-connector re-queries each record before modifying it to prevent concurrent-edit conflicts. QBWC operates sequentially and times out after approximately 60 seconds, so ml-connector batches large queries and paginates results. Track Alert subscriptions expire after 14 days and are renewed automatically. Every record carries a full audit trail, and failed UPS writes are queued for replay.

A real-world example

A mid-sized wholesale distributor uses QuickBooks Desktop to manage accounts payable, inventory, and general ledger on Windows, and ships orders via UPS. Before the integration, the shipping and accounting teams operated separately: when an order shipped via UPS, the team manually entered the tracking number and freight cost into QuickBooks Desktop weeks later during month-end close, sometimes missing shipments or recording incorrect costs. When a shipment was delayed or returned, there was no automatic flag in QuickBooks Desktop to investigate. With QuickBooks Desktop and UPS connected, each shipment created in QB automatically routes to UPS, and tracking events and exception alerts flow back into QB as vendor transaction notes, so the accounting team sees delivery delays immediately and freight costs are reconciled by shipment status automatically. Month-end close is faster because shipping data is already in the accounting system.

What you can do

  • Read shipment tracking data from UPS and write it to QuickBooks Desktop transaction records or customer history for reconciliation.
  • Create or update shipments in UPS from QuickBooks Desktop sales orders and purchase orders.
  • Detect delivery exceptions and delays in UPS and flag them in QuickBooks Desktop for follow-up.
  • Manage OAuth token lifecycle with UPS and SOAP session handshakes with QuickBooks Desktop QBWC agent.
  • Poll both systems on a schedule aligned with your accounting period, with retries and a full audit trail on every shipment.

Questions

How does ml-connector communicate with QuickBooks Desktop if it runs on a Windows machine at my site?
ml-connector listens as a remote SOAP web service and you register its URL in your QuickBooks Web Connector configuration. When QBWC polls on your configurable interval (typically 5-15 minutes), it calls ml-connector's SOAP endpoint, ml-connector authenticates it with the session token, queries for changes using ModifiedDateRangeFilter, and responds with QBXML. Your local QuickBooks instance and Windows machine handle the actual XML processing through QBWC.
Does UPS Track Alert require special setup, and how often do subscriptions need to be renewed?
Track Alert subscriptions must be set up in your UPS account portal and allow ml-connector to monitor up to 100 tracking numbers per subscription for 14 days. ml-connector automatically renews the subscription before it expires, so you do not have to manually re-register. Alternatively, you can use Quantum View polling, which requires a Quantum View subscription set up in your UPS account but has no expiry window.
What happens if QuickBooks Desktop is closed or the Windows machine goes offline?
QBWC will not poll when QuickBooks Desktop is not open and logged into the company file. ml-connector queues any pending UPS tracking updates and replays them once QuickBooks is back online and QBWC resumes polling. The audit trail captures both the original event timestamp from UPS and when the record eventually landed in QuickBooks Desktop.

Related integrations

Connect QuickBooks Desktop and UPS

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

Get started