# Zoho Books

## Links

- Product page URL: https://www.agentpmt.com/marketplace/zoho-books
- Product markdown URL: https://www.agentpmt.com/marketplace/zoho-books?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/zoho-books?format=agent-json

## Overview

- Product ID: 69728b7b225b17b86aa9441c
- Vendor: Apoth3osis
- Type: function
- Unit type: request
- Price: 500 credits
- Categories: Project Management, Automation, Sales, Finance & Accounting, Team Collaboration & Workspaces, Task & Workflow Automation, Time Tracking & Resource Planning
- Generated at: 2026-04-15T18:28:03.484Z

### Page Description

Access Zoho Books with OAuth to list organizations and manage core accounting resources such as chart of accounts, journal entries, contacts, items, invoices, estimates, credit notes, bills, expenses, payments, projects, tasks, and time entries. Includes explicit invoice status and bank reconciliation actions with permission gating and supports organization-scoped queries.

### Agent Description

Zoho Books: manage chart of accounts, journal entries, contacts, invoices, bills, expenses, payments, projects, time entries. Permission-gated.

## Details Tab

### Details

Access Zoho Books with OAuth to list organizations and manage core accounting resources such as chart of accounts, journal entries, contacts, items, invoices, estimates, credit notes, bills, expenses, payments, projects, tasks, and time entries. Includes explicit invoice status and bank reconciliation actions with permission gating and supports organization-scoped queries.

### Actions

- `list_organizations` (5 credits): Retrieve all Zoho Books organizations associated with your account. Use this first to obtain your organization_id.
- `list_records` (5 credits): List records for a given resource type with pagination support. Defaults to 25 records per page.
- `get_record` (5 credits): Retrieve a single record by its ID.
- `create_record` (5 credits): Create a new record for a given resource type. Requires 'add' permission. The bankstatements resource only supports this action (used to import statements).
- `update_record` (5 credits): Update an existing record. Requires 'edit' permission.
- `delete_record` (5 credits): Delete a record. Requires 'delete' permission.
- `invoice_mark_sent` (5 credits): Mark an invoice as sent. Requires 'edit' permission.
- `invoice_mark_void` (5 credits): Mark an invoice as void. Requires 'edit' permission.
- `invoice_mark_draft` (5 credits): Revert an invoice to draft status. Requires 'edit' permission.
- `invoice_email` (5 credits): Send an invoice by email. Requires 'edit' permission. Payload must include recipient email addresses, subject, and body.
- `bank_get_matching_transactions` (5 credits): Find existing transactions that could match an uncategorized bank transaction.
- `bank_match_transaction` (5 credits): Match an uncategorized bank transaction to one or more existing transactions. Requires 'edit' permission.
- `bank_unmatch_transaction` (5 credits): Remove the match from a previously matched bank transaction. Requires 'edit' permission.
- `describe_action` (5 credits): Get the detailed parameter schema for any action. Useful for discovering required and optional fields.

### Use Cases

List organizations, List chart of accounts, Create journal entries, Import bank statements, Match bank transactions, Sync contacts, Create invoices, Update invoice status, Email invoices, Track expenses

### Workflows Using This Tool

#### Bank Statement OCR and Account Reconciliation

Automates bank account reconciliation in Zoho Books. Accepts bank statement files (PDF, images, scans) from the user, uploads them to File Management, runs OCR to extract transaction data, then cross-references extracted transactions against unmatched bank feed transactions in Zoho Books. For each unmatched transaction, finds potential matching records (expenses, invoices, payments) and reconciles them. Generates a reconciliation summary and notifies the user when complete.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/bank-statement-ocr-and-account-reconciliation
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/bank-statement-ocr-and-account-reconciliation?format=agent-md
- Published: 2026-02-15T06:20:15.698Z

#### Receipt OCR to Zoho Books Expense Pipeline

Automates the process of collecting receipt images, uploading them to File Management, running OCR to extract expense data, and adding them as categorized expenses in Zoho Books. Receipts paid with a credit card ending in 9018 are mapped to the Chase Example CC payment account, and receipts paid with a credit card ending in 0999 are mapped to the Bank Of America Example CC payment account. Receipts are processed through OCR 10 at a time. A human is notified when all receipts have been uploaded to the bookkeeping software.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/receipt-ocr-to-zoho-books-expense-pipeline
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/receipt-ocr-to-zoho-books-expense-pipeline?format=agent-md
- Published: 2026-02-15T05:57:13.515Z

### Related Content

No related content is currently linked to this product.

