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.
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
More Zoho Books integrations
Other systems that connect to Shopify
Connect Zoho Books and Shopify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started