
Stop copying orders into Zoho Books by hand. Every order your customers place is typed, checked, and re-typed — or it just flows into Zoho Books on its own, seconds after checkout, with the contact, the items, the invoice, and the payment already in place. This plugin makes it the second one.
Zoho Books Integration For WooCommerce connects your store to your own Zoho Books organization over a secure OAuth connection — your Zoho password never touches the site. Set it up once with the built-in wizard, and your WooCommerce checkout becomes a direct feed into Zoho’s sales, invoicing, and accounting — no CSV exports, no double data entry, no missed orders at month-end.
Compatible with every Zoho data centre (.com, .eu, .in, .com.au, .jp, .ca, .sa, .com.cn) · classic and block (Gutenberg) checkout · WooCommerce HPOS · works with your existing Zoho items via SKU matching.
⚡ Sync WooCommerce orders to Zoho Books automatically
- Export on checkout — the order is in Zoho Books before your customer sees the thank-you page, and you choose exactly which statuses qualify (Processing for paid orders, On hold for bank transfer / COD…)
- Sales order or invoice — your call: create each order as a sales order only, or convert it straight to an invoice, submitted approved or saved as a draft
- Your numbering, your rules — keep your own document series for sales orders, invoices and credit notes, or let Zoho number them
- Discounts and coupons land per line or at document level — the way your accountant expects; shipping ships as its own (taxable) line
- Flexible customer handling: real contact records (created or matched by email), guest checkouts included, or map every order to a single generic contact
- 🆕 A customer whose contact was deleted or merged in Zoho is found again automatically
- Multi-currency orders sent in their own currency and converted at Zoho’s exchange rate — or skipped, your choice
🧾 Invoices, payments, refunds — created automatically
- Zoho invoices created automatically at the order statuses you choose
- Payments registered and invoices marked paid — with per-gateway payment-mode and deposit-account mapping, so card money and COD money land in the right books
- Refund in WooCommerce credit note in Zoho Books, linked to its invoice and applied. Done.
- Cancel an order its Zoho documents are voided, not orphaned — 🆕 paid orders too
- Fulfilment recorded as a sales-order note or a delivery challan, tracking details included
🧮 Taxes, handled properly
- Send WooCommerce’s own tax totals so both systems agree to the last decimal — a document-level rounding adjustment keeps them in exact step — or let Zoho Books recompute tax instead
- One-click auto-mapping of your WooCommerce rates to the matching Zoho taxes, zero-rated lines included
- Regional tax fields built in where Zoho requires them — including full India GST support (GSTIN, HSN/SAC, place of supply, CGST+SGST vs IGST resolved automatically)
🔄 Customers and products, in both directions
- Push WooCommerce customers to Zoho contacts the moment they register or change — guests included
- Pull Zoho contacts into WooCommerce on a schedule, with create and conflict policies you control (WooCommerce wins, Zoho wins, or last write wins)
- Product sync both ways with SKU-first matching that never merges two different products, and field-level control over what a push may overwrite
- Inventory sync with a single source of truth — WooCommerce Zoho as stock adjustments, or Zoho WooCommerce on a schedule as fast as every 15 minutes, into the Zoho warehouse you choose (Zoho Inventory required; the plugin tells you plainly when it isn’t enabled, with the exact steps to turn it on)
🛡 Built for stores that can’t afford sync surprises
- Background queue with automatic retries — a slow Zoho server never blocks your checkout
- 🆕 Busy orders wait their turn — a job that finds its order busy tries again by itself instead of being dropped
- Failures land in a visible retry queue and resolve themselves the moment a retry succeeds — no stale red badges
- Human-readable logs: plain-language messages (“Zoho would not accept stock tracking — it needs a Zoho Inventory subscription”), with technical details when you want them
- Dashboard with sync status, health, mapped-record counts and recent activity at a glance
- 🆕 Live progress on the Logs screen — one line per task, counting only what Zoho really accepted
- 🆕 If your Zoho Books trial or subscription ends, the plugin tells you once and keeps the work ready to re-run
- 🆕 Stores linked to a subscription account share their sync log with our support team, so problems are spotted sooner
- A setup wizard that resumes exactly where you left off — even across the OAuth redirect
- Change organization safely: the plugin warns you, explains what happens to existing links, and cleans up on your say-so
- Manual sync buttons that follow your settings and say exactly which switch to flip when they’re off
Every feature listed above is fully functional in this plugin — there is no license unlock, trialware gate, or disabled code path.
🚀 Ready in minutes
- Install and activate the plugin
- Follow the wizard: paste your Zoho API client keys, click Save & Connect, pick your organization
- Place a test order — watch it appear in Zoho Books
📋 Requirements
- WordPress 6.5+ · WooCommerce 8.0 or higher · PHP 8.0+
- A Zoho Books organization and a free Zoho API client (Client ID and Secret — the wizard shows you exactly where to create one)
External services
This plugin talks to three outside services, and links to Calendly for booking a call.
Zoho Books (Zoho Corporation) is where your orders, invoices, payments, refunds, customers, products and stock are synced, as you configure them. Data goes to the Zoho data centre you choose on the Connection tab whenever a sync runs. Zoho terms · Zoho privacy policy
Zoho SalesIQ (Zoho Corporation) runs the support chat in the corner of the plugin’s own screen. Its script loads from Zoho only on that screen — never on other admin pages or on your store. Like any web page, it sends Zoho your IP address, browser details and the page address, and Zoho sets its own cookies; anything you type in the chat goes to our support team. A site can turn the chat off with the zbwc_salesiq_widget_url filter (return an empty string). Zoho terms · Zoho privacy policy
Calendly: “Schedule a meeting” opens our booking page on calendly.com in a new tab. Nothing is sent unless you click it. “Documentation” opens our guide on wpzohoapi.devwork.in, and “Demo video” (when we have one) opens the video, the same way. Calendly privacy notice
This plugin’s subscription and support service (wpzohoapi.devwork.in):
- Plans and checkout: when an admin opens the Plan tab or the upgrade window, the plugin fetches the list of plans to show prices. Choosing a plan sends the site address to start a Stripe checkout. Linking sends the site address, the site’s admin email and a key the site made for itself.
- Connect to support (optional, free): at the end of setup or on the Plan tab, an admin can click Connect to support, under a note saying what will be sent. That links the store on the free plan — sending the site address, the site’s admin email and a key the site made for itself — and from then on the plan checks, sync log, queue report and announcements below apply to it. Nothing is sent before that. Disconnect on the Plan tab unlinks the store and stops it.
- Plan checks: a store linked to a subscription account checks its plan here, sending its site address with each signed request.
- Re-link email: “Email me a link to link it again” on the Plan tab sends the site address; the service emails a one-time link to the account’s address.
- Sync log: every 5 minutes the store sends the new lines of its sync log — time, level, type, the message, the order or product it is about, how long it took and the technical detail recorded with it (such as the job, the attempt and Zoho’s reply) — with customer email addresses and phone numbers removed first, together with the site address, site name, plugin version and a random id for this installation. Support uses it to spot failures and help sooner, and it is kept for 30 days. Only linked stores send it — those with a paid plan, or on the free plan after an admin chose Connect to support. A store that is not linked sends nothing.
- Queue report: with the sync log, and every 10 minutes when there is nothing new, the store sends counts from its background queue — how many jobs are waiting, running or late, how many failed, when the oldest one was due, when a job last ran, the job names, the next scheduled runs, whether Zoho is connected and why syncing is paused (if it is) — plus the WordPress, WooCommerce and PHP versions. No customer or order details. Linked stores only.
- Announcements: each time an admin opens the plugin’s screens, a linked store asks for a notice from us (a new feature, planned maintenance) to show on the plugin’s own screens, and for the current help links (“Demo video”, “Documentation” and “Schedule a meeting”). The request is signed like the others and sends nothing else. Stores that are not linked never ask, and use the links built into the plugin.
Like every request WordPress makes, these carry WordPress’s standard user agent, which includes the site address.