## Advanced Tab

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp?platform=claude#videos
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp?platform=chatgpt#videos
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp?platform=cursor#videos
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp?platform=windsurf#videos

STDIO connector for Claude Code, Codex, Cursor, Zed, and other LLMs that require STDIO or custom connections. This lightweight connector routes requests to `https://api.agentpmt.com/mcp`. All tool execution happens in the cloud and the server cannot edit any files on your computer.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "69728b7b225b17b86aa9441c",
    "parameters": {
      "action": "list_organizations"
    }
  }'
```

### Autonomous Agents

Do not use the abbreviated instructions in this product markdown for wallet-based invocation. Retrieve the full External Agent API markdown document instead.

- External Agent API page URL: https://www.agentpmt.com/external-agent-api
- External Agent API markdown URL: https://www.agentpmt.com/external-agent-api?format=agent-md

### Schema

#### Credentials

These runtime credentials should be provided under `parameters._credentials` when required.

- Zoho OAuth (`zoho_oauth`, oauth_token, required)
  Connection ID: 6987b6f3da401d1af03b6f61
- CRUD permission scopes (`permissions`, other, required)
  Connection ID: 697170063617ba439ceedf25
- Zoho Organization ID (`organization_id`, other, required)
  Connection ID: 69c157e9017a39690997dabd

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "list_organizations": {
      "description": "Retrieve all Zoho Books organizations associated with your account. Use this first to obtain your organization_id.",
      "properties": {
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "list_records": {
      "description": "List records for a given resource type with pagination support. Defaults to 25 records per page.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Zoho Books resource name",
          "required": true,
          "enum": [
            "contacts",
            "items",
            "invoices",
            "estimates",
            "creditnotes",
            "chartofaccounts",
            "journals",
            "bankaccounts",
            "banktransactions",
            "bankstatements",
            "bills",
            "expenses",
            "vendorcredits",
            "customerpayments",
            "vendorpayments",
            "projects",
            "tasks",
            "time_entries"
          ]
        },
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "project_id": {
          "type": "string",
          "description": "Project ID (required when resource is 'tasks')",
          "required": false
        },
        "query_params": {
          "type": "object",
          "description": "Query parameters for filtering and pagination (e.g., page, per_page, status, date ranges)",
          "required": false
        }
      }
    },
    "get_record": {
      "description": "Retrieve a single record by its ID.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Zoho Books resource name",
          "required": true,
          "enum": [
            "contacts",
            "items",
            "invoices",
            "estimates",
            "creditnotes",
            "chartofaccounts",
            "journals",
            "bankaccounts",
            "banktransactions",
            "bankstatements",
            "bills",
            "expenses",
            "vendorcredits",
            "customerpayments",
            "vendorpayments",
            "projects",
            "tasks",
            "time_entries"
          ]
        },
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "The record ID to fetch",
          "required": true
        },
        "project_id": {
          "type": "string",
          "description": "Project ID (required when resource is 'tasks')",
          "required": false
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "create_record": {
      "description": "Create a new record for a given resource type. Requires 'add' permission. The bankstatements resource only supports this action (used to import statements).",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Zoho Books resource name",
          "required": true,
          "enum": [
            "contacts",
            "items",
            "invoices",
            "estimates",
            "creditnotes",
            "chartofaccounts",
            "journals",
            "bankaccounts",
            "banktransactions",
            "bankstatements",
            "bills",
            "expenses",
            "vendorcredits",
            "customerpayments",
            "vendorpayments",
            "projects",
            "tasks",
            "time_entries"
          ]
        },
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "payload": {
          "type": "object",
          "description": "Record data to create",
          "required": true
        },
        "project_id": {
          "type": "string",
          "description": "Project ID (required when resource is 'tasks')",
          "required": false
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "update_record": {
      "description": "Update an existing record. Requires 'edit' permission.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Zoho Books resource name",
          "required": true,
          "enum": [
            "contacts",
            "items",
            "invoices",
            "estimates",
            "creditnotes",
            "chartofaccounts",
            "journals",
            "bankaccounts",
            "banktransactions",
            "bills",
            "expenses",
            "vendorcredits",
            "customerpayments",
            "vendorpayments",
            "projects",
            "tasks",
            "time_entries"
          ]
        },
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Record ID to update",
          "required": true
        },
        "payload": {
          "type": "object",
          "description": "Fields to update",
          "required": true
        },
        "project_id": {
          "type": "string",
          "description": "Project ID (required when resource is 'tasks')",
          "required": false
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "delete_record": {
      "description": "Delete a record. Requires 'delete' permission.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Zoho Books resource name",
          "required": true,
          "enum": [
            "contacts",
            "items",
            "invoices",
            "estimates",
            "creditnotes",
            "chartofaccounts",
            "journals",
            "bankaccounts",
            "banktransactions",
            "bills",
            "expenses",
            "vendorcredits",
            "customerpayments",
            "vendorpayments",
            "projects",
            "tasks",
            "time_entries"
          ]
        },
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Record ID to delete",
          "required": true
        },
        "project_id": {
          "type": "string",
          "description": "Project ID (required when resource is 'tasks')",
          "required": false
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "invoice_mark_sent": {
      "description": "Mark an invoice as sent. Requires 'edit' permission.",
      "properties": {
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Invoice ID to mark as sent",
          "required": true
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "invoice_mark_void": {
      "description": "Mark an invoice as void. Requires 'edit' permission.",
      "properties": {
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Invoice ID to mark as void",
          "required": true
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "invoice_mark_draft": {
      "description": "Revert an invoice to draft status. Requires 'edit' permission.",
      "properties": {
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Invoice ID to revert to draft",
          "required": true
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "invoice_email": {
      "description": "Send an invoice by email. Requires 'edit' permission. Payload must include recipient email addresses, subject, and body.",
      "properties": {
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Invoice ID to email",
          "required": true
        },
        "payload": {
          "type": "object",
          "description": "Email details: to_mail_ids (array), subject (string), body (string)",
          "required": true
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "bank_get_matching_transactions": {
      "description": "Find existing transactions that could match an uncategorized bank transaction.",
      "properties": {
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Uncategorized bank transaction ID",
          "required": true
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "bank_match_transaction": {
      "description": "Match an uncategorized bank transaction to one or more existing transactions. Requires 'edit' permission.",
      "properties": {
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Uncategorized bank transaction ID to match",
          "required": true
        },
        "payload": {
          "type": "object",
          "description": "Match details: transactions_to_be_matched array with transaction_id and transaction_type",
          "required": false
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "bank_unmatch_transaction": {
      "description": "Remove the match from a previously matched bank transaction. Requires 'edit' permission.",
      "properties": {
        "organization_id": {
          "type": "string",
          "description": "Zoho Books organization ID",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Bank transaction ID to unmatch",
          "required": true
        },
        "query_params": {
          "type": "object",
          "description": "Additional query parameters",
          "required": false
        }
      }
    },
    "describe_action": {
      "description": "Get the detailed parameter schema for any action. Useful for discovering required and optional fields.",
      "properties": {
        "action_to_describe": {
          "type": "string",
          "description": "The action name to describe. Omit to get schemas for all actions.",
          "required": false,
          "enum": [
            "list_organizations",
            "list_records",
            "get_record",
            "create_record",
            "update_record",
            "delete_record",
            "invoice_mark_sent",
            "invoice_mark_void",
            "invoice_mark_draft",
            "invoice_email",
            "bank_get_matching_transactions",
            "bank_match_transaction",
            "bank_unmatch_transaction"
          ]
        }
      }
    }
  },
  "properties": {
    "action": {
      "type": "string",
      "description": "Action to perform",
      "required": true,
      "enum": [
        "get_instructions",
        "describe_action",
        "list_organizations",
        "list_records",
        "get_record",
        "create_record",
        "update_record",
        "delete_record",
        "invoice_mark_sent",
        "invoice_mark_void",
        "invoice_mark_draft",
        "invoice_email",
        "bank_get_matching_transactions",
        "bank_match_transaction",
        "bank_unmatch_transaction"
      ]
    },
    "action_to_describe": {
      "type": "string",
      "description": "When action is describe_action, return schema for this action",
      "required": false,
      "enum": [
        "list_organizations",
        "list_records",
        "get_record",
        "create_record",
        "update_record",
        "delete_record",
        "invoice_mark_sent",
        "invoice_mark_void",
        "invoice_mark_draft",
        "invoice_email",
        "bank_get_matching_transactions",
        "bank_match_transaction",
        "bank_unmatch_transaction"
      ]
    },
    "payload": {
      "type": "object",
      "description": "Request body for create/update/email actions",
      "required": false
    },
    "project_id": {
      "type": "string",
      "description": "Project ID required for tasks resource",
      "required": false
    },
    "query_params": {
      "type": "object",
      "description": "Query parameters for list/get actions",
      "required": false
    },
    "record_id": {
      "type": "string",
      "description": "Record ID for single-record operations",
      "required": false
    },
    "resource": {
      "type": "string",
      "description": "Zoho Books resource name",
      "required": false,
      "enum": [
        "contacts",
        "items",
        "invoices",
        "estimates",
        "creditnotes",
        "chartofaccounts",
        "journals",
        "bankaccounts",
        "banktransactions",
        "bankstatements",
        "bills",
        "expenses",
        "vendorcredits",
        "customerpayments",
        "vendorpayments",
        "projects",
        "tasks",
        "time_entries"
      ]
    }
  }
}
```

