ml-connector
Zoho BooksGoogle Sheets

Zoho Books and Google Sheets integration

Zoho Books runs your accounting. Google Sheets holds your operational data. Connecting the two keeps your finance records visible in the tools your team already uses. Invoices, bills, and purchase orders in Zoho Books flow into Google Sheets on a schedule you control, formatted to match your existing sheet layout. ml-connector handles the OAuth2 authentication, region-specific API endpoints, and custom schema mapping, so you can read live data without re-keying.

How Zoho Books works

Zoho Books is a REST API with region-specific base URLs (US, EU, India, Australia, Japan, Canada, China, Saudi Arabia). It authenticates with OAuth2 Authorization Code flow and requires a user-delegated refresh token and an organization_id query parameter on every call. The API exposes invoices, bills, purchase orders, expenses, contacts, items, chart of accounts, and journals. Webhooks are supported via Settings > Automation > Webhooks with HMAC signature verification, and event history is available per webhook. Polling is also available with offset-based pagination. Access tokens expire after 1 hour and must be refreshed; max 10 new access tokens are allowed per 10-minute window.

How Google Sheets works

Google Sheets exposes spreadsheets, sheets (tabs), cell data, and named ranges via the Sheets API v4 over REST. It authenticates with OAuth2 Authorization Code flow (user-delegated) or Service Account credentials. Data is written and read via A1 notation ranges or named ranges, and customers define their own schema by creating sheet tabs and column headers. Push notifications are available via Google Drive API watch channels, but channels expire hourly and do not auto-renew. Polling every 5 to 15 minutes is the recommended approach.

What moves between them

Invoices, bills, purchase orders, and expenses from Zoho Books flow into Google Sheets. ml-connector reads these records from Zoho Books via webhook push (if configured) or polling, transforms each into a row using customer-defined column mappings, and writes the data to the target sheet. Reference data such as contact names and item descriptions are resolved and included. Expense records are written to a separate sheet if configured. Data flows in one direction, from Zoho Books to Google Sheets, on a schedule you control or triggered by Zoho Books webhook events.

How ml-connector handles it

ml-connector stores Zoho Books OAuth2 credentials encrypted and refreshes the access token proactively before expiry (at 55 minutes). It resolves the organization_id after authentication and routes all API calls to the correct regional endpoint based on the stored region credential. When Zoho Books webhooks are configured, ml-connector receives the webhook payload and verifies the HMAC signature using the stored secret, then writes the data to the sheet immediately. When polling, ml-connector uses offset-based pagination to fetch new and updated records, tracking the last-seen record ID to avoid re-processing. Currency codes are resolved via GET /settings/currencies and matched to the sheet columns. Line items within invoices and bills are flattened to separate rows or aggregated to summary rows depending on customer preference. Rate limits return HTTP 429, so ml-connector backs off exponentially and retries. Every record includes metadata (timestamp, source ID, sync status) so errors can be traced and replayed.

A real-world example

A mid-sized services firm uses Zoho Books for accounting and manages project billing and expense tracking in Google Sheets shared across the delivery team. Before the integration, the finance team exported invoices and expenses from Zoho Books weekly and manually pasted them into the sheet, creating lag and copy-paste errors. With Zoho Books and Google Sheets connected, invoices and expenses flow into the sheet in near real-time, the team sees current project profitability without file exports, and month-end reconciliation is faster because the data is already aligned.

What you can do

  • Sync invoices, bills, purchase orders, and expense records from Zoho Books to Google Sheets on a configurable schedule.
  • Handle Zoho Books OAuth2 token refresh, region routing, and organization_id resolution automatically.
  • Map Zoho Books line items to customer-defined sheet columns and aggregate or flatten based on your preference.
  • Verify Zoho Books webhook signatures and process events in real-time when webhooks are enabled.
  • Resolve currency codes and contact details from Zoho Books and include them in the sheet rows with full audit trail.

Questions

Can Google Sheets receive both webhooks and polling from Zoho Books?
Yes. If you configure Zoho Books webhooks, ml-connector receives events immediately and writes them to the sheet in near real-time. If you do not use webhooks, ml-connector polls Zoho Books on a schedule (every 5 to 15 minutes is typical) using offset-based pagination to fetch new records. You can use both together for redundancy.
How does ml-connector handle Zoho Books regions and organization IDs?
ml-connector stores the region credential (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia) per customer and routes all API calls to the correct regional base URL. It fetches the organization_id after OAuth2 authentication and includes it as a query parameter on every subsequent call. If you change regions, the stored region credential must be updated.
What happens if a Zoho Books webhook signature verification fails or a rate limit is hit?
If the HMAC signature does not match the stored secret, ml-connector rejects the webhook payload and returns 401 to prevent data corruption. If a rate limit (HTTP 429) is returned, ml-connector backs off exponentially and retries. All failures are logged with full audit trail so you can trace and replay records if needed.

Related integrations

Connect Zoho Books and Google Sheets

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

Get started