Everything an AI agent can do with the Zoho Books API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints32
API versionv3
Last updated23 June 2026
Orientation

How the Zoho Books API works.

The Zoho Books API is how an app or AI agent works with a Zoho Books organization: creating and emailing invoices, adding customers and vendors, recording bills and expenses, and applying customer payments. Access is granted through an OAuth access token whose granular scopes set which modules a call can read or write, and every request names a single organization so access stays bounded to one business at a time. Zoho Books does not mint new version numbers; it ships changes through its product release notes.

32Endpoints
10Capability groups
13Read
19Write
27Permissions
Authentication
Zoho Books authenticates every call with OAuth 2.0. An access token is sent as Authorization: Zoho-oauthtoken, lasts one hour, and is refreshed with a long-lived refresh token that stays valid until revoked. A refresh token can mint up to 15 active access tokens, and a user can hold up to 20 refresh tokens.
Permissions
Access is granted through granular scopes shaped as ZohoBooks.., like ZohoBooks.invoices.READ or ZohoBooks.contacts.CREATE. ALL covers every operation in a module, and ZohoBooks.fullaccess.all reaches the whole product. The items module is governed by the settings scope and the chart of accounts by the accountants scope.
Organization scope
Every request names a single business entity through the organization_id query parameter. A token can reach more than one organization, but each call acts on exactly the organization it names, so access is bounded one entity at a time. The id is read from the organizations list or the admin console.
Data centers
Zoho Books runs in regional data centers, each with its own API host: .com for the US, .eu for Europe, .in for India, plus .com.au, .jp, .ca, .com.cn, and .sa. An organization lives in one region, and a call must go to that region's host with a token issued by the matching Zoho Accounts domain.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Zoho Books determines what it can reach. There is a route for making calls, governed by an OAuth access token and the granular scopes behind it, and a hosted server that exposes Zoho Books tools to agents. Every call also names a single organization, so access is bounded to one business entity at a time.

Ways to connect

REST API

The REST API takes JSON request bodies, returns JSON, and pages through lists with a page number, at a regional host such as https://www.zohoapis.com/books/v3. A call authenticates with an OAuth access token sent as Authorization: Zoho-oauthtoken, and every request carries an organization_id query parameter naming the business entity to act on.

Best forConnecting an app or AI agent to Zoho Books.
Governed byThe OAuth access token and the scopes it carries.
Docs ↗

MCP server

Zoho runs a first-party Model Context Protocol service, managed at mcp.zoho.com, that exposes Zoho Books tools to AI agents and clients like Claude. An admin enables it, a per-user server URL carrying a secret API key is generated, and the admin chooses which tools and data each agent can reach. Tools cover actions such as creating and sending invoices, recording expenses, adding customers and items, and reconciling bank transactions. Zoho Books is also a default connector in Claude.

Best forConnecting an AI agent to Zoho Books through MCP.
Governed byThe admin-approved tools plus the per-user server URL and its API key.
Docs ↗

Webhooks

Zoho Books does not ship a fixed catalog of webhook events. Instead, an admin creates a workflow rule in the organization, sets the condition that should trigger it, and attaches a webhook action that POSTs to a configured HTTP or HTTPS URL when the rule fires. This lets an integration learn about activity, like an invoice being created or a payment recorded, without polling.

Best forReceiving Zoho Books activity at an app or AI agent.
Governed byThe workflow rule and the receiving URL it is configured with.
Docs ↗
Authentication

OAuth 2.0

Zoho Books authenticates every API call with OAuth 2.0. An app registers in the Zoho Developer Console, sends a user through the authorization-code flow, and exchanges the grant for an access token plus a refresh token. The access token is sent as Authorization: Zoho-oauthtoken and is restricted to the granular scopes the user consented to, such as ZohoBooks.invoices.READ or ZohoBooks.contacts.ALL. An access token lasts one hour; the refresh token does not expire until it is revoked.

TokenOAuth access token (Zoho-oauthtoken)
Best forServer-side and agent calls scoped to specific modules.
Docs ↗

Full-access scope

A single scope, ZohoBooks.fullaccess.all, grants read and write across every Zoho Books module. It is convenient for a trusted server integration but reaches the entire organization, so a least-privilege setup requests only the per-module scopes an agent needs instead.

TokenOAuth access token with ZohoBooks.fullaccess.all
Best forA trusted integration that needs the whole product.
Docs ↗
Capability map

What an AI agent can do in Zoho Books.

The Zoho Books API is split into modules an agent can act on, like invoices, contacts, estimates, bills, expenses, payments, and banking. Each module has its own methods, and a write in some of them sends documents to customers or changes the accounting record.

Endpoint reference

Every Zoho Books API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Invoices

Methods for creating, sending, and managing customer invoices.7

Full scope: ZohoBooks.invoices.READ.

Acts oninvoice
Permission (capability)invoices.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.invoices.READ.