### Usage Instructions

# Zoho Books

## Actions

Use `describe_action` with `action_to_describe` to get the full schema for any action.

## Supported Resources

contacts, items, invoices, estimates, creditnotes, chartofaccounts, journals, bankaccounts, banktransactions, bankstatements, bills, expenses, vendorcredits, customerpayments, vendorpayments, projects, tasks, time_entries

**Note:** `tasks` requires `project_id`. `bankstatements` only supports `create_record`.

## Pagination

List responses default to **25 records per page**. Use `per_page` (max 200) and `page` in `query_params` to control pagination. Check the `page_context` object in the response for `has_more_page`.

## Tool Call Format

### List Organizations
```json
{
  "action": "list_organizations"
}
```

### List Records
```json
{
  "action": "list_records",
  "resource": "invoices",
  "organization_id": "YOUR_ORG_ID",
  "query_params": {
    "page": 1,
    "per_page": 25
  }
}
```

### Get Record
```json
{
  "action": "get_record",
  "resource": "contacts",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049"
}
```

### Create Record
```json
{
  "action": "create_record",
  "resource": "contacts",
  "organization_id": "YOUR_ORG_ID",
  "payload": {
    "contact_name": "Bowman & Co"
  }
}
```

### Update Record
```json
{
  "action": "update_record",
  "resource": "contacts",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049",
  "payload": {
    "contact_name": "Bowman & Co (Updated)"
  }
}
```

