ml-connector
Zoho BooksUPS

Zoho Books and UPS integration

Zoho Books runs accounting for small and mid-market businesses. UPS runs shipping and logistics. Connecting the two keeps your purchase order records current with actual shipment status and cost data. New shipments created in UPS flow into Zoho Books as line items on the corresponding purchase orders, and tracking updates keep everyone from warehouse to finance aware of goods in transit without manual status updates.

How Zoho Books works

Zoho Books exposes contacts, invoices, bills, purchase orders, vendor payments, items, chart of accounts, and expenses through a REST API with region-specific base URLs. Every call requires OAuth2 authentication with a user-delegated refresh token and an organization ID query parameter. Access tokens are valid for 1 hour and must be refreshed proactively. The API supports webhooks so Zoho Books can push purchase order and bill events to a registered endpoint, or ml-connector can poll the purchase order and bill endpoints on a schedule. Rate limits are 100 requests per minute with daily limits ranging from 1,000 to 10,000 per organization depending on plan.

How UPS works

UPS exposes shipment creation, rating, tracking events, address validation, and pickup scheduling through a REST API. Authentication uses OAuth 2.0 Client Credentials with an access token valid for approximately 4 hours, limited to roughly 250 token requests per day. UPS provides two sync channels: Track Alert API for pushing tracking updates to a registered webhook for up to 100 shipments at a time, with subscriptions valid for 14 days, and Quantum View for polling shipment visibility data. UPS has no billing or invoice download API; it is a shipping operations and tracking platform only.

What moves between them

Shipment records move from UPS into Zoho Books. When a new shipment is created in UPS, ml-connector creates or updates a purchase order line item in Zoho Books with the shipment reference, tracking number, and carrier cost. Tracking status updates from UPS arrive via Track Alert subscriptions and are written to the purchase order history in Zoho Books so your finance and warehouse teams see real-time shipment status. The sync runs on UPS's 14-day Track Alert subscription cycle and can be supplemented with polling via Quantum View for historical visibility. The flow is read-mostly from UPS into Zoho Books; Zoho Books does not send shipment data back to UPS.

How ml-connector handles it

ml-connector stores OAuth2 credentials for both systems encrypted and refreshes the UPS token proactively every 3.5 hours (before the 4-hour expiry) and the Zoho Books token every 55 minutes to avoid auth failures mid-request. On setup, ml-connector accepts the Zoho Books region (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia) and routes all calls to the matching regional base URL; it queries the organization ID on first auth and caches it for subsequent calls. For the shipment flow, ml-connector subscribes to UPS Track Alerts for new shipments, captures the webhook events when tracking status changes, and writes each update to the corresponding purchase order in Zoho Books by matching on the UPS tracking reference field. Because Track Alert subscriptions expire after 14 days, ml-connector renews them automatically before expiry and logs any renewal failures as high-priority alerts so a stale subscription does not silently stop tracking updates. UPS enforces a limit of 100 tracking numbers per subscription, so large shippers are split across multiple subscriptions. Zoho Books rate limits are enforced at 100 requests per minute, so ml-connector batches shipment updates and backs off on 429 responses. Every shipment update carries a full audit trail and can be replayed if Zoho Books is temporarily unavailable.

A real-world example

A mid-market wholesale distributor runs Zoho Books for accounts payable and purchase orders, and uses UPS for domestic freight and international shipping. Before the integration, the warehouse team entered new shipment tracking numbers into a shared spreadsheet, the procurement team manually cross-referenced purchase orders to look up costs, and finance had no visibility into goods-in-transit until invoices arrived. With Zoho Books and UPS connected, each new shipment automatically appears as a line item on the matching purchase order with its tracking number and UPS freight cost, tracking status updates flow into the purchase order history in real time, and the month-end close process starts with complete visibility into what goods are where and what they cost.

What you can do

  • Create and update purchase order line items in Zoho Books when new shipments are created in UPS, with tracking number and carrier cost.
  • Keep tracking status current in Zoho Books purchase order history as UPS Track Alerts update, without manual entry.
  • Automatically renew UPS Track Alert subscriptions before 14-day expiry so tracking updates do not silently stop.
  • Refresh OAuth2 tokens for both Zoho Books (hourly) and UPS (every 3.5 hours) to prevent auth failures during the sync.
  • Route all Zoho Books API calls to the correct regional base URL (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia).

Questions

Which direction does data move between Zoho Books and UPS?
The flow is from UPS into Zoho Books. Shipment records, tracking numbers, and tracking status updates from UPS are written to purchase orders in Zoho Books so your accounting records reflect actual goods in transit. Zoho Books does not send purchase order data back to UPS, since UPS is a shipping operations platform with no purchase order or invoice API.
Does UPS Track Alert subscription renewal require manual intervention?
No. UPS Track Alert subscriptions expire after 14 days and must be renewed to continue receiving tracking updates. ml-connector automatically renews subscriptions before expiry. If a renewal fails, ml-connector logs a high-priority alert so your team can investigate and re-authorize before the subscription stales and tracking updates stop flowing.
How does the integration handle Zoho Books' regional base URLs and OAuth2 token rotation?
On setup, ml-connector accepts your Zoho Books region (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia) and routes all API calls to the matching regional base URL. ml-connector refreshes the Zoho Books access token every 55 minutes (before the 1-hour expiry) and the UPS token every 3.5 hours (before the 4-hour expiry) so auth failures do not interrupt the sync.

Related integrations

Connect Zoho Books and UPS

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

Get started