Acts oninvoice
Permission (capability)invoices.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.invoices.CREATE. The invoice starts as a draft unless sent.

Acts oninvoice
Permission (capability)invoices.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.invoices.UPDATE.

Acts oninvoice
Permission (capability)invoices.UPDATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.invoices.DELETE. Only invoices in certain states can be deleted.

Acts oninvoice
Permission (capability)invoices.DELETE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.invoices.UPDATE. Moves the invoice out of draft.

Acts oninvoice
Permission (capability)invoices.UPDATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.invoices.CREATE. Sends a real email to the customer's address.

Acts oninvoice
Permission (capability)invoices.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Contacts (customers & vendors)

Methods for working with customers and vendors.5

Full scope: ZohoBooks.contacts.READ.

Acts oncontact
Permission (capability)contacts.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.contacts.READ.

Acts oncontact
Permission (capability)contacts.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.contacts.CREATE.

Acts oncontact
Permission (capability)contacts.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.contacts.UPDATE.

Acts oncontact
Permission (capability)contacts.UPDATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.contacts.DELETE.

Acts oncontact
Permission (capability)contacts.DELETE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Estimates

Methods for working with quotes and estimates.3

Full scope: ZohoBooks.estimates.READ.

Acts onestimate
Permission (capability)estimates.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.estimates.CREATE.

Acts onestimate
Permission (capability)estimates.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.estimates.CREATE. Sends a real email to the customer.

Acts onestimate
Permission (capability)estimates.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sales orders

Methods for working with sales orders.2

Full scope: ZohoBooks.salesorders.CREATE.

Acts onsalesorder
Permission (capability)salesorders.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.salesorders.READ.

Acts onsalesorder
Permission (capability)salesorders.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Bills

Methods for working with vendor bills.2

Full scope: ZohoBooks.bills.CREATE.

Acts onbill
Permission (capability)bills.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.bills.READ.

Acts onbill
Permission (capability)bills.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Purchase orders

Methods for working with purchase orders.2

Full scope: ZohoBooks.purchaseorders.CREATE.

Acts onpurchaseorder
Permission (capability)purchaseorders.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.purchaseorders.READ.

Acts onpurchaseorder
Permission (capability)purchaseorders.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Expenses

Methods for working with recorded expenses.2

Full scope: ZohoBooks.expenses.CREATE.

Acts onexpense
Permission (capability)expenses.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.expenses.READ.

Acts onexpense
Permission (capability)expenses.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Customer payments

Methods for recording and managing payments received from customers.3

Full scope: ZohoBooks.customerpayments.CREATE. Applies the payment against one or more invoices.

Acts oncustomerpayment
Permission (capability)customerpayments.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.customerpayments.READ.

Acts oncustomerpayment
Permission (capability)customerpayments.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.customerpayments.DELETE. Removes the payment and unapplies it from invoices.

Acts oncustomerpayment
Permission (capability)customerpayments.DELETE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Items

Methods for working with the products and services catalog.2

Items use the settings scope. Full scope: ZohoBooks.settings.CREATE.

Acts onitem
Permission (capability)settings.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Items use the settings scope. Full scope: ZohoBooks.settings.READ.

Acts onitem
Permission (capability)settings.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Banking & accounts

Methods for working with bank accounts and the chart of accounts.4

Full scope: ZohoBooks.banking.READ.

Acts onbankaccount
Permission (capability)banking.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Full scope: ZohoBooks.banking.CREATE.

Acts onbankaccount
Permission (capability)banking.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Chart of accounts uses the accountants scope. Full scope: ZohoBooks.accountants.READ.

Acts onchartofaccount
Permission (capability)accountants.READ
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Chart of accounts uses the accountants scope. Full scope: ZohoBooks.accountants.CREATE.

Acts onchartofaccount
Permission (capability)accountants.CREATE
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Zoho Books can notify an app when something happens in an organization, like an invoice being created or a payment recorded. Notifications are set up as a workflow rule with a webhook action, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Zoho Books limits how often an app can call, by a per-minute rate measured per organization and by a separate daily call budget that depends on the plan.

Request rate

Zoho Books meters calls per organization, not by a per-method cost. It returns HTTP 429 if more than 100 requests arrive in a minute for one organization. A separate daily budget depends on the plan, with documented ceilings of 1,000 calls on the Free plan, 2,000 on Standard, 5,000 on Professional, and 10,000 on Premium and higher tiers. A concurrency limit also caps how many calls can run at once for an organization. A 429 carries no Retry-After header, so the caller supplies its own backoff.

Pagination

A list endpoint is page-based. The page parameter selects the page and per_page sets how many records come back, which defaults to 200. The response includes a page_context node describing the current page and whether more pages remain.

Request size

