ml-connector
Zoho BooksShopify

Zoho Books and Shopify integration

Zoho Books runs your accounting and Shopify runs your online store. Connecting them keeps your revenue records in sync without manual data entry. When a customer places an order in Shopify, ml-connector creates an invoice in Zoho Books, and customer changes flow between the two systems automatically. This eliminates duplicate customer entry, reduces the risk of missing revenue in your general ledger, and lets your accounting team focus on analysis instead of re-keying transactions.

How Zoho Books works

Zoho Books is a cloud-based accounting platform that handles invoicing, bills, purchase orders, expenses, and multi-currency accounting through REST APIs. The API requires OAuth2 authentication with user-delegated refresh tokens (not machine-to-machine), and every call must include an organization_id query parameter. Zoho Books publishes region-specific base URLs (US, EU, India, Australia, Japan, Canada, China, Saudi Arabia), and the region is returned in the token response so ml-connector can route calls correctly. Zoho Books supports outgoing webhooks for invoices, bills, purchase orders, contacts, and payments, so it can push events to your integration. Access tokens expire after 1 hour and refresh tokens have no expiry, but there is a rate limit of 100 requests per minute across all plans and a daily limit ranging from 1,000 to 10,000 requests per organization. Every monetary entity carries a currency_id and exchange_rate field that must be resolved against the currencies list.

How Shopify works

Shopify is a cloud e-commerce platform offering the GraphQL Admin API as the primary integration path (REST is now legacy). The GraphQL API is authenticated via OAuth2 offline tokens with the prefix shpat_ that do not expire, and calls are made to https://{shop}.myshopify.com/admin/api/2026-04/graphql.json. Shopify webhooks cover finance-relevant events including orders/create, orders/updated, orders/paid, orders/cancelled, customers/create, customers/update, fulfillments, and inventory changes, and each webhook includes an X-Shopify-Webhook-Id header for deduplication. Shopify has no native vendors or suppliers entity, no general ledger, and draft orders serve as the closest approximation to purchase orders. API versions are date-based with quarterly releases and a support window of approximately 12 months, so integration code must version match the application.

What moves between them

Orders and customers flow from Shopify into Zoho Books. When a customer places an order in Shopify, ml-connector receives the webhook and creates a corresponding invoice in Zoho Books with the order items, amounts, and customer details. Customer records created or updated in Shopify trigger creation or updates in Zoho Books so the customer list stays synchronized. The connector validates the order total against the tax and shipping components before posting the invoice to ensure accounting accuracy. Because Zoho Books supports webhooks for outgoing events but Shopify drives the primary data flow, the integration is pull-initiated from Shopify via its webhooks and push-confirmed in Zoho Books.

How ml-connector handles it

ml-connector stores OAuth2 credentials for both systems encrypted and refreshes Zoho Books access tokens proactively at 55 minutes (before the 1-hour expiry) to avoid token-expired errors mid-transaction. On initialization, it resolves the Zoho Books organization_id and region, then routes all subsequent Zoho calls to the correct regional base URL so the connector works across Zoho's eight global data centers. When receiving a Shopify webhook, ml-connector validates the X-Shopify-Webhook-Id header to deduplicate retries and ensure each order maps to exactly one invoice. Before creating an invoice in Zoho Books, it pulls the current customer record to validate the customer exists, or creates the customer if new. For multi-currency orders, it resolves the correct currency_id from Zoho Books' currencies endpoint and includes the exchange_rate on the invoice. Shopify webhook payloads are received and stored for audit; if the invoice creation fails, the job is retried with exponential backoff, and every step is logged so failed orders can be replayed.

A real-world example

A direct-to-consumer e-commerce brand runs Shopify for their online storefront and Zoho Books for accounting and monthly invoicing. Before the integration, the finance team downloaded Shopify orders every morning and manually created invoices in Zoho Books, a process that took 30 to 45 minutes per day and introduced copy errors. With Shopify and Zoho Books connected, each order triggers an invoice in Zoho Books automatically, complete with the correct customer record, SKU details, tax, and shipping. The finance team now receives a daily summary of synced orders and focuses instead on recognizing revenue and reconciling inventory, freeing up 4 to 5 hours per week.

What you can do

  • Create Zoho Books invoices automatically when orders are placed in Shopify, including line items, amounts, and customer details.
  • Sync customer records from Shopify to Zoho Books so the customer database stays current across both systems.
  • Route Zoho Books API calls to the correct regional base URL (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia) so the integration works for globally distributed teams.
  • Validate Shopify webhook signatures and Zoho Books outgoing webhooks using HMAC verification, and deduplicate retries with webhook IDs and BullMQ job tracking.
  • Handle OAuth2 refresh token cycles for both Zoho Books and Shopify, including proactive token refresh before expiry and encryption of all credentials.

Questions

How does ml-connector know which Zoho Books region to use?
The Zoho Books OAuth2 token response includes an api_domain field that specifies the customer's region (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia). ml-connector reads that field at authentication time and routes all subsequent API calls to the correct regional base URL. This ensures the integration works for teams across any of Zoho Books' eight global data centers.
What happens if an order sync fails in Zoho Books?
ml-connector stores the Shopify webhook payload and retries the invoice creation with exponential backoff and jitter. If the failure persists, the record enters a failed queue with full error context, and an admin can replay it once the underlying issue is resolved. Every step is logged so you can audit what happened and why.
Does ml-connector sync Shopify inventory changes back to Zoho Books?
The integration currently syncs orders and customers from Shopify to Zoho Books invoices and customer records. Inventory changes are available through Shopify webhooks (inventory_levels/update) and can be extended to map to Zoho Books item stock levels, but that depends on your business requirements and the level of inventory detail you maintain in Zoho Books.

Related integrations

Connect Zoho Books and Shopify

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

Get started