Complete Zoho OAuth 2.0 authorization to obtain an access token; Zoho Books also requires the organization ID (organization_id) which can be retrieved from GET https://www.zohoapis.com/books/v3/organizations.
POST to https://www.zohoapis.com/books/v3/invoices?organization_id=ORG_ID with Authorization: Zoho-oauthtoken YOUR_TOKEN and Content-Type: application/json.
Construct the request body with customer_id, invoice_date, line_items array (each with item_id or name, quantity, and rate), and optionally payment_terms.
The response returns the created invoice object including invoice_id and status; a newly created invoice is in 'draft' status by default.
To send the invoice to the customer, POST to https://www.zohoapis.com/books/v3/invoices/{invoice_id}/status/sent.
To mark an invoice as void or to delete it, use the corresponding status or DELETE endpoint with the invoice_id.
Known gotchas
Zoho access tokens expire after one hour; implement refresh token logic using the Zoho OAuth token refresh endpoint before each session.
The organization_id query parameter is required on every API call; omitting it returns an error even if the account has only one organization.
Item tax associations must match taxes configured within the organization; referencing a tax ID from a different organization or an inactive tax returns a validation error.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp