# Zoho Invoice

> Free invoicing. Create quotes and invoices, email them, send payment reminders, record payments and expenses, and manage customers.

App · Accounting & Finance · 20 actions. Web page: https://docs.lodol.com/docs/integrations/zoho-invoice

## Actions

### Create a contact

Create a customer, with a primary contact person to email invoices to.

**Inputs**

- Display name (`contact_name`, text, required): The customer's name as shown on invoices.
- Company name (`company_name`, text): Optional.
- First name (`first_name`, text): Optional. The contact person's first name.
- Last name (`last_name`, text): Optional. The contact person's last name.
- Email (`email`, text): Optional. The contact person's email, where invoices are sent.
- Phone (`phone`, text): Optional. The contact person's phone.
- Website (`website`, text): Optional.
- Street address (`address`, text): Optional. The billing street address.
- City (`city`, text): Optional.
- State/region (`state`, text): Optional.
- Postal code (`zip_code`, text): Optional.
- Country (`country`, text): Optional.
- Payment terms (days) (`payment_terms`, number): Optional. How many days the customer has to pay, such as 15. At least 0.
- Language (`language_code`, text): Optional. The language of the emails and documents the customer receives. One of: `en` (English), `de` (German), `es` (Spanish), `fr` (French), `it` (Italian), `ja` (Japanese), `nl` (Dutch), `pt` (Portuguese), `sv` (Swedish), `zh` (Chinese).
- Notes (`notes`, text): Optional. Internal notes about the customer.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice contact.

- `billing_address` (object): A postal address.
- `company_name` (text): The company name.
- `contact_id` (text): The contact's id.
- `contact_name` (text): The contact's display name.
- `contact_persons` (list): The contact persons.
- `contact_type` (text): customer.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The currency, e.g. USD.
- `currency_id` (text): The currency's id.
- `currency_symbol` (text): The currency symbol.
- `custom_fields` (list): Custom field values.
- `email` (text): The primary contact person's email.
- `facebook` (text): Facebook profile.
- `first_name` (text): The primary contact person's first name.
- `has_transaction` (true/false): Whether the contact has any transactions.
- `is_taxable` (true/false): Whether the contact is taxable.
- `last_modified_time` (text): When it was last changed.
- `last_name` (text): The primary contact person's last name.
- `mobile` (text): The primary contact person's mobile.
- `notes` (text): Notes.
- `outstanding_receivable_amount` (number): What the contact owes.
- `payment_reminder_enabled` (true/false): Whether payment reminders are on.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' label, e.g. Net 15.
- `phone` (text): The primary contact person's phone.
- `primary_contact_id` (text): The primary contact person's id.
- `shipping_address` (object): A postal address.
- `status` (text): active or inactive.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `twitter` (text): Twitter handle.
- `unused_credits_receivable_amount` (number): Unused credits.
- `website` (text): The website.

**Example output**

```json
{
  "company_name": "Bowman & Co",
  "contact_id": "2000000002001",
  "contact_name": "Bowman & Co",
  "contact_type": "customer",
  "created_time": "2026-09-01T10:15:00-0700",
  "currency_code": "USD",
  "email": "ann@bowman.example",
  "first_name": "Ann",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "last_name": "Bowman",
  "outstanding_receivable_amount": 0,
  "payment_terms": 15,
  "payment_terms_label": "Net 15",
  "status": "active"
}
```

### Create a quote

Create a draft quote (estimate) for a customer. Mark it sent, then accepted, as the customer responds.

**Inputs**

- Customer ID (`customer_id`, text, required): The customer's contact id, from 'List contacts' or 'Create a contact'.
- Item ID (`item_id`, text): The item billed on the line, from 'List items' or 'Create an item'. Leave blank when giving several lines below.
- Quantity (`quantity`, number): Optional. How many. Defaults to 1.
- Unit price (`rate`, number): The price of one. Required with the item above; leave blank when giving several lines below. At least 0.
- Line description (`description`, text): Optional. Text shown on the line.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Line items (advanced) (`line_items`, list): Optional. A list of lines for a document with several, e.g. [{"item_id": "2000000007037", "quantity": 2, "rate": 150}]. Each line takes item_id, name, description, quantity, rate, tax_id, discount; item_id and rate are required. When given it replaces the single-line fields above.
- Date (`date`, date): Optional. The quote date. Defaults to today.
- Expiry date (`expiry_date`, date): Optional. When the quote expires.
- Reference number (`reference_number`, text): Optional. Your own reference, such as a purchase order number.
- Discount (`discount`, text): Optional. A discount on the whole document: an amount such as 5, or a percentage such as 10%.
- Notes (`notes`, text): Optional. Notes shown to the customer on the document.
- Terms & conditions (`terms`, text): Optional. Terms shown on the document.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice quote (estimate).