A list endpoint returns up to 200 records per page by default through per_page. Every call must include the organization_id query parameter to scope it to one business entity.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400code (in body)The request was malformed or a parameter was invalid. The body carries a numeric code and a message describing the problem.Read the message, fix the parameters, and resend. The request is not retryable as-is.
401UnauthorizedAuthentication failed: the OAuth access token is missing, expired, or invalid.Refresh the access token using the refresh token, then retry. Confirm the token carries the scope the call needs.
4041002The requested resource does not exist, for example an invoice id that is not found in this organization.Verify the id and the organization_id, and confirm the record belongs to that organization.
405Method Not AllowedThe HTTP method is not supported for this endpoint.Use the documented method for the endpoint (for example PUT to update, not POST).
429Rate limit exceededThe per-minute or per-day call limit for the organization was exceeded. No Retry-After header is returned.Back off and retry with the integration's own backoff logic, and smooth the request rate.
5001000An internal error occurred on Zoho's side.Retry after a short delay, and contact Zoho support if it persists.
Versioning & freshness

Version history.

Zoho Books runs a single dated API version in its path, v3, and ships changes through its product release notes rather than minting new version numbers.

Version history

What changed, and when

Latest versionv3
v3Current version
Current API version (v3)

Zoho Books serves its API under a single dated path segment, v3, and ships changes through product release notes rather than minting new version numbers. New modules and fields are added in place. Recent product updates have introduced a Developer Space with an API Usage dashboard for managing API calls and connections.

What changed
  • v3 is the current and only supported major version of the Zoho Books API.
  • A first-party Model Context Protocol service exposes Zoho Books tools to AI agents.
  • Developer Space adds an API Usage dashboard for managing API calls and third-party connections.
2026-01-13Feature update
Recent product updates (v3, non-breaking)

Zoho Books keeps the v3 API stable and ships dated product changes through its What's New page instead of new version numbers. These updates add or adjust behavior within v3 without breaking existing calls.

What changed
  • Credit notes can now be associated with an invoice already marked as Sent (13 Jan 2026).
  • An Audit Trail was added for Item Preferences, recording exact changes to those settings (31 Dec 2025).
  • First-party Model Context Protocol support brought Zoho Books tools to AI agents.

Build against v3 and track changes through the release notes.

Zoho Books What's New ↗
Questions

Zoho Books API, answered.

How does authentication work?+
Zoho Books uses OAuth 2.0. An app registered in the Zoho Developer Console runs the authorization-code flow to get an access token and a refresh token. The access token is sent as the Authorization: Zoho-oauthtoken header and expires after one hour, at which point the refresh token is exchanged for a new one. The refresh token stays valid until it is revoked.
What are the OAuth scopes?+
Scopes follow the pattern ZohoBooks.., for example ZohoBooks.invoices.READ, ZohoBooks.contacts.CREATE, or ZohoBooks.estimates.ALL, where ALL covers create, read, update, and delete for that module. ZohoBooks.fullaccess.all grants everything. The items module uses the settings scope and the chart of accounts uses the accountants scope rather than scopes named after themselves.
Why does every call need an organization_id?+
Zoho Books is multi-organization: one login can hold several businesses. The organization_id query parameter names which one a call acts on, so the same token reaches different organizations depending on the id passed. The id is fetched from the GET /organizations endpoint or found in the Manage Organizations admin console.
What are the rate limits?+
Zoho Books returns HTTP 429 if an organization exceeds 100 requests in a minute. A separate daily limit depends on the plan, from 1,000 calls on the Free plan up to 10,000 on higher tiers, and a concurrency limit caps simultaneous calls. The 429 response does not include a Retry-After header, so a caller implements its own backoff.
Which data center should I call?+
An organization is hosted in one region, and the API must be called on that region's host: www.zohoapis.com for the US, www.zohoapis.eu for Europe, www.zohoapis.in for India, plus .com.au, .jp, .ca, .com.cn, and .sa. The access token must come from the matching Zoho Accounts domain for that region, for example accounts.zoho.eu for the EU.
Does Zoho Books have an MCP server for AI agents?+
Yes. Zoho runs a first-party Model Context Protocol service, managed at mcp.zoho.com, that exposes Zoho Books tools such as creating and sending invoices, recording expenses, adding customers, and reconciling transactions. An admin enables it and chooses which tools and data an agent can reach, and Zoho Books is also available as a default connector in Claude.
How do I receive events from Zoho Books?+
Zoho Books does not publish a fixed list of webhook events. An admin sets up a workflow rule, defines the condition that should fire it, and attaches a webhook action that sends an HTTP or HTTPS request to a configured URL. This delivers a notification when the chosen activity happens, so an integration avoids polling.
Related

More finance API guides for agents

What is Bollard AI?

Control what every AI agent can do in Zoho Books.

Bollard AI sits between a team's AI agents and Zoho Books. Grant each agent exactly the access it needs, read or write, module by module, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Zoho Books token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Zoho Books
Bookkeeping Agent
View invoices ResourceOffReadFull use
Delete records ActionOffReadFull use
Contacts ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in Zoho Books