### Delete Record
```json
{
  "action": "delete_record",
  "resource": "invoices",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049"
}
```

### Invoice - Mark as Sent
```json
{
  "action": "invoice_mark_sent",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049"
}
```

### Invoice - Mark as Void
```json
{
  "action": "invoice_mark_void",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049"
}
```

### Invoice - Mark as Draft
```json
{
  "action": "invoice_mark_draft",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049"
}
```

### Invoice - Send Email
```json
{
  "action": "invoice_email",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049",
  "payload": {
    "to_mail_ids": ["customer@example.com"],
    "subject": "Invoice from Your Company",
    "body": "Please find the invoice attached."
  }
}
```

### Bank - Get Matching Transactions
```json
{
  "action": "bank_get_matching_transactions",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049"
}
```

### Bank - Match Transaction
```json
{
  "action": "bank_match_transaction",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049",
  "payload": {
    "transactions_to_be_matched": [
      {"transaction_id": "460000000026050", "transaction_type": "invoice"}
    ]
  }
}
```

### Bank - Unmatch Transaction
```json
{
  "action": "bank_unmatch_transaction",
  "organization_id": "YOUR_ORG_ID",
  "record_id": "460000000026049"
}
```

### Describe Action
```json
{
  "action": "describe_action",
  "action_to_describe": "list_records"
}
```

### Tasks (requires project_id)
```json
{
  "action": "list_records",
  "resource": "tasks",
  "organization_id": "YOUR_ORG_ID",
  "project_id": "460000000030001"
}
```

## Permissions

Write actions require the corresponding permission in the `permissions` array:
- `create_record` requires `add`
- `update_record`, `invoice_mark_sent`, `invoice_mark_void`, `invoice_mark_draft`, `invoice_email`, `bank_match_transaction`, `bank_unmatch_transaction` require `edit`
- `delete_record` requires `delete`
- Combine exact scopes as needed, such as `[`read`, `edit`]` for read plus update access.
- If `permissions` is omitted, Zoho Books defaults to read-only access.

### About The Developer

- Vendor name: Apoth3osis
- Website: apoth3osis.io

We build tools that enable AI agents to excel in the mathematical realm.

Our small team develops experimental and unique solutions in the AI arena, with a strong focus on modular computing for agentic applications and custom model deployment. We have handled projects for a variety of applications across many sectors, from algorithmic trading and financial analysis, to molecular simulations and predictions, to habitat and biodiversity monitoring and wildlife conservation.

### Frequently Asked Questions

No linked FAQs are currently available.

### Dependencies

This product has no public dependency products.