- `billing_address` (object): A postal address.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The currency, e.g. USD.
- `currency_id` (text): The currency's id.
- `custom_fields` (list): Custom field values.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The quote date, YYYY-MM-DD.
- `discount` (number): The discount.
- `discount_type` (text): entity_level or item_level.
- `estimate_id` (text): The quote's id.
- `estimate_number` (text): The quote number, e.g. QT-000007.
- `exchange_rate` (number): The exchange rate.
- `expiry_date` (text): When the quote expires.
- `is_inclusive_tax` (true/false): Whether rates include tax.
- `last_modified_time` (text): When it was last changed.
- `line_items` (list): The quote's lines.
- `notes` (text): Notes.
- `reference_number` (text): Your reference.
- `salesperson_id` (text): The salesperson's id.
- `salesperson_name` (text): The salesperson's name.
- `shipping_address` (object): A postal address.
- `status` (text): draft, sent, accepted, declined, invoiced or expired.
- `sub_total` (number): The total before tax.
- `tax_total` (number): The tax.
- `taxes` (list): The taxes.
- `terms` (text): Terms.
- `total` (number): The quote total.

**Example output**

```json
{
  "currency_code": "USD",
  "customer_id": "2000000002001",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "estimate_id": "2000000007101",
  "estimate_number": "QT-000007",
  "expiry_date": "2026-10-30",
  "status": "draft",
  "total": 240
}
```

### Create an invoice

Create a draft invoice for a customer. Email it or mark it sent afterwards.

**Inputs**

- Customer ID (`customer_id`, text, required): The customer's contact id, from 'List contacts' or 'Create a contact'.
- Item ID (`item_id`, text): The item billed on the line, from 'List items' or 'Create an item'. Leave blank when giving several lines below.
- Quantity (`quantity`, number): Optional. How many. Defaults to 1.
- Unit price (`rate`, number): The price of one. Required with the item above; leave blank when giving several lines below. At least 0.
- Line description (`description`, text): Optional. Text shown on the line.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Line items (advanced) (`line_items`, list): Optional. A list of lines for a document with several, e.g. [{"item_id": "2000000007037", "quantity": 2, "rate": 150}]. Each line takes item_id, name, description, quantity, rate, tax_id, discount; item_id and rate are required. When given it replaces the single-line fields above.
- Invoice date (`date`, date): Optional. Defaults to today.
- Due date (`due_date`, date): Optional. When payment is due. Leave blank to use the payment terms.
- Payment terms (days) (`payment_terms`, number): Optional. How many days the customer has to pay, such as 15. At least 0.
- Reference number (`reference_number`, text): Optional. Your own reference, such as a purchase order number.
- Discount (`discount`, text): Optional. A discount on the whole document: an amount such as 5, or a percentage such as 10%.
- Notes (`notes`, text): Optional. Notes shown to the customer on the document.
- Terms & conditions (`terms`, text): Optional. Terms shown on the document.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice invoice.

- `adjustment` (number): The adjustment.
- `adjustment_description` (text): What the adjustment is for.
- `allow_partial_payments` (true/false): Whether partial payments are allowed.
- `balance` (number): What is still owed.
- `billing_address` (object): A postal address.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `credits_applied` (number): Credits applied.
- `currency_code` (text): The currency, e.g. USD.
- `currency_id` (text): The currency's id.
- `custom_fields` (list): Custom field values.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The invoice date, YYYY-MM-DD.
- `discount` (number): The discount.
- `discount_type` (text): entity_level or item_level.
- `due_date` (text): The due date, YYYY-MM-DD.
- `exchange_rate` (number): The exchange rate.
- `invoice_id` (text): The invoice's id.
- `invoice_number` (text): The invoice number, e.g. INV-000042.
- `invoice_url` (text): The customer's link to view and pay the invoice.
- `is_discount_before_tax` (true/false): Whether the discount applies before tax.
- `is_emailed` (true/false): Whether it has been emailed.
- `is_inclusive_tax` (true/false): Whether rates include tax.
- `is_viewed_by_client` (true/false): Whether the customer has viewed it.
- `last_modified_time` (text): When it was last changed.
- `last_payment_date` (text): When the last payment was made.
- `last_reminder_sent_date` (text): When the last reminder was sent.
- `line_items` (list): The invoice's lines.
- `notes` (text): Notes.
- `payment_expected_date` (text): When payment is expected.
- `payment_made` (number): How much has been paid.
- `payment_reminder_enabled` (true/false): Whether payment reminders are on.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' label.
- `recurring_invoice_id` (text): The recurring invoice it came from.
- `reference_number` (text): Your reference.
- `reminders_sent` (number): How many payment reminders were sent.
- `salesperson_id` (text): The salesperson's id.
- `salesperson_name` (text): The salesperson's name.
- `shipping_address` (object): A postal address.
- `shipping_charge` (number): The shipping charge.
- `status` (text): draft, sent, viewed, overdue, partially_paid, paid or void.
- `sub_total` (number): The total before tax.
- `tax_total` (number): The tax.
- `taxes` (list): The taxes.
- `template_id` (text): The PDF template's id.
- `template_name` (text): The PDF template's name.
- `terms` (text): Terms.
- `total` (number): The invoice total.
- `write_off_amount` (number): The amount written off.

**Example output**

```json
{
  "balance": 240,
  "currency_code": "USD",
  "customer_id": "2000000002001",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "due_date": "2026-10-15",
  "invoice_id": "2000000007037",
  "invoice_number": "INV-000042",
  "invoice_url": "https://zohosecurepay.com/invoice/bowman/secure?CInvoiceID=1",
  "status": "draft",
  "total": 240
}
```

### Create an item

Create a product or service to bill for.

**Inputs**

- Name (`name`, text, required): The item's name.
- Price (`rate`, number, required): The price of one. At least 0.
- Description (`description`, text): Optional. Shown on quotes and invoices.
- SKU (`sku`, text): Optional. Your product code; must be unique.
- Goods or service (`product_type`, text): Optional. One of: `goods`, `service`.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice item.

- `custom_fields` (list): Custom field values.
- `description` (text): The description.
- `item_id` (text): The item's id.
- `name` (text): The item's name.
- `product_type` (text): goods or service.
- `rate` (number): The price of one.
- `sku` (text): The stock keeping unit.
- `status` (text): active or inactive.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `tax_type` (text): The tax type.
- `unit` (text): The unit, e.g. hrs.

**Example output**

```json
{
  "description": "One hour of design work",
  "item_id": "2000000002011",
  "name": "Design hour",
  "product_type": "service",
  "rate": 120,
  "sku": "DES-HR",
  "status": "active",
  "unit": "hrs"
}
```

### Email an invoice

Email an invoice to the customer from Zoho Invoice, using your invoice email template unless you write your own.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice', or its address in Zoho Invoice.
- To (`to_mail_ids`, text, required): Who to email: one or more addresses, separated by commas.
- CC (`cc_mail_ids`, text): Optional. Addresses to copy, separated by commas.
- Subject (`subject`, text): Optional. Leave blank for Zoho's template subject.
- Body (`body`, text): Optional. The message. Leave blank for Zoho's template message.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: An email sent about an invoice.

- `cc_mail_ids` (list): Who was copied.
- `invoice_id` (text): The invoice's id.
- `message` (text): Zoho's confirmation message.
- `subject` (text): The subject sent.
- `to_mail_ids` (list): Who it was sent to.

**Example output**

```json
{
  "cc_mail_ids": [],
  "invoice_id": "2000000007037",
  "message": "Your invoice has been sent.",
  "subject": "Invoice - INV-000042 from Bowman & Co",
  "to_mail_ids": [
    "ann@bowman.example"
  ]
}
```

