Zoho Books and ShipStation integration
Zoho Books tracks invoices and expenses. ShipStation tracks orders and shipments. Connecting them ensures that orders in ShipStation become invoices in Zoho Books, and shipment costs and tracking information flow back into your accounting records. With Zoho Books and ShipStation integrated, your sales revenue and fulfillment costs are recorded in one place, and month-end reconciliation between sales and shipping expenses requires no re-keying.
What moves between them
Orders flow from ShipStation to Zoho Books. ml-connector polls ShipStation's orders endpoint (filtering by modifyDate to catch both new orders and edits) and creates or updates corresponding invoices in Zoho Books, mapping the ShipStation order total to an invoice amount and the customer email to a Zoho Books contact. Shipment data flows from ShipStation back into Zoho Books as journal entries or line-item notes recording shipping costs and carrier tracking numbers. Customer data is synchronized in both directions so a new customer in Zoho Books is available in ShipStation, and customers created implicitly in ShipStation (via orderUsername) are reflected back in Zoho Books.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the Zoho Books side it accepts the region parameter from the OAuth2 token response (returned as api_domain) and routes all subsequent calls to the correct regional base URL (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia). It proactively refreshes access tokens at 55 minutes to avoid the 1-hour expiry window. On the ShipStation side it polls the V1 orders endpoint with the modifyDate filter to detect changes not caught by ORDER_NOTIFY webhooks (which fire only on new orders), and it converts all V1 timestamps from PST/PDT to UTC on ingest. Because ShipStation webhook payloads are pointers only (containing resource_url and resource_type), ml-connector immediately follows up with an authenticated GET to fetch the full order or shipment data within the tight time window. The integration applies Zoho Books' 100 requests/minute rate limit via exponential backoff and retry, and tracks the authorization code expiry (2 minutes, single-use) to avoid wasted token requests. Every order and shipment record carries a full audit trail and can be replayed if a downstream invoice create fails.
A real-world example
A mid-sized e-commerce retailer selling through multiple channels (Shopify, Amazon, eBay) uses ShipStation to consolidate orders, print labels, and manage carrier contracts. They also use Zoho Books for accounting, invoicing, and expense tracking. Before the integration, the operations team exported weekly order totals from ShipStation and manually entered them into Zoho Books as batch invoices, often missing shipping cost details and reconciling customer names across systems. With Zoho Books and ShipStation connected, each order syncs automatically as an invoice, customer data is kept in sync, and shipping costs are captured as line-item notes or separate journal entries. The accounting team now has complete visibility into revenue and fulfillment costs from a single system, and month-end close no longer requires manual order reconciliation.
What you can do
- Sync ShipStation orders to Zoho Books as invoices, automatically creating or updating customer contacts.
- Capture shipping costs and carrier tracking numbers from ShipStation shipments as journal entries or invoice notes in Zoho Books.
- Route all Zoho Books API calls to the correct regional base URL (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia) based on the customer organization.
- Poll ShipStation orders by modifyDate to detect both new orders and edits, and follow up on webhook pointers to fetch full order and shipment data.
- Proactively refresh Zoho Books access tokens before expiry and handle rate limits with exponential backoff and a complete audit trail on every record.
Questions
- Which direction does data move between Zoho Books and ShipStation?
- Orders and shipments flow from ShipStation into Zoho Books as invoices and cost records. Customer data is synchronized in both directions so contacts stay aligned. Zoho Books invoices and purchase orders are read-only on the ShipStation side, so the integration does not write financial transactions back into the shipping system.
- How does the integration handle ShipStation's webhook payloads being data pointers, not full records?
- ShipStation webhook payloads contain only a resource_url and resource_type, not the full order or shipment details. ml-connector immediately follows up with an authenticated GET request to the resource_url to fetch the complete order or shipment data within the tight time window before the data changes again. This is why polling with the modifyDate filter is also required to catch order edits, which do not trigger webhooks.
- How does Zoho Books' multi-region setup affect the integration?
- Zoho Books returns the customer's region (api_domain) in the OAuth2 token response. ml-connector stores this value and routes all subsequent API calls to the correct regional base URL (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia) so that credentials and data remain in the correct jurisdiction. This ensures compliance and prevents regional API routing errors.
Related integrations
More Zoho Books integrations
Other systems that connect to ShipStation
Connect Zoho Books and ShipStation
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started