### Get a contact

Get a customer's details, addresses, contact persons and what they owe.

**Inputs**

- Contact ID (`contact_id`, text, required): The contact's id, from 'List contacts' or 'Create a contact', or the contact's address in Zoho Invoice.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice contact.

- `billing_address` (object): A postal address.
- `company_name` (text): The company name.
- `contact_id` (text): The contact's id.
- `contact_name` (text): The contact's display name.
- `contact_persons` (list): The contact persons.
- `contact_type` (text): customer.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The currency, e.g. USD.
- `currency_id` (text): The currency's id.
- `currency_symbol` (text): The currency symbol.
- `custom_fields` (list): Custom field values.
- `email` (text): The primary contact person's email.
- `facebook` (text): Facebook profile.
- `first_name` (text): The primary contact person's first name.
- `has_transaction` (true/false): Whether the contact has any transactions.
- `is_taxable` (true/false): Whether the contact is taxable.
- `last_modified_time` (text): When it was last changed.
- `last_name` (text): The primary contact person's last name.
- `mobile` (text): The primary contact person's mobile.
- `notes` (text): Notes.
- `outstanding_receivable_amount` (number): What the contact owes.
- `payment_reminder_enabled` (true/false): Whether payment reminders are on.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' label, e.g. Net 15.
- `phone` (text): The primary contact person's phone.
- `primary_contact_id` (text): The primary contact person's id.
- `shipping_address` (object): A postal address.
- `status` (text): active or inactive.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `twitter` (text): Twitter handle.
- `unused_credits_receivable_amount` (number): Unused credits.
- `website` (text): The website.

**Example output**

```json
{
  "company_name": "Bowman & Co",
  "contact_id": "2000000002001",
  "contact_name": "Bowman & Co",
  "contact_type": "customer",
  "created_time": "2026-09-01T10:15:00-0700",
  "currency_code": "USD",
  "email": "ann@bowman.example",
  "first_name": "Ann",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "last_name": "Bowman",
  "outstanding_receivable_amount": 0,
  "payment_terms": 15,
  "payment_terms_label": "Net 15",
  "status": "active"
}
```

### Get an invoice

Get an invoice with its lines, totals, balance owed and the customer's payment link.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice', or its address in Zoho Invoice.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice invoice.

- `adjustment` (number): The adjustment.
- `adjustment_description` (text): What the adjustment is for.
- `allow_partial_payments` (true/false): Whether partial payments are allowed.
- `balance` (number): What is still owed.
- `billing_address` (object): A postal address.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `credits_applied` (number): Credits applied.
- `currency_code` (text): The currency, e.g. USD.
- `currency_id` (text): The currency's id.
- `custom_fields` (list): Custom field values.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The invoice date, YYYY-MM-DD.
- `discount` (number): The discount.
- `discount_type` (text): entity_level or item_level.
- `due_date` (text): The due date, YYYY-MM-DD.
- `exchange_rate` (number): The exchange rate.
- `invoice_id` (text): The invoice's id.
- `invoice_number` (text): The invoice number, e.g. INV-000042.
- `invoice_url` (text): The customer's link to view and pay the invoice.
- `is_discount_before_tax` (true/false): Whether the discount applies before tax.
- `is_emailed` (true/false): Whether it has been emailed.
- `is_inclusive_tax` (true/false): Whether rates include tax.
- `is_viewed_by_client` (true/false): Whether the customer has viewed it.
- `last_modified_time` (text): When it was last changed.
- `last_payment_date` (text): When the last payment was made.
- `last_reminder_sent_date` (text): When the last reminder was sent.
- `line_items` (list): The invoice's lines.
- `notes` (text): Notes.
- `payment_expected_date` (text): When payment is expected.
- `payment_made` (number): How much has been paid.
- `payment_reminder_enabled` (true/false): Whether payment reminders are on.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' label.
- `recurring_invoice_id` (text): The recurring invoice it came from.
- `reference_number` (text): Your reference.
- `reminders_sent` (number): How many payment reminders were sent.
- `salesperson_id` (text): The salesperson's id.
- `salesperson_name` (text): The salesperson's name.
- `shipping_address` (object): A postal address.
- `shipping_charge` (number): The shipping charge.
- `status` (text): draft, sent, viewed, overdue, partially_paid, paid or void.
- `sub_total` (number): The total before tax.
- `tax_total` (number): The tax.
- `taxes` (list): The taxes.
- `template_id` (text): The PDF template's id.
- `template_name` (text): The PDF template's name.
- `terms` (text): Terms.
- `total` (number): The invoice total.
- `write_off_amount` (number): The amount written off.

**Example output**

```json
{
  "balance": 240,
  "currency_code": "USD",
  "customer_id": "2000000002001",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "due_date": "2026-10-15",
  "invoice_id": "2000000007037",
  "invoice_number": "INV-000042",
  "invoice_url": "https://zohosecurepay.com/invoice/bowman/secure?CInvoiceID=1",
  "status": "draft",
  "total": 240
}
```

### List contacts

List customers, optionally searched, filtered and sorted.

**Inputs**

- Search (`search_text`, text): Optional. Only records matching this text.
- Show (`filter_by`, text): Optional. Which contacts to include. One of: `Status.All` (All), `Status.Active` (Active), `Status.Inactive` (Inactive).
- Sort by (`sort_column`, text): Optional. The field to sort by. One of: `contact_name` (Name), `first_name` (First name), `last_name` (Last name), `email`, `outstanding_receivable_amount` (Amount owed), `created_time` (Created), `last_modified_time` (Last modified).
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**

- `contacts` (list): The contacts.
- `count` (number): How many contacts are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "contacts": [
    {
      "company_name": "Bowman & Co",
      "contact_id": "2000000002001",
      "contact_name": "Bowman & Co",
      "contact_type": "customer",
      "created_time": "2026-09-01T10:15:00-0700",
      "currency_code": "USD",
      "email": "ann@bowman.example",
      "first_name": "Ann",
      "last_modified_time": "2026-09-01T10:15:00-0700",
      "last_name": "Bowman",
      "outstanding_receivable_amount": 0,
      "payment_terms": 15,
      "payment_terms_label": "Net 15",
      "status": "active"
    }
  ],
  "count": 1,
  "has_more_page": false,
  "page": 1,
  "per_page": 200
}
```

### List customer payments

List payments received, optionally by method or date.

**Inputs**

- Search (`search_text`, text): Optional. Only records matching this text.
- Payment method (`filter_by`, text): Optional. Only payments made this way. One of: `PaymentMode.All` (All), `PaymentMode.Check` (Check), `PaymentMode.Cash` (Cash), `PaymentMode.BankTransfer` (Bank transfer), `PaymentMode.Paypal` (PayPal), `PaymentMode.CreditCard` (Credit card), `PaymentMode.GoogleCheckout` (Google Checkout), `PaymentMode.Credit` (Credit), `PaymentMode.Authorizenet` (Authorize.Net), `PaymentMode.BankRemittance` (Bank remittance), and 5 more.
- Payment date (`date`, date): Optional. Only payments made this day.
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many customer payments are on this page.
- `customerpayments` (list): The customer payments.
- `has_more_page` (true/false): Whether another page is available.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "count": 1,
  "customerpayments": [
    {
      "amount": 240,
      "bcy_amount": 240,
      "date": "2026-10-02",
      "invoice_number": "INV-000042",
      "payment_id": "2000000007201",
      "payment_mode": "banktransfer",
      "payment_number": "2"
    }
  ],
  "has_more_page": false,
  "page": 1,
  "per_page": 200
}
```

### List invoices

List invoices, optionally by status (such as overdue or unpaid), customer, date or due date.

**Inputs**

- Status (`status`, text): Optional. Only invoices in this status. One of: `draft`, `sent`, `viewed`, `overdue`, `unpaid`, `partially_paid` (Partially paid), `paid`, `void`.
- Customer ID (`customer_id`, text): Optional. Only this customer's invoices.
- Search (`search_text`, text): Optional. Only records matching this text.
- Invoice date (`date`, date): Optional. Only invoices dated this day.
- Due date (`due_date`, date): Optional. Only invoices due this day.
- Sort by (`sort_column`, text): Optional. The field to sort by. One of: `customer_name` (Customer), `invoice_number` (Invoice number), `date`, `due_date` (Due date), `total`, `balance`, `created_time` (Created).
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many invoices are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `invoices` (list): The invoices.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "count": 1,
  "has_more_page": false,
  "invoices": [
    {
      "balance": 240,
      "currency_code": "USD",
      "customer_id": "2000000002001",
      "customer_name": "Bowman & Co",
      "date": "2026-09-30",
      "due_date": "2026-10-15",
      "invoice_id": "2000000007037",
      "invoice_number": "INV-000042",
      "invoice_url": "https://zohosecurepay.com/invoice/bowman/secure?CInvoiceID=1",
      "status": "draft",
      "total": 240
    }
  ],
  "page": 1,
  "per_page": 200
}
```

### List items

List the products and services you bill for.

**Inputs**

- Search (`search_text`, text): Optional. Only records matching this text.
- Show (`filter_by`, text): Optional. Which items to include. One of: `Status.All` (All), `Status.Active` (Active), `Status.Inactive` (Inactive).
- Sort by (`sort_column`, text): Optional. The field to sort by. One of: `name`, `rate` (Price), `tax_name` (Tax).
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many items are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `items` (list): The items.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "count": 1,
  "has_more_page": false,
  "items": [
    {
      "description": "One hour of design work",
      "item_id": "2000000002011",
      "name": "Design hour",
      "product_type": "service",
      "rate": 120,
      "sku": "DES-HR",
      "status": "active",
      "unit": "hrs"
    }
  ],
  "page": 1,
  "per_page": 200
}
```

### List quotes

List quotes (estimates), optionally for one customer or in one status. The filters apply to the page returned.

**Inputs**

- Customer ID (`customer_id`, text): Optional. Only this customer's quotes.
- Status (`status`, text): Optional. Only quotes in this status. One of: `draft`, `sent`, `accepted`, `declined`, `invoiced`, `expired`.
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many quotes are on this page.
- `estimates` (list): The quotes.
- `has_more_page` (true/false): Whether another page is available.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "count": 1,
  "estimates": [
    {
      "currency_code": "USD",
      "customer_id": "2000000002001",
      "customer_name": "Bowman & Co",
      "date": "2026-09-30",
      "estimate_id": "2000000007101",
      "estimate_number": "QT-000007",
      "expiry_date": "2026-10-30",
      "status": "draft",
      "total": 240
    }
  ],
  "has_more_page": false,
  "page": 1,
  "per_page": 200
}
```

### Mark a quote as accepted

Record that the customer accepted a sent quote. A draft quote must be marked sent first.

**Inputs**

- Quote ID (`estimate_id`, text, required): The quote's id, from 'List quotes' or 'Create a quote', or its address in Zoho Invoice.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A quote's status change.

- `estimate_id` (text): The quote's id.
- `message` (text): Zoho's confirmation message.
- `status` (text): The new status.

**Example output**

```json
{
  "estimate_id": "2000000007101",
  "message": "Estimate status has been changed to Accepted.",
  "status": "accepted"
}
```

### Mark a quote as sent

Mark a draft quote as sent, without emailing it.

**Inputs**

- Quote ID (`estimate_id`, text, required): The quote's id, from 'List quotes' or 'Create a quote', or its address in Zoho Invoice.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A quote's status change.

- `estimate_id` (text): The quote's id.
- `message` (text): Zoho's confirmation message.
- `status` (text): The new status.

**Example output**

```json
{
  "estimate_id": "2000000007101",
  "message": "Estimate status has been changed to Sent",
  "status": "sent"
}
```

### Mark an invoice as sent

Mark a draft invoice as sent, without emailing it, so it counts as owed.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice', or its address in Zoho Invoice.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: An invoice's status change.

- `invoice_id` (text): The invoice's id.
- `message` (text): Zoho's confirmation message.
- `status` (text): The new status.

**Example output**

```json
{
  "invoice_id": "2000000007037",
  "message": "Invoice status has been changed to Sent.",
  "status": "sent"
}
```

### Record a customer payment

Record a payment received and apply it to an invoice.

**Inputs**

- Customer ID (`customer_id`, text, required): The customer's contact id, from 'List contacts' or 'Create a contact'.
- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice', or its address in Zoho Invoice.
- Amount (`amount`, number, required): The amount received. At least 0.
- Payment method (`payment_mode`, text, required): How the customer paid. One of: `cash`, `check`, `creditcard` (Credit card), `banktransfer` (Bank transfer), `bankremittance` (Bank remittance), `others` (Other).
- Payment date (`date`, date): Optional. Defaults to today.
- Amount applied to the invoice (`amount_applied`, number): Optional. How much of the payment goes to the invoice. Defaults to the whole amount. At least 0.
- Reference number (`reference_number`, text): Optional. Your own reference, such as a purchase order number.
- Description (`description`, text): Optional. A note about the payment.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice customer payment.

- `amount` (number): The amount received.
- `amount_refunded` (number): How much has been refunded.
- `bank_charges` (number): Bank charges.
- `currency_code` (text): The currency, e.g. USD.
- `currency_symbol` (text): The currency symbol.
- `custom_fields` (list): Custom field values.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The payment date, YYYY-MM-DD.
- `description` (text): The description.
- `email` (text): The customer's email.
- `invoices` (list): The invoices it was applied to.
- `payment_id` (text): The payment's id.
- `payment_mode` (text): How it was paid, e.g. cash.
- `reference_number` (text): Your reference.
- `status` (text): success or failure.

**Example output**

```json
{
  "amount": 240,
  "currency_code": "USD",
  "customer_id": "2000000002001",
  "customer_name": "Bowman & Co",
  "date": "2026-10-02",
  "invoices": [
    {
      "amount_applied": 240,
      "balance_amount": 0,
      "invoice_id": "2000000007037",
      "invoice_number": "INV-000042"
    }
  ],
  "payment_id": "2000000007201",
  "payment_mode": "banktransfer",
  "status": "success"
}
```

### Record an expense

Record an expense, optionally billable to a customer so it can be added to their next invoice.

**Inputs**

- Amount (`amount`, number, required): How much was spent. At least 0.
- Category (`account_id`, text): Optional. The expense category. Leave blank for your first active category.
- Date (`date`, date): Optional. When it was spent. Defaults to today.
- Description (`description`, text): Optional. What it was for, up to 100 characters.
- Reference number (`reference_number`, text): Optional. Your own reference, such as a purchase order number.
- Customer ID (`customer_id`, text): Optional. The customer it was spent for. Required when billable.
- Billable (`is_billable`, true/false): Optional. Bill this expense to the customer. Default: `false`.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice expense.

- `account_id` (text): The expense category's account id.
- `account_name` (text): The expense category.
- `amount` (number): The amount.
- `bcy_total` (number): The total in your base currency.
- `currency_code` (text): The currency, e.g. USD.
- `currency_id` (text): The currency's id.
- `custom_fields` (list): Custom field values.
- `customer_id` (text): The customer billed.
- `customer_name` (text): That customer's name.
- `date` (text): The expense date, YYYY-MM-DD.
- `description` (text): The description.
- `exchange_rate` (number): The exchange rate.
- `expense_id` (text): The expense's id.
- `expense_type` (text): The expense type.
- `invoice_id` (text): The invoice it was billed on.
- `invoice_number` (text): That invoice's number.
- `is_billable` (true/false): Whether it is billed to a customer.
- `is_inclusive_tax` (true/false): Whether the amount includes tax.
- `last_modified_time` (text): When it was last changed.
- `project_id` (text): The project's id.
- `project_name` (text): The project's name.
- `reference_number` (text): Your reference.
- `status` (text): The expense's status, e.g. unbilled.
- `sub_total` (number): The amount before tax.
- `tax_amount` (number): The tax.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `total` (number): The total.

**Example output**

```json
{
  "account_id": "2000000000391",
  "account_name": "Office Supplies",
  "amount": 35.5,
  "currency_code": "USD",
  "date": "2026-10-02",
  "description": "Printer paper",
  "expense_id": "2000000007301",
  "is_billable": false,
  "status": "nonbillable",
  "total": 35.5
}
```

### Send a payment reminder

Email the customer a reminder to pay a sent, unpaid invoice.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice', or its address in Zoho Invoice.
- To (`to_mail_ids`, text, required): Who to email: one or more addresses, separated by commas.
- CC (`cc_mail_ids`, text): Optional. Addresses to copy, separated by commas.
- Subject (`subject`, text): Optional. Leave blank for Zoho's template subject.
- Body (`body`, text): Optional. The message. Leave blank for Zoho's template message.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: An email sent about an invoice.

- `cc_mail_ids` (list): Who was copied.
- `invoice_id` (text): The invoice's id.
- `message` (text): Zoho's confirmation message.
- `subject` (text): The subject sent.
- `to_mail_ids` (list): Who it was sent to.

**Example output**

```json
{
  "cc_mail_ids": [],
  "invoice_id": "2000000007037",
  "message": "Your payment reminder has been sent.",
  "subject": "Payment reminder - INV-000042",
  "to_mail_ids": [
    "ann@bowman.example"
  ]
}
```

### Update a contact

Change a customer's name, company, website, billing address, payment terms or notes. Blank fields keep their value.

**Inputs**

- Contact ID (`contact_id`, text, required): The contact's id, from 'List contacts' or 'Create a contact', or the contact's address in Zoho Invoice.
- Display name (`contact_name`, text): Optional. A new display name.
- Company name (`company_name`, text): Optional.
- Website (`website`, text): Optional.
- Street address (`address`, text): Optional. The billing street address.
- City (`city`, text): Optional.
- State/region (`state`, text): Optional.
- Postal code (`zip_code`, text): Optional.
- Country (`country`, text): Optional.
- Payment terms (days) (`payment_terms`, number): Optional. How many days the customer has to pay, such as 15. At least 0.
- Notes (`notes`, text): Optional. Internal notes about the customer.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Invoice contact.

- `billing_address` (object): A postal address.
- `company_name` (text): The company name.
- `contact_id` (text): The contact's id.
- `contact_name` (text): The contact's display name.
- `contact_persons` (list): The contact persons.
- `contact_type` (text): customer.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The currency, e.g. USD.
- `currency_id` (text): The currency's id.
- `currency_symbol` (text): The currency symbol.
- `custom_fields` (list): Custom field values.
- `email` (text): The primary contact person's email.
- `facebook` (text): Facebook profile.
- `first_name` (text): The primary contact person's first name.
- `has_transaction` (true/false): Whether the contact has any transactions.
- `is_taxable` (true/false): Whether the contact is taxable.
- `last_modified_time` (text): When it was last changed.
- `last_name` (text): The primary contact person's last name.
- `mobile` (text): The primary contact person's mobile.
- `notes` (text): Notes.
- `outstanding_receivable_amount` (number): What the contact owes.
- `payment_reminder_enabled` (true/false): Whether payment reminders are on.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' label, e.g. Net 15.
- `phone` (text): The primary contact person's phone.
- `primary_contact_id` (text): The primary contact person's id.
- `shipping_address` (object): A postal address.
- `status` (text): active or inactive.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `twitter` (text): Twitter handle.
- `unused_credits_receivable_amount` (number): Unused credits.
- `website` (text): The website.

**Example output**

```json
{
  "company_name": "Bowman & Co",
  "contact_id": "2000000002001",
  "contact_name": "Bowman & Co",
  "contact_type": "customer",
  "created_time": "2026-09-01T10:15:00-0700",
  "currency_code": "USD",
  "email": "ann@bowman.example",
  "first_name": "Ann",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "last_name": "Bowman",
  "outstanding_receivable_amount": 0,
  "payment_terms": 15,
  "payment_terms_label": "Net 15",
  "status": "active"
}
```

### Void an invoice

Cancel an invoice by marking it void. It stays on record but no longer counts as owed.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice', or its address in Zoho Invoice.
- Organization (`organization_id`, text): Optional. The Zoho Invoice organization to use. Leave blank for your default organization.

**Outputs**: An invoice's status change.

- `invoice_id` (text): The invoice's id.
- `message` (text): Zoho's confirmation message.
- `status` (text): The new status.

**Example output**

```json
{
  "invoice_id": "2000000007037",
  "message": "Invoice status has been changed to Void.",
  "status": "void"
}
```
