Querying, updating, and deleting data with the Easysoft Zoho Books ODBC driver

Contents

Base tables

These tables correlate with their equivalent Zoho Books API call.

Name SELECT INSERT UPDATE DELETE
Bank_Account
Bank_Rule 1 1 1 1
Bank_Transaction 1 1 1 1
Bill 2
Chart_Of_Account 2
Contact 2
Credit_Note 2
Currency
Customer_Payment 2
Delivery_Challan 2
Employee 2
Estimate 2
Expense 2
Invoice 2
Item 2
Journal 2
Opening_Balance 3 3 3 3
Organization 2
Project 2
Purchase_Order 2
Recurring_Bill 2
Recurring_Expense 2
Recurring_Invoice 2
Retainer_Invoice 2
Salesorder 2
Salesreceipt 2
Task 2
Tax 2
Time_Entry 2
Users 2
Vendor_Credit 2
Vendor_Payment 2

1 Issue with underlying Zoho API call. Refer to the notes for the affected tables.

2 SELECT query limitations. Refer to the notes for the affected tables.

3 SQL statement limitations. Refer to the notes for the affected tables.

Comment tables and views

Tables Views
Bill_Comment Contact_Comments
Credit_Note_Comment Expense_Comment
Estimate_Comment Journal_Comments
Invoice_Comment Opening_Balance_Comments
Project_Comment Recurring_Invoice_Comments
Purchase_Order_Comment Vendor_Credit_Comments
Retainer_Invoice_Comment Vendor_Payment_Comments
Salesorder_Comment
Vendor_Credit_Comment

All Easysoft comment tables support SELECT, INSERT, and DELETE statements. The Bill_Comment, Credit_Note_Comment, Project_Comment, and Vendor_Credit_Comment tables don't support UPDATE statements as the underlying Zoho Books APIs for these tables don't currently support updates.

Views are SELECT only.

Comments automatically generated by Zoho Books can't be updated or deleted.

SELECT statements

To retrieve all comments for a record:

SELECT * FROM Invoice_Comment WHERE Invoice_Id = '579676000000050234'

You need to pass in the Id column and value for the record you want to get the comments from. Each table or view has its own Id column for example the Bill_Comment table has Bill_Id.

UPDATE statements

You can update a comment by passing in both the Id and Comment_Id columns for the table. For example:

UPDATE Invoice_Comment SET Description = 'Invoice updated. 2' WHERE Invoice_Id = '579676000000050234' AND Comment_Id = '579676000000061089'

If you try to update a system generated comment or history record, you'll get the error:

[Easysoft Zoho Books ODBC Driver]Error <4073: You cannot edit system generated or customer comments.

INSERT statements

You can insert a comment by running:

INSERT INTO Invoice_Comment (Invoice_Id, Description, Show_Comment_To_Clients, Payment_Expected_Date) VALUES ('579676000000050234' , 'Comment visible to customer' , 1 , '2024-08-29')

The columns Show_Comment_To_Clients and Payment_Expected_Date are only applicable to the table Invoice_Comment and are optional.

DELETE statements

You can delete a comment by running:

DELETE FROM Invoice_Comment WHERE Invoice_Id = '579676000000050234' AND Comment_Id = '579676000000165022'

Both the Id and Comment_Id columns are required. If you try to delete a system generated comment, history record, or customer comment you'll get the error:

[Easysoft Zoho Books ODBC Driver]Error <4073: You cannot delete system generated or customer comments.>

WHERE clause limitations

Any of the columns in a table or view can be used in a WHERE clause. This can lead to incorrect result sets being returned. To ilustrate this issue, here's a very simple query:

SELECT Contact_Id, Contact_Name, Opening_Balance_Amount FROM Contact WHERE Contact_Id = '579676000000093092'

This correctly returns one row from my test organization, which has a non-zero opening balance:

Contact_Id Contact_Name Opening_Balance_Amount
579676000000093092 Jones Inc 299.00

Now to show the problem. This query returns no rows:

SELECT Contact_Id, Contact_Name, Opening_Balance_Amount FROM Contact WHERE Opening_Balance_Amount<>0

I'll try to explain the reason for no rows.

The Easysoft Zoho Books ODBC driver has to use the Zoho Books API to access data in Zoho Books. In the Zoho Books API, there are two methods that can be used to get data from Contact: LIST and GET. If you specify the Id column (in my example, this is Contact_Id = '579676000000093092') the GET method is called.

The GET method gets one record from Zoho Books and costs 1 API call. It gets almost all the data relating to that record including the Opening_Balance_Amount.

When you do not specify the Id column, the Easysoft Zoho Books ODBC driver has to call the LIST method. This is where the problem occurs. The LIST method costs 1 API call for each array of rows returned. An array can contain up to a maximum 200 rows. In the case of the query that returns no rows, you can't query the Opening_Balance_Amount column with the LIST method. So in this case, the Easysoft Zoho Books ODBC driver gets all the rows but when filtered locally Opening_Balance_Amount always contains null, and so NOT results are <> 0. This costs 1 API call per 200 rows in the Contact table.

To work around this, you need to get the Zoho Books ODBC driver to make both LIST and GET calls. To do this, you need to use the table in the query twice. For example:

SELECT l.Contact_Id, l.Contact_Name, g.Opening_Balance_Amount FROM Contact l, Contact g WHERE g.Contact_Id=l.Contact_id AND g.Opening_Balance_Amount<>0

Contact l This is the first table queried. The LIST method is called and Contact_Id is returned for all records.

Contact g The second table is called. Passing in the Contact_Id forces the Easysoft Zoho Books ODBC driver to use the GET method, which does return Opening_Balance_Amount. This can then be filtered locally and the correct rows are returned.

Why doesn't the Easysoft Zoho Books ODBC driver use both methods to get the rows?

The answer is down to the number of API calls it would need to make to get all data for all the rows. The LIST method costs 1 API call per 200 rows and GET costs 1 API call per row. If you have a table that has 1000 rows of data, you need to 1005 API calls to get all the data by using LIST (5) and GET (1000).

One advantage the LIST method has over the GET method is that LIST can be called with some common query parameters for most of the API calls, which reduces the total number of API calls that need to be made to get data out. LIST also gives you most of what you need without giving you the full details.

In this example, I want to get a list of all customers starting with S that have an outstanding balance of over 1000. I want the following columns:

SELECT Contact_Id, Contact_Name, First_Name, Last_Name, Email, Outstanding_Receivable_Amount FROM Contact WHERE Contact_Name LIKE 'S%' AND Outstanding_Receivable_Amount>1000 AND Contact_Type = 'customer'

Let's say that out of the 1000 contacts, 80 contacts start with the letter S and only 20 of those have an Outstanding_Receivable_Amount of over 1000. In the above example, all the columns being returned can come from a LIST call.

The Contact API LIST call allows the driver to filter by Contact_Name, which means that in this test case, the Easysoft Zoho Books ODBC driver would only use 1 API call to get the 80 contacts from Zoho. The Outstanding_Receivable_Amount and Contact_Type would then be filtered locally to return just the 20 rows expected.

Which columns work under LIST and GET?

This document contains a full list of all base tables, the available columns and API types, along with whether they can be used with LIST or GET.

Zoho Books supports several regions:

Use Appendix B to find out whether the table, column, or method is available in your region. For example, the Item table has a column named Tax_Name. In all regions apart from Canada, you can filter on this column with either LIST or GET. If you want to filter on this column with Canadian Zoho Books data, you can only use the GET method.

Appendix B also shows API data types:

Array A JSON array returned as a long string.
Boolean BIT field returned as 0 or -1.
Date DATE returned as a string with the format yyyy-mm-dd
JSON data Type not returned, check the Zoho Books API documentation.
Number Integer or double.
Object JSON object returned as a long string.
String String data up to 254 characters.
Timestamp String in the format yyyy-mm-dd hh:nn:ss.

Some of the data returned under LIST differs from GET. Refer to Project for an example of this.

Using the Easysoft Zoho Books ODBC driver under Microsoft Access

You can link all tables and views without any issue in all versions of Microsoft Access from 2013 onwards. What you need to be aware of is what happens if you open a table directly in Microsoft Access rather than run a query or SQL statements.

When you open a base table such as Contact in Microsoft Access, Access sends this query to the Easysoft driver:

SELECT Contact_Id FROM Contact

This causes the driver to ask Zoho for a list of all Contact_Id values. This costs 1 Zoho Books API call for every 200 records you have. When the first 10 rows are passed back from the Easysoft driver to Microsoft Access, Access then sends a second query to the driver:

SELECT * FROM Contact WHERE Contact_Id=X1 OR Contact_Id=X2 OR Contact_Id=X3 OR Contact_Id=X4 OR Contact_Id=X5 OR Contact_Id=X6 OR Contact_Id=X7 OR Contact_Id=X8 OR Contact_Id=X9 OR Contact_Id=X10

where X1 to X10 are the 10 Contact_Id values passed back from the first query.

This is where the problem lies. The query uses 10 API calls.

The next 10 rows from the first query are passed from the Easysoft driver to Access and then the second query is sent again from Access to the Easysoft driver, using another 10 API calls.

If your contact table has, say, 1000 rows, by the time you have all the data returned you've used 1005 API calls.

Zoho Books API limitations

This is a list of problems I've found while testing the Zoho Books ODBC driver and writing this document. As these limitations are at the Zoho Books end, there's nothing we can do about them other than hope they go away, as Zoho release new API versions.

These limitations were found using API version 3.

DELETE employee

The example shown in the API documentation does not actually work and does not specify the employee_id. Reported to Zoho Books support on 5-Aug-2024.

Attachments

Getting a list of file attachments such as a receipt attached to an expense is restricted to getting the first attachment only.

INSERTing attachments does not currently work. Reported to Zoho Books support on 5-Aug-2024.

Exchange rates

Getting exchange rates without supplying the exchange_rate_id does not return the correct rate. Reported to Zoho Books support on 5-Aug-2024.

Error 45

[Easysoft Zoho Books ODBC Driver]Error 45: The API call for this organization has exceeded the maximum call rate limit of n>

You are limited to n API calls per Zoho Books organization. When you reach this limit, you need to wait until some of the API calls pass the 24 hour mark before you can use the Easysoft driver again. n is defined by your Zoho Books subscription type.

Organization

There is currently no Zoho Books API documentation on this.

Project

The views that the Easysoft Zoho Books ODBC driver presents use the Zoho Books Project API. The [Get a Project] view uses the Project_User API. The [List Users] view uses Project_Users API. The result sets that these return are different. For example, [Get a Project]:

GET https://www.zohoapis.com/books/v3/projects/579676000000161054/users?organization_id=20099941201

returns the user array:

{
    "user_id":"579676000000050001",
    "is_current_user":true,
    "user_name":"zoho2",
    "email":"test@easysoft.com",
    "user_role":"admin",
    "role_id":"579676000000000679",
    "status":"active",
    "rate":0.00,
    "budget_hours":0,
    "budget_hours_in_time":"00:00",
    "total_hours":"00:04",
    "billed_hours":"00:00",
    "un_billed_hours":"00:04",
    "billable_hours":"00:04",
    "non_billable_hours":"00:00",
    "staff_role":"staff",
    "staff_status":"active"
},

Using [List Users] returns:

{
    "user_id":"579676000000050001",
    "is_current_user":true,
    "user_name":"zoho2",
    "email":"test@easysoft.com",
    "user_role":"admin",
    "role_id":"579676000000000679",
    "user_photo_url":"https://contacts.zoho.eu/file?t=user&ID=20099940566&fs=thumb",
    "status":"active",
    "rate":0.00,
    "is_timer_running":false,
    "timer_started_date":"",
    "timer_running_task":"",
    "budget_hours":0,
    "budget_hours_in_time":"00:00",
    "un_billed_hours":"00:00",
    "billed_hours":"00:00",
    "total_hours":"00:00"
},

In the two sample responses, the total_hours and un_billed_hours columns have different values. This is reason why we provide two views so you can choose the one that contains the data you need.

Sales_Receipts

This is not included in the Zoho Books API documentation.

Zoho Books trials

If you use Zoho Books on a trial license, the Zoho Books API still allows you to read the data in read-only mode after the trial expires. If you try doing things like bulk email through the API, the error message returned does not indicate that your trial has expired.

Special tables

API table

This table can be used to directly access the Zoho Books API:

Column Description
URL For Zoho Books API version 3, all URLs start with /books/v3/.
Method GET, PUT, POST, or DELETE
Code HTTP status code as integer:
Code Description
200 OK
201 Created
400 Bad request
401 Unauthorized (Invalid AuthToken)
404 Error
405 Method Not Allowed (Method you have called is not supported for the invoked API)
429 Rate Limit Exceeded (API usage limit exceeded)
500 Internal Error
RequestType If NULL, JSON is expected if the RequestBody is used.
RequestBody Data to be sent to the API.
ResponseType The type of data in the response. For example, application/json;charset=UTF-8.
ResponseBody Data returned from the API.

You can use SELECT statements to access the API. The GET method selects data, POST or PUT inserts or update data and DELETE removes data.

Use a WHERE clause containing the URL, method, and when required RequestBody. For example:

SELECT  * FROM API WHERE URL = '/books/v3/bankaccounts/rules?account_id=576438000000118001' AND  Method = 'GET'
SELECT  * FROM API WHERE URL = '/books/v3/bankaccounts/' AND Method = 'GET'
SELECT  * FROM API WHERE URL = '/books/v3/bankaccounts/576438000000118001'  AND Method = 'GET'
SELECT  * FROM API WHERE URL = 'ContactGroups/fd33e5d2-3f95-4b1b-a405-7ed7067b9c22/Contacts'  AND Method = 'DELETE'

If you have more than one Zoho Books organization, you have to specify which organization_id you're using. For example:

SELECT * FROM API WHERE URL = '/books/v3/bankaccounts/?organization_id=20100353410' AND Method = 'GET'

Specify the columns in the URL and Method in the WHERE clause. Otherwise, you'll get an error.

If you send invalid JSON in the RequestBody, the API will try to process the request and the appropriate response will be sent back.

Warning PUT and POST work in different ways in the Zoho Books API. Make sure you check the API documentation to be 100% sure you're using the correct method when inserting or updating records.

Error code 404

Zoho Books returns 404 for any error that occurs. For example:

SELECT * FROM API WHERE URL = 'books/v3/estimates/576438000000189002/comments' AND Method = 'GET'

The Estimate_Id value (576438000000189002) is not a valid estimate. You need to check the ResponseBody column:

Code: 404
ResponseType: application/json;charset=UTF-8
ResponseBody: {"code":1002,"message":"Quote does not exist."}

Likewise:

SELECT * FROM API WHERE URL = 'books/v3/invoices/576438000000189002/comments' AND Method = 'GET'
Code: 404
ResponseType: application/json;charset=UTF-8
ResponseBody: {"code":5,"message":"Invalid URL Passed"}

In the ResponseBody, the code number returned is often the same across different URLs so if something doesn't exist you will get a 1002 code:

SELECT * FROM API WHERE URL = 'books/v3/invoices/576438000000189002' AND Method = 'GET'
Code: 404
ResponseType: application/json;charset=UTF-8
ResponseBody: {"code":1002,"message":"Resource does not exist."}

LastId table

Use this table to find out what's going on at the Zoho Books API end after you've run an INSERT, UPDATE, or DELETE statement.

The table contains the following columns:

Column name Description
Code API status code (0 is OK).
Message API response message. For example, The account has been created.
Operation INSERT, UPDATE, or DELETE. The type of SQL statement that ran.
Api The Zoho Books API called.
Key Key column name.
Value Key column value.
Full message JSON response sent back from the API.

Successful inserts will always update the LastID table.

UPDATE and DELETE statements only change this table if at least one record is updated or deleted. If more than one record is updated or deleted, only the Id of the last record altered will be returned. If you attempt to update or delete but the statement does not alter any records, no data will be returned.

The data returned from the LastId table is only applicable to the last action on the current connection.

JSON formatted columns

Some of the columns used in the INSERT or UPDATE statements need to be in an JSON format such as the Bill table's Line_Items column. For example:

[
      {
           "line_item_id":"576438000000131023",
           "account_id":"576438000000000415",
           "account_name":"IT and Internet Expenses",
           "description":"Dell Laser Printer",
           "bcy_rate":100,
           "rate":100,
           "quantity":1,
           "tax_type":"tax",
           "tax_percentage":0,
           "item_total":100,
           "item_order":1,
           "is_billable":False
      },
      {
           "line_item_id":"576438000000136009",
           "account_id":"576438000000000415",
           "account_name":"IT and Internet Expenses",
           "description":"Dell Computer",
           "bcy_rate":1233,
           "rate":1233,
           "quantity":4,
           "tax_type":"tax",
           "tax_percentage":0,
           "item_total":4932,
           "item_order":2,
           "is_billable":False
      },
      {
           "line_item_id":"576438000000137009",
           "account_id":"576438000000000415",
           "account_name":"IT and Internet Expenses",
           "description":"Dell Laser Paper",
           "bcy_rate":3,
           "rate":3.5,
           "quantity":16,
           "tax_type":"tax",
           "tax_percentage":0,
           "item_total":56,
           "item_order":3,
           "is_billable":False
      }
]

In this example, I have only shown the lines that contain data. NULLs or empty strings have been left out.

In the Zoho Books API, JSON has this format:

In the example data shown above, the square brackets round the data denote an array that's separated by commas. Each {group of objects} denotes one of the lines on the bill and "quantity":16 is a data name/value pair.

All the data names in the Zoho Books API are in lower case. JSON is case sensitive when it comes to these names so putting them in upper or mixed case will result in some strange errors.

In the API we connect to, JSON values must be one of the following data types:

Timestamps are returned as a string in the ISO 8601 YYYY-MM-DDThh:mm:ssTZD format. For example:

"last_modified_time":"2024-06-19T08:04:44-0400"

Dates are returned as a string in the YYYY-MM-DD format. For example:

"date":"2024-06-05"

In some of the JSON returned, you may get something like:

"tags":[]

This denotes an empty array.

String data needs to be escaped.

If you need to clear the contents of a JSON column, you need to set the value to [].

UPDATE Invoice SET Contact_Persons = '[]' WHERE Invoice_Id = '579676000000050260'

Setting the value to empty string ('') or NULL will not work as the Zoho Books API does not support this.

DELETE statements

Where the table supports a DELETE statement, there are two methods that can be used to delete records. Directly by specifying the table. For example:

DELETE FROM Bank_Account WHERE Account_Id = '579676000000088102'

Indirectly by using the API table. For example:

SELECT * FROM API WHERE URL = 'books/v3/bankaccounts/579676000000109001' AND Method = 'DELETE'

If you're just deleting one record and you have the Id of the record you want to delete, the API method is faster and uses fewer API calls than going by using the table.

But if you want to delete multiple records at the same time, you can go through the table and send something like:

DELETE FROM Bank_Account WHERE Balance=0

This deletes all records matching the specified criteria.

Note Once a DELETE statement or API Method = 'DELETE' is called, any rows that match will be deleted. There is no undo option and no way of getting the rows back.

Zoho Books tables

Bank_Account

Supports: SELECT, INSERT, UPDATE, and DELETE

SELECT statements

The Zoho Books API always sends back the Account_Number column as xxxx followed by the last 4 digits of your account number.

INSERT statements

You can create new Bank_Account records by sending:

INSERT INTO Bank_Account (Account_Name, Account_Type, Account_Number, Routing_Number, Currency_Code) VALUES ('Test COOP Account', 'bank', '80000009823', '123456789', 'GBP')

UPDATE statements

You can, for example, change the Account_Name of a Bank_Account record by sending:

UPDATE Bank_Account SET Account_Name = 'COOP Account' WHERE Account_Id = '576438000000114002'

DELETE statements

You can delete a Bank_Account record by sending:

DELETE FROM Bank_Account WHERE Account_Id = '576438000000114002'

Using the API table to delete an account

You can also delete a single record by running:

SELECT * FROM API WHERE URL = 'books/v3/bankaccounts/579676000000109001' AND Method = 'DELETE'

Using the API table to deactivate or activate an account

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/bankaccounts/579676000000109001/status/X' AND Method = 'POST'

where X is one of:

Value Description
inactive Deactivates the account.
active Activates the account.

Using the API table to import bank or credit card statements

Create the JSON data you want to import in this format:

{
    "account_id":"579676000000107014",
    "start_date":"2024-07-01",
    "end_date":"2024-09-01",
    "transactions":[
         {
              "transaction_id":"B00001",
              "date":"2024-08-01",
              "debit_or_credit":"credit",
              "amount":100,
              "payee":"Bowman and Co",
              "description":"Electronics purchase",
              "reference_number":"Ref-2134"
         },
         {
              "transaction_id":"B00001",
              "date":"2024-07-01",
              "debit_or_credit":"credit",
              "amount":200,
              "payee":"Bowman and Co",
              "description":"Electronics purchase x2",
              "reference_number":"Ref-1134"
         }
    ]
}

Then call the API table by using:

SELECT * FROM API WHERE URL = 'books/v3/bankstatements' AND Method = 'POST' AND RequestBody = 'JSON Data'

The response back if that works is:

Code: 201
 ResponseType: application/json;charset=UTF-8
 ResponseBody:  
 {
      "code":0,
      "message":"Your bank statement has been imported."
 }

Using the API table to get the last statement

Run something like:

SELECT * FROM API WHERE URL = 'books/v3/bankaccounts/579676000000107014/statement/lastimported' AND Method = 'GET'

Using the API table to delete a record.

Run something like:

SELECT * FROM API WHERE URL = 'books/v3/bankaccounts/579676000000107014/statement/579676000000108021' AND Method = 'DELETE'

Bank_Rule

Supports: Nothing

Bank_Rule in the Zoho Books API does not function correctly.

Do not use this table.

Bank_Transaction

Supports: Nothing

Do not use this table.

Bill

Supports: SELECT, INSERT, UPDATE, and DELETE

UPDATE statements

UPDATE statements can be used to change some of the header details such as Due_Date:

UPDATE Bill SET Due_Date = '2024-06-21' WHERE Bill_Id = '576438000000118046'

UPDATE statements can't be used to change a Billing_Address_City as this is part of the Customer address and it needs to be changed in the Customer record. If you attempt to change a column that's not updatable, the Zoho Books API may return 200 (Success) but nothing changes.

UPDATE can also be used to add, amend, and delete line items. When you update Line_Items you can add, update, and delete lines at the same time. Zoho simply replaces the lines in your bill with the JSON data you send.

Adding a line item

The easiest way to add an additional line item is to get the JSON column back from Zoho by running:

SELECT Line_Items FROM Bill WHERE bill_id = '576438000000118046'

The JSON returned will be in the format:

[{row 1 data},{row 2 data},{row n data}]

There will be one object per row of data. Change the JSON data returned so that between the last } and ] add a comma and then your JSON object:

{"item_order":3,"account_name":"IT and Internet Expenses","account_id":"576438000000000415","description":"Dell Laser Paper","rate":3.50,"quantity":16,"item_total":56.00}

Then send the JSON back by using:

UPDATE Bill SET Line_Items = 'JSON_Data' WHERE  bill_id = '576438000000118046'
Removing a line item

The easiest way to remove a line item is to get the JSON column back from Zoho Books by running:

SELECT Line_Items FROM Bill WHERE bill_id = '576438000000118046'

The JSON array returned will contain a set of objects that each have the data name line_item_id on:

[{"line_item_id": "1"},{ "line_item_id": "2"},{ "line_item_id": "n"}]

If you remove the comma and object "{ "line_item_id": "2"} then send an UPDATE statement, the line will be removed.

Amending a line item

This is the same as removing a line item but instead of taking an object out, you simply change one or more of the data name: data value sets.

INSERT statements

Insert statements are very straightforward, but make sure that the Vendor_Id sent is a valid Contact_Id in the Contact table where Contact_Type = 'vendor'.

JLine=
[
         {
                  "item_order":1,
                  "account_name":"IT and Internet Expenses",
                  "account_id":"576438000000000415",
                  "description":"Dell Laser Paper",
                  "rate":3.50,
                  "quantity":16,
                  "item_total":56.00
         }
]
         SQL="INSERT INTO Bill (Bill_Number, Vendor_Id, [Date], Due_Date, Currency_Code, Line_Items) VALUES ('BILL-002', '576438000000118013', '2024-06-25', '2024-07-25', 'USD', '" & JLine & "')"

Date and Due_Date need to be passed in in the format yyyy-mm-dd.

DELETE statements

DELETEs can be done by using an SQL DELETE statement or by using the API table. For example:

DELETE FROM Bill WHERE Bill_Id = '579676000000088074'
SELECT * FROM API WHERE URL = 'books/v3/bills/579676000000089067' AND Method = 'DELETE'

DELETE statements are not limited to Bill_Id. You can delete a range of Bills by using:

DELETE FROM Bill WHERE [Date] = '2024-07-01'

But be careful as this type of query will delete all bills it finds that match the specified WHERE clause criteria.

Using the API table to mark a record as open or void

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/bills/579676000000081095/status/X' AND Method = 'POST'

where X is one of:

Value Description
open Markopen
void Markvoid This only works if the bill is not already paid.

Using the API table to submit or approve a bill

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/bills/579676000000081095/X' AND Method = 'POST'

where X is one of:

Value Description
submit Submit for approval
approve Approve

submit and approve only work if they have been turned on in the Zoho Books company you're connecting to. If they're not turned on, the ResponseBody is:

{"code":21016,"message":"You have not enabled the Approval feature for this organization. Please enable it in Settings."}

Using the API table to apply credit to a bill

You need to have both the Bill_Id and Vendor_Credit_Id to be able to carry this out. First, create the JSON data to allocate the amounts to each bill.

{
         "apply_vendor_credits":[
         {
         "vendor_credit_id":"579676000000098059",
         "amount_applied":25
         }
         ]
}

Then apply it to the bill by using:

SELECT * FROM API WHERE URL = 'books/v3/bills/579676000000098003/credits' AND Method = 'POST' AND RequestBody = 'JSON Data'

Both the vendor credit and bill must be related to the same contact record.

Using the API table to add comments

First create the JSON data you want to add:

{
         "description":"Test add comment.",
}

Send the comment:

SELECT ResponseBody FROM api WHERE url = 'books/v3/bills/579676000000081095/comments' AND Method = 'POST' and RequestBody = 'JSON Data'

The ResponseBody will contain the message Comments added.

Using the API table to update comments

Updating bill comments is not currently supported in the Zoho Books API.

Using the API table to list bill comments and history

This example lists all the comments and history for the Bill_Id sent.

SELECT * FROM API WHERE URL = 'books/v3/bills/579676000000081095/comments' AND Method = 'GET'

This API call lists all the comments and history for the Bill_Id sent.

SELECT * FROM Bill_Comment WHERE Bill_Id = '579676000000081095'

Using the API table to delete bill comments

This example deletes the selected comment from a bill.

SELECT * FROM API WHERE URL = 'books/v3/bills/579676000000081095/comments/579676000000102002' AND Method = 'DELETE'

Chart_Of_Account

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

INSERT statements can be very simple:

INSERT INTO Chart_Of_Account (Account_Name, Description, Account_Type) values ('Test Account', 'Easysoft test COA', 'income')

If you need to add an opening balance to the account you create, refer to Opening_Balance.

UPDATE statements

Use something like the following:

UPDATE Chart_Of_Account SET Description = 'Testing the COA' WHERE Account_Id = '579676000000106021'

DELETE statements

Use something like the following:

DELETE FROM Chart_Of_Account WHERE Account_Name = 'Test Account'

Alternatively, use the API table if you have the Account_Id:

SELECT * FROM API WHERE URL = 'books/v3/chartofaccounts/579676000000107086' AND Method = 'DELETE'

Using the API table to mark an account record as active or inactive

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/chartofaccounts/579676000000107086/X' AND Method = 'POST'

where X is one of:

Value Description
inactive Make inactive.
active Activate.

Using the API table to list account transactons

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/chartofaccounts/transactions?account_id=579676000000000352&amount.less_than=25384.04' AND Method = 'GET'

Listing transactons

This example SQL query returns a list of transactions for an account's invoices:

SELECT * FROM Chart_Of_Account_Transaction WHERE Account_Id = '579676000000000376' AND Transaction_Type = 'invoice'

The Account_Id must be specified.

Contact

Supports: SELECT, INSERT, UPDATE, and DELETE

This table is where your customer and vendor (supplier) information is stored. The column Contact_Type denotes the type of contact you have (customer or vendor). A contact can only be of one type. If you have both a customer and vendor with the same name, you need to create two records.

There are two JSON columns in this table, Contact_Persons, which is an array that can contain one or more people's details and Addresses.

INSERT statements

When inserting a new record into the Contact table, the only field required in the API is Contact_Name. For example:

INSERT INTO Contact (Contact_Name) VALUES ('J. Jones Lumber')

The API assumes you're creating a customer rather than a vendor. In my test organization, the API defaults are:

UPDATE statements

UPDATE statements work in two ways depending on the column type. With the exception of the Status column, the other non-JSON columns can be updated as long as the Zoho Books API supports this. For example:

UPDATE Contact SET Company_Name = 'J. Jones Lumber' WHERE Contact_Id = '576438000000152001'

To alter the Status column, refer to Contact table.

The JSON column Contact_Persons can be updated by sending a JSON string. This can be used to add, edit, or delete people associated with the contact record.

When sending JSON data back to Contact_Persons, you must make sure that you do not send:

is_primary_contact:false

The Zoho Books API only supports sending true. If you don't want to make a person record true, don't specify is_primary_contact in your JSON data.

The Contact_Persons column

In this test, I select Contact_Persons from my Contact record, which returns:

[
         {
         "contact_person_id":"576438000000153022",
         "is_added_in_portal":false,
         "salutation":"Mr.",
         "is_portal_invitation_accepted":false,
         "email":"tim.tester@easysoft.com",
         "first_name":"Tim",
         "last_name":"Tester",
         "phone":"555-222-8888",
         "can_invite":true,
         "is_primary_contact":true,
         "is_sms_enabled_for_cp":false,
         "photo_url":"https://secure.gravatar.com/avatar/63c1cb7cfeb56dc678156af6fe48cca3?&d=mm",
         "communication_preference":{
         "is_sms_enabled":false,
         "is_email_enabled":true,
         "is_whatsapp_enabled":false
         }
         },
         {
         "contact_person_id":"576438000000153029",
         "is_added_in_portal":false,
         "salutation":"Mr.",
         "is_portal_invitation_accepted":false,
         "email":"j.jones@easysoft.com",
         "first_name":"John",
         "last_name":"Jones",
         "phone":"555-666-9999",
         "designation":"Boss",
         "can_invite":true,
         "is_primary_contact":false,
         "is_sms_enabled_for_cp":false,
         "photo_url":"https://secure.gravatar.com/avatar/4f6761051027e0cf9cc43c08596dd77a?&d=mm",
         "communication_preference":{
         "is_sms_enabled":false,
         "is_email_enabled":true,
         "is_whatsapp_enabled":false
         }
         }
         ]

Next, I remove all occurrences of "is_primary_contact":false, as the API does not support that. I then add a comma between the last } and ] followed by a new record:

{
         "email":"tina.tester@easysoft.com",
         "salutation":"Mrs",
         "first_name":"Tina",
         "last_name":"Tester"
         }

Then I send the data using:

UPDATE Contact SET Contact_Persons = 'JSON_DATA' WHERE Contact_Id = '576438000000152001'

To alter a person's details, select the Contact_Persons column, remove all occurrences of "is_primary_contact":false, alter the other parts you want, and then send this to Zoho Books by using an UPDATE statement.

To remove a person's details, select the data, which has this format:

[{person 1 data},{person 2 data},{person n data}]

Remove all occurrences of "is_primary_contact":false. Remove the block of data round the person you want to delete and then execute the update.

Each time an update is sent, the current record is replaced with the data you send, so you can add, edit, and delete all at the same time.

Using the API table to activate or deactivate a record

Contacts can only be made active or inactive by using the API table. Updating the Status column in the table is not supported by the Zoho Books API. Here's an example of making a contact inactive:

SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/inactive' AND Method = 'POST'

When the change is made, the ResponseBody column returns:

{"code":0,"message":"The contact has been marked as inactive."}

Using the API table to turn portal access on or off

To turn on portal access, create a JSON data record containing the person or persons you need to give access to:

{"contact_persons":[{"contact_person_id":576438000000158066}]}

Then in the SQL you send:

SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/portal/disable' AND Method = 'POST' AND RequestBody = 'JSON_DATA'

Replace disable with enable to turn on portal access. Note The contact_person_id needs to be a contact person in the contact record you're sending. Assuming it works, the ResponseBody contain:

{"code":0,"message":"You have disabled the portal for the contact"}

Using the API table to turn payment reminders on or off

Using the API table, send:

SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/paymentreminder/disable' AND Method = 'POST'

Change disable to enable to turn on reminders and the ResponseBody will return:

{"code":0,"message":"All reminders associated with this contact have been enabled."}

Using the API table to get statement content

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/statements/email' AND Method = 'GET'
SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/statements/email?start_date=2024-01-01&end_date=2024-02-01

If you don't supply a start_date and end_date, the statement is for the current month.

The ResponseBody contains:

{
         "message":"success",
         "data":{
         "contact_name":"Customer - USD",
         "file_name_without_extension":"statement_Customer-USD",
         "from_email":"test@test.co.uk",
         "subject":"Account Statement from 01 Jan 2024 to 01 Feb 2024",
         "file_name":"statement_3MBrookingsIT-USD.pdf",
         "filter_by":"Status.All",
         "contact_id":"576438000000059118",
         "body":"<br>Dear Customer - USD,
         <br><br><span>It's been a great experience working with you.<br></span>Attached with this email is a list of all transactions for the period between&nbsp;<b>01 Jan 2024</b>&nbsp;to&nbsp;<b>01 Feb 2024</b><span>.<br></span><span>If you have any questions,
         just drop us an email or call us.</span><br><br><br>Regards,
         <br>zoho1<br>ESL Test<br><br><br>",
         "entity_id":"576438000000059118",
         "to_mails_str":"test@test.co.uk",
         "from_emails":[
         {
         "is_org_email_id":false,
         "user_name":"zoho1",
         "organization_contact_id":"576438000000049001",
         "email":"test@easysoft.com",
         "selected":true
         }
         ],
         "to_contacts":[
         {
         "last_name":"Smith",
         "contact_person_id":"576438000000158066",
         "salutation":"Mr.",
         "first_name":"A",
         "email":"a.smith@test.co.uk",
         "selected":true
         },
         {
         "last_name":"Smith",
         "contact_person_id":"576438000000158068",
         "salutation":"Mrs.",
         "first_name":"T",
         "email":"t.smith@ test.co.uk",
         "selected":false
         }
         ],
         "emailtemplates":[
         {
         "email_template_id":"576438000000000024",
         "name":"Default",
         "selected":true
         }
         ],
         "from_address":"null"
         }
         }

Blank lines have been removed to save space.

Using the API table to send an email statement

First create the JSON data:

{
         "to_mail_ids":[
         "test@easysoft.com",
         "annother@easysoft.com"
         ],
         "cc_mail_ids":[
         "support@easysoft.com"
         ],
         "subject":"Test credit note from ZB",
         "body":"This is a test body text to check the example code."
         }

To get Zoho Books to send the email:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000160023/ statements/email and Method' = 'POST' AND RequestBody = 'JSON_DATA'

The ResponseBody will contain:

{"code":0,"message":"Statement has been sent to the customer."}

Using the API table to list comments

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/comments' AND Method = 'GET'

The ResponseBody will contain:

{
         "message":"success",
         "contact_comments":[
         {
         "comment_id":"576438000000158081",
         "contact_id":"576438000000059118",
         "contact_name":"Customer - USD",
         "comments_html_format":"Customer Statement was sent",
         "description":"Customer Statement was sent",
         "commented_by_id":"576438000000049001",
         "commented_by":"zoho1",
         "date":"2024-07-02",
         "date_description":"39 minutes ago",
         "time":"6:00 AM",
         "transaction_type":"contact",
         "is_entity_deleted":false,
         "operation_type":"updated"
         },
         {
         "comment_id":"576438000000162031",
         "contact_id":"576438000000059118",
         "contact_name":"Customer - USD",
         "comments_html_format":"Automated payment reminder disabled",
         "description":"Automated payment reminder disabled",
         "commented_by_id":"576438000000049001",
         "commented_by":"zoho1",
         "date":"2024-07-02",
         "date_description":"about an hour ago",
         "time":"5:00 AM",
         "is_entity_deleted":false,
         "operation_type":"updated"
         },
         {
         "comment_id":"576438000000160071",
         "contact_id":"576438000000059118",
         "contact_name":"Customer - USD",
         "comments_html_format":"Portal enabled for test@test.co.uk",
         "description":"Portal enabled for test@test.co.uk",
         "commented_by_id":"576438000000049001",
         "commented_by":"zoho1",
         "date":"2024-07-02",
         "date_description":"2 hours ago",
         "time":"4:35 AM",
         "is_entity_deleted":false,
         "operation_type":"updated"
         }
         ],
         "page_context":{
         "page":1,
         "per_page":200,
         "has_more_page":false,
         "customer_name":"Customer - USD",
         "applied_filter":"RecentActivity.All",
         "sort_column":"date",
         "sort_order":"D"
         }
         }

The ResponseBody above has been reduced to just a sample of the data returned.

To list comments, use something like:

SELECT * FROM Contact_Comment WHERE Contact_Id = '579676000000093175'

Using the API table to list refunds

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/refunds' AND Method = 'GET'

Using the API table to turn 1099 tracking on or off

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/contacts/576438000000059118/track1099' AND Method = 'POST'

Change track1099 to untrack1099 to stop the 1099 tracking.

Using the API table to manage addresses

Addresses can only be created, edited, or deleted by using the API table.

Adding an address

Before you send the SQL, you need to create a new JSON group of objects that contains the address details. For example:

{
         "phone":"505-111-2222",
         "attention":"Paul Smith",
         "address":"The Main Office",
         "street2":"Big Lumber Yard",
         "city":"Ripon",
         "state":"Colorado",
         "state_code":"CO",
         "zip":22334,
         "country_code":"US"
         }

Then send it through the API table by using a POST method:

SELECT * FROM API WHERE URL = '/books/v3/contacts/576438000000152001/address' AND Method = 'POST' AND RequestBody = 'JSON_DATA'

where 576438000000152001 is the Contact_Id of the contact to add the address to and JSON_DATA is the address group. Assuming this works, the Response column contains:

{"code":0,"message":"The address has been created.","address_info":{"address_id":"576438000000149024","address_type":"","attention":"Paul Smith","address":"The Main Office","street2":"Big Lumber Yard","city":"Ripon","state_code":"","state":"Colorado","zip":"22334","country":"","country_code":"","phone":"505-111-2222","fax":"","latitude":"","longitude":"","update_existing_transactions_address":""}}
Editing an address

To edit an address, you need to know the Contact_Id of the contact record and the Address_Id of the record being edited.

{
         "phone":"505-111-2222",
         "attention":"Paul Smith",
         "address":"Admin Office",
         "street2":"Big Lumber Yard",
         "city":"Ripon",
         "state":"Colorado",
         "state_code":"CO",
         "zip":22334,
         "country_code":"US"
         }

This time, I have just changed the address part. This is then sent by using the PUT method with the address_id in the URL:

SELECT * FROM API WHERE URL = '/books/v3/contacts/576438000000152001/address/576438000000149024' AND Method = 'PUT' AND RequestBody = 'JSON_DATA'

If this succeeds, the Response column contains:

{"code":0,"message":"The address has been updated.","address_info":{"address_id":"576438000000149024","address_type":"","attention":"Paul Smith","address":"Admin Office","street2":"Big Lumber Yard","city":"Ripon","state_code":"","state":"Colorado","zip":"22334","country":"","country_code":"","phone":"505-111-2222","fax":"","latitude":"","longitude":"","update_existing_transactions_address":""}}
Deleting an address

To delete an address, you need to know the Contact_Id of the contact record and the address_id of the record being edited.

SELECT * FROM API WHERE URL = '/books/v3/contacts/576438000000152001/address/576438000000149024' AND Method = 'DELETE'

If it works, the Response column contains:

{"code":0,"message":"The address has been deleted."}

Credit_Note

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

You can create new credit notes by executing an INSERT statement. To create a new credit note, you need the minimum of Customer_Id, Currency_Id, Date, and Line_Items. The Creditnote_Number is only needed if you don't have auto numbering turned on in Zoho Books. Here is the JSON_DATA I'm passing in:

[
         {
         "account_id":"576438000000000376",
         "tax_type":"tax",
         "item_id":"576438000000080083",
         "name":"1000-99-9999-99-99-99-07",
         "tax_id":"576438000000056007",
         "item_order":1,
         "description":"Easysoft Contract - Renewal",
         "quantity":1,
         "unit":"pcs",
         "item_total":404.73,
         "sales_rate":1,
         "rate":404.73,
         "tax_percentage":10,
         "account_name":"Sales",
         "tax_name":"10% Tax",
         "pricing_scheme":"unit",
         "item_type":"sales"
         }
         ]

The SQL being sent is:

INSERT INTO Credit_Note (Customer_Id, Currency_Id, [Date], Line_Items) values ('576438000000066678', '576438000000000059', '2021-06-14', 'JSON_DATA')

UPDATE statements

You can update an existing credit note by sending an UPDATE statement:

UPDATE Credit_Note SET [Date] = '2024-01-01' WHERE Creditnote_Id = '576438000000159004'

DELETE statements

You can delete a credit note by sending:

DELETE FROM Credit_Note WHERE Creditnote_Id = '576438000000159004'

As long as the Creditnote_Id is valid, the record will be deleted.

Using the API table to get a credit note

Using the API table, you can get a credit note PDF encoded in Base64. For example:

SELECT ResponseBody FROM api WHERE url = 'books/v3/creditnotes/576438000000160023?accept=pdf' AND Method = 'GET'

Using the API table to email a credit note

First, create the JSON data containing the email details for the credit note recipients.

{
         "to_mail_ids":[
         "test@easysoft.com",
         "annother@easysoft.com"
         ],
         "cc_mail_ids":[
         "support@easysoft.com"
         ],
         "subject":"Test credit note from Zoho Books",
         "body":"This is a test body text to check the example code."
         }

To send the credit note to these email addresses:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000160023/email' AND Method = 'POST' AND RequestBody = 'JSON_DATA'

The ResponseBody will contain:

{"code":0,"message":"Your credit note has been sent."}

Using the API table to access email history

Email history can only be accessed through the API table. You need to pass a CreditNote_Id into the URL. For example:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000156003/emailhistory/' AND Method = 'GET'

This returns:

{
         "code":0,
         "message":"success",
         "email_history":[
         {
         "mailhistory_id":"576438000000156061",
         "from":"zoho1@test.co.uk",
         "to_mail_ids":"j.smith@easysoft.com",
         "subject":"Credit Note - CN-00001 from ESL Test",
         "date":"2024-06-28",
         "type":28
         },
         {
         "mailhistory_id":"576438000000156071",
         "from":"zoho1@ test.co.uk",
         "to_mail_ids":"support@easysoft.com",
         "subject":"Credit Note - CN-00001 from ESL Test",
         "date":"2024-06-28",
         "type":28
         }
         ]
         }

Using the API table to mark a credit note status (void, draft, or open)

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000156003/status/X' AND Method = 'POST'

where X is one of:

Value Description ResponseBody message
void Void a credit note. The credit note has been marked as void.
draft Convert credit note to draft. The credit note has been marked as Draft.
open Convert to open. Status of the credit note has been changed to open.

Using the API table to submit, approve, or get the email history of a credit note

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000156003/X' AND Method = 'POST'

where X is one of:

Value Description ResponseBody message
submit Submit a credit note for approval. The Credit Note has been successfully submitted for approval.
approve Approve a credit note You have approved the Credit Note.
email history Email history. Note Change the Method value from POST to GET. Refer to Using the API table to submit, approve, or get the email history of a credit note.

submit and approve only work if they have been enabled in the Zoho Books company you're connecting to. If they are not allowed, the ResponseBody is:

{"code":21016,"message":"You have not enabled the Approval feature for this organization. Please enable it in Settings."}

Using the API table to update billing or shipping address

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000156003/address/X' AND Method = 'PUT' AND RequestBody = 'JSON_DATA'

where X is one of:

Value Description ResponseBody message
billing Update billing address. Billing address updated
shipping Update shipping address. Shipping address updated

The JSON data is in the format:

{
         "address":"Suite 125,
         McMillan Avenue",
         "city":"San Francisco",
         "state":"CA",
         "zip":94134,
         "country":"USA",
         "fax":"+1-925-924-9600"
         }

Using the API table to apply credit notes to an invoice

First, you need to build some JSON data in this format:

{
         "invoices":[
         {
         "Invoice_Id":"576438000000105717",
         "amount_applied":445.2
         },
         {
         "Invoice_Id":"576438000000105718",
         "amount_applied":100
         }
         ]
         }

This tells Zoho Books which invoices you want to apply a credit to. The only thing you need to keep in mind is that the total of the amount_applied must be less than or equal to the amount of credit on your credit note.

Then send this to Zoho Books through the API table by using:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000159024/invoices' AND Method = 'POST' AND RequestBody = 'JSON DATA'

If this works, each invoice in the list will have the amount_applied deducted from the invoice total. If the new total is 0, the invoice will be marked as paid. If the new total is not 0, the balance will be updated accordingly.

The ResponseBody will return:

{"code":0,"message":"Credits have been applied to the invoice(s).","apply_to_invoices":{"invoices":[{"Invoice_Id":"576438000000105717","amount_applied":445.200,"apply_date":"2021-06-14"},":[{"Invoice_Id":"576438000000105718","amount_applied":100.00,"apply_date":"2021-06-14"}]}}

Using the API table to list invoices credited

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000159024/invoices' AND Method = 'GET'

The ResponseBody is:

{
         "code":0,
         "message":"success",
         "invoices_credited":[
         {
         "creditnote_id":"576438000000159024",
         "Invoice_Id":"576438000000105717",
         "creditnote_Invoice_Id":"576438000000159064",
         "date":"2021-06-14",
         "invoice_number":"39439",
         "creditnote_number":"CN-00005",
         "credited_amount":445.20
         }
         ]
         }

Using the API table to delete invoices credited

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000159024/invoices' AND Method = 'DELETE'

The ResponseBody returns the message Credits applied to an invoice have been deleted.

Using the API table to add a comment to a credit note

Use this JSON data format for the comment:

{
         "description":"Testing a comment description"
         }

Then send this to Zoho Books through the API table by using:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000159024/comments' AND Method = 'POST' AND RequestBody = 'JSON DATA'

The ResponseBody will return:

{"code":0,"message":"Comments added.","comment":{"comment_id":"576438000000162035","comment_type":"internal","creditnote_id":"576438000000159024","comments_html_format":"Testing a comment description","description":"Testing a comment description","commented_by_id":"576438000000049001","commented_by":"zoho1","date":"2024-07-03"}}

Using the API table to list credit note comments and history

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/creditnotes/576438000000159024/comments' AND Method = 'GET'

The ResponseBody is:

{
         "code":0,
         "message":"success",
         "comments":[
         {
         "comment_id":"576438000000162035",
         "creditnote_id":"576438000000159024",
         "comments_html_format":"Testing a comment description",
         "description":"Testing a comment description",
         "commented_by_id":"576438000000049001",
         "commented_by":"zoho1",
         "comment_type":"internal",
         "date":"2024-07-03",
         "date_description":"3 minutes ago",
         "time":"4:55 AM",
         "operation_type":"",
         "transaction_id":"",
         "transaction_type":""
         },
         {
         "comment_id":"576438000000159066",
         "creditnote_id":"576438000000159024",
         "description":"Credits applied to invoice 39439",
         "commented_by_id":"576438000000049001",
         "commented_by":"zoho1",
         "comment_type":"system",
         "date":"2024-07-02",
         "date_description":"19 hours ago",
         "time":"9:13 AM",
         "operation_type":"Added",
         "transaction_id":"576438000000159064",
         "transaction_type":"creditnote_invoice"
         },
         {
         "comment_id":"576438000000159034",
         "creditnote_id":"576438000000159024",
         "description":"Credit note created for $445.20",
         "commented_by_id":"576438000000049001",
         "commented_by":"zoho1",
         "comment_type":"system",
         "date":"2024-07-01",
         "date_description":"yesterday",
         "time":"6:02 AM",
         "operation_type":"Added",
         "transaction_id":"",
         "transaction_type":"creditnote"
         }
         ]
         }

Currency

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

You can create a new currency with:

INSERT INTO Currency (Currency_Code, Currency_Name, Currency_Symbol, Price_Precision, Currency_Format) VALUES ('UAH' , 'Ukraine Hryvnia' , '₴', '2' , '1,234,567.89')

UPDATE statements

You can update a currency with:

UPDATE Currency SET Currency_Name = 'Ukraine Hryvnia' WHERE Currency_Code = 'UAH'

DELETE statements

You can delete a currency with:

DELETE FROM Currency WHERE Currency_Code = 'UAH'

Or you can use the API table instead:

SELECT * FROM API WHERE URL = 'books/v3/settings/currencies/579676000000122020' AND Method = 'DELETE'

Using the API table to create an exchange rate

First create some JSON data that contains:

{
         "effective_date":"2024-02-01",
         "rate":1.521234
         }

Then send it by using the API table:

SELECT * FROM API WHERE URL = 'books/v3/settings/currencies/579676000000121014/exchangerates' AND Method = 'POST' AND RequestBody = 'JSON Data'

The ResponseBody will contain the exchange_rate_id.

Using the API table to update an exchange rate

To update an exchange rate, use the JSON data in the format shown earlier and send it to Zoho Books with:

SELECT * FROM API WHERE URL = 'books/v3/settings/currencies/579676000000121004/exchangerates/579676000000122004' AND Method = 'PUT' AND RequestBody = 'JSON Data'

The second Id value in the URL is the exchange_rate_id of the record you want to update.

Using the API table to list exchange rates

To do this, either use the exchange_rate_id as part of the URL:

SELECT * FROM API WHERE URL = 'books/v3/settings/currencies/579676000000121014/exchangerates/579676000000122031' AND Method = 'GET'

Or use:

SELECT * FROM API WHERE URL = 'books/v3/settings/currencies/579676000000121014/exchangerates' AND Method = 'GET'

Note If you try the second method, you'll find that the rate returned does not match the rate returned by using the first method. I have reported this issue to Zoho Books support (5-Aug-2024). If the status changes, I'll update this document to reflect that.

Customer_Payments

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

To create new payments, first create the JSON data for the invoice details to be paid:

[
         {
         "Invoice_Id":"576438000000104809",
         "invoice_number":"39440",
         "date":"2024-07-03",
         "invoice_amount":"373.76",
         "amount_applied":"373.76",
         "balance_amount":"0"
         }
         ]

You can pay several invoices at once by adding a new block to the array such as [{Inv 1},{Inv 2],{Inv n}].

Then run the INSERT statement:

INSERT INTO Customer_Payment(Customer_Id, Payment_Mode, Amount, Invoices) VALUES ('576438000000072770', 'cash', 373.76, 'JSON DATA')

UPDATE statements

You can update all columns. Here's an example of updating a description:

UPDATE Customer_Payment SET Description = 'Customer paid at till' WHERE Payment_Id = '576438000000168003'

DELETE statements

Use something like:

DELETE FROM Customer_Payment WHERE Payment_Id = '576438000000168003'

Or:

SELECT * FROM API WHERE url = 'books/v3/customerpayments/579676000000107086' AND Method = 'DELETE'

Using the API table to refund an excess customer payment

Create some JSON data containing the refund details:

{
         "date":"2024-07-03",
         "refund_mode":"cash",
         "amount":1000,
         "from_account_id":"576438000000000346"
         }

Then:

SELECT * FROM API WHERE URL = 'books/v3/customerpayments/576438000000172004/refunds' AND Method = 'POST' AND RequestBody = 'JSON DATA'

The ResponseBody contains:

The refund information for this payment has been saved.

Using the API table to update a refund

These work in the same way as described in Refund an excess customer payment, but in the SQL, change the Method from POST to PUT.

Using the API table to retrieve refund details

SELECT * FROM API WHERE URL = 'books/v3/customerpayments/576438000000172004/refunds' AND Method = 'GET'

The ResponseBody will contain a JSON list of refunds against the Payment_Id sent.

Using the API table to delete a refund

SELECT * FROM API WHERE URL = 'books/v3/customerpayments/576438000000172004/refunds' AND Method = 'DELETE'

The Delivery_Challan

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

You can create a new record by firstly creating the JSON data required for the line item details:

[
 {
      "description":"A5 Notepad",
      "rate":9.99,
      "quantity":3
 }
]

Then run the INSERT statement:

INSERT INTO Delivery_Challan ([Date], Challan_Type, Reference_Number, Currency_Code, Customer_Id, Tax_Treatment, Place_Of_Supply, Line_Items) VALUES ('2024-09-01' , 'job work' , 'DelChallan2' , 'BHD' , '633066000000053001' , 'vat_registered' , 'BH' , '{"description":"A5 Notepad","rate":9.99,"quantity":3}')

UPDATE statements

This example adds an additional line to the Line_Item column. First, I change the JSON data from the INSERT example to have two lines:

[
 {
      "account_id":"548752000000000430",
      "description":"A5 Notepad",
      "rate":9.99,
      "quantity":3
 },
 {
      "account_id":"548752000000000430",
      "description":"A3 Paper box 100",
      "rate":9.99,
      "quantity":1
 }
]

Then:

UPDATE Delivery_Challan SET line_item = 'JSON Data' WHERE deliverychallan_id = '576438000000176002'

DELETE statements

DELETE FROM Delivery_Challan WHERE deliverychallan_id = '633066000000051395'

Using the API table to mark an item as delivered or returned

SELECT * FROM API WHERE URL = 'books/v3/deliverychallans/633066000000051423/status/X?organization_id=20100804129' AND Method = 'POST'

where X is one of:

Value Description
delivered Mark as delivered.
returned Mark as returned.

Employee

Supports: SELECT and INSERT

SELECT statements

If you use the Name column in the WHERE clause:

SELECT * FROM Employee WHERE Name = 'Easysoft Support'

The columns are returned, but the Email column is always sent back from the API containing NULL.

If you pass in the Employee_Id, you get back:

SELECT * FROM Employee WHERE Employee_Id = '576438000000109002'

You'll get this error from the Zoho Books API:

Error <37: The HTTP method GET is not allowed for the requested resource>.

INSERT statement

INSERT statements are supported. For example:

INSERT INTO Employee (Name, Email) VALUES ('Easysoft Support 2','support2@easysoft.com')

Inserting the same email address results in the error:

Code: 118356
Message: Employee has already been enrolled with support@easysoft.com

Inserting the same name is valid as long as the email is not already in the table.

Deleting employees

According to the Xero Books API documentation, you should be able to delete an employee. However, the example they give does not work and also does not specify which employee they are deleting.

Estimate

Supports: SELECT, INSERT, UPDATE, and DELETE

An estimate is a quote or a proposal for the products you sell or the services you render to your clients to take your business forward.

INSERT statements

In this example, I'm going to insert four lines in groups of two. Two of the lines will have a discounted percentage applied. To do this, I first create the Line_Items as JSON Data:

[
 {
      "header_name":"Leads",
      "description":"USB-C",
      "rate":2.75,
      "quantity":33,
      "discount":"5.00%",
      "tax_id":"576438000000056007"
 },
 {
      "header_name":"Leads",
      "description":"USB-B",
      "rate":0.68,
      "quantity":127,
      "discount":"11.5%",
      "tax_id":"576438000000056007"
 },
 {
      "header_name":"Paper",
      "description":"A4 (5 x per box)",
      "rate":9.99,
      "quantity":5,
      "tax_id":"576438000000056007"
 },
 {
      "header_name":"Paper",
      "description":"A5 (10 x per box)",
      "rate":6.87,
      "quantity":12,
      "tax_id":"576438000000056007"
 }
]

To group each item, header_name must be used for each of the items added. In this example the tax_id is the Id of my 10% tax. Note there are no total values that need to be supplied, rate, quantity, and tax_id are all that's needed. discount is optional.

Then send that to Zoho Books by using:

INSERT INTO Estimate ([Date], Customer_Id, Line_Items) VALUES ('2024-07-08' , '576438000000059096' , 'JSON DATA')

The estimate_number number will automatically be inserted by Zoho Books with the next new number in the sequence. Keep in mind that if you delete an estimate, the number will not be freed up. Square brackets are only needed round columns that are reserved words such as date.

UPDATE statements

Let's say you need to change the quantity of the A5 paper line in the previous insert. To do this, change the JSON data and send with an UPDATE query:

UPDATE Estimate SET Line_Items = 'JSON Data' WHERE Estimate_Id = '576438000000182002'

The total and tax totals are automatically updated by Zoho.

To remove or add a line, alter the JSON data and send the update again.

DELETE statements

This example deletes all estimates on a given date:

DELETE FROM Estimate WHERE [Date] = '2024-07-08'

To do this by using the API table:

SELECT * FROM API WHERE URL = 'books/v3/estimates/579676000000107086' AND Method = 'DELETE'

Using the API table to mark an estimate as sent, accepted, or declined

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/estimates/576438000000182002/status/X' AND Method = 'POST'

where X is one of:

Value Description
sent Mark a draft estimate as sent.
accepted Mark a sent estimate as accepted if the customer has accepted it.
declined Mark a sent estimate as declined if the customer has rejected it.

If Zoho Books is configured to automatically generate invoices when a quote is accepted, setting the status to accepted results in this response:

Code: 200
ResponseType: application/json;charset=UTF-8
ResponseBody:  
{
      "code":0,
      "message":"Quote status has been changed to Invoiced.",
      "data":{
           "Invoice_Id":"576438000000199003"
      }
}

Using the API table to email an estimate

First, create the JSON data contain the email details you want to use to send the data.

{
      "to_mail_ids":[
           "test@easysoft.com",
           "annother@easysoft.com"
      ],
      "cc_mail_ids":[
           "support@easysoft.com"
      ],
      "subject":"Test credit note from ZB",
      "body":"This is a test body text to check the example code."
}

To get Zoho Books to send the email:

SELECT * FROM API WHERE URL = 'books/v3/estimates/576438000000189001/email/' AND Method = 'POST' AND RequestBody = 'JSON_DATA'

The ResponseBody contains:

{"code":0,"message":"Your quote has been sent."}

Using the API table to email multiple estimates

Emailing multiple estimates only works if all the estimates in Zoho Books have a contact person assigned to the estimate_id values you pass in:

SELECT * FROM API WHERE URL = 'books/v3/estimates/email/?estimate_ids=576438000000189001,576438000000189019' AND Method = 'POST'

576438000000189001,576438000000189019 is a list of comma separated Estimate_Id values. You can specify up to a 10 of these.

The ResponseBody will contain:

{"code":0,"message":"Your mails are scheduled to be sent in a few minutes. We will notify you once it is done."}

If you pass in an invalid estimate_id or there's another problem, the only way feedback you get is on the Zoho Books web site under the Notificationssection. This section will contain something like:

We're facing a roadblock while sending Estimates. Unable to send the following Estimate(s) as no contact person was associated to it: QT-000008, QT-000009.

Using the API table to bulk export estimates

This API call returns up to 25 estimates in a single PDF:

SELECT ResponseBody FROM api WHERE url = 'books/v3/estimates/email/pdf?estimate_ids=576438000000189002,576438000000189019' AND Method = 'GET'

The ResponseBody contains a single PDF in Base64 encoded format.

Using the API table to bulk print estimates

This API call returns up to 25 estimate details in one go.

SELECT ResponseBody FROM api WHERE url = 'books/v3/estimates/email/?estimate_ids=576438000000189002,576438000000189019' AND Method = 'GET'

Any estimate_id values passed in that are not valid are ignored and only valid entries are returned in the ResponseBody:

{
      "code":0,
      "message":"success",
      "estimates":[
           {
                "estimate_id":"576438000000189019",
                "zcrm_potential_id":"",
                "zcrm_potential_name":"",
                "customer_name":"Pension Funds - USD",
                "customer_id":"576438000000059096",
                "company_name":"Pension Funds - USD",
                "status":"sent",
                "color_code":"",
                "current_sub_status_id":"",
                "current_sub_status":"sent",
                "estimate_number":"QT-000009",
                "reference_number":"",
                "date":"2024-07-09",
                "currency_id":"576438000000000059",
                "Currency_Code":"USD",
                "total":324.53,
                "created_time":"2024-07-10T05:05:18-0400",
                "last_modified_time":"2024-07-10T06:39:38-0400",
                "accepted_date":"",
                "declined_date":"",
                "expiry_date":"",
                "has_attachment":false,
                "is_viewed_by_client":false,
                "client_viewed_time":"",
                "is_emailed":true,
                "is_viewed_in_mail":false,
                "template_type":"",
                "template_id":"",
                "mail_first_viewed_time":"",
                "mail_last_viewed_time":"",
                "salesperson_id":"",
                "salesperson_name":""
           }
      ],
      "page_context":{
           "page":1,
           "per_page":200,
           "has_more_page":false,
           "report_name":"Quotes",
           "applied_filter":"Status.All",
           "sort_column":"created_time",
           "sort_order":"D",
           "search_criteria":[
                {
                     "column_name":"estimate_ids",
                     "search_text_0":"576438000000189002",
                     "search_text_1":"576438000000189019",
                     "search_text_formatted_0":"576438000000189002",
                     "search_text_formatted_1":"576438000000189019",
                     "comparator":"in"
                }
           ]
      }
}

Using the API table to add comments to an estimate

This API call lets you add a comment to an estimate and chose whether you want your customer to be able to refer to that comment. First, create the JSON for the comment:

{
      "description":"PDF sent to customer 10-Jul-2024",
      "show_comment_to_clients":true
}

Send the comment:

SELECT ResponseBody FROM api WHERE url = 'books/v3/estimates/576438000000189019/comments' AND Method = 'POST' AND RequestBody = 'JSON Data'

The ResponseBody contains the message Comments added.

Using the API table to list comments and history for an estimate

This API call lists all the comments and history for the Estimate_Id sent.

SELECT ResponseBody FROM api WHERE url = 'books/v3/estimates/576438000000189019/comments' AND Method = 'GET'

Data is returned in descending date order:

{
      "code":0,
      "message":"success",
      "comments":[
           {
                "comment_id":"576438000000195002",
                "estimate_id":"576438000000189019",
                "description":"PDF sent to customer 10-Jul-2024",
                "commented_by_id":"576438000000049001",
                "commented_by":"zoho1",
                "comment_type":"user",
                "date":"2024-07-11",
                "date_description":"4 minutes ago",
                "time":"3:11 AM",
                "operation_type":"",
                "transaction_id":"",
                "transaction_type":""
           },
           {
                "comment_id":"576438000000192045",
                "estimate_id":"576438000000189019",
                "description":"Quote emailed to test@easysoft.com",
                "commented_by_id":"576438000000049001",
                "commented_by":"zoho1",
                "comment_type":"system",
                "date":"2024-07-10",
                "date_description":"17 hours ago",
                "time":"9:23 AM",
                "operation_type":"updated",
                "transaction_id":"",
                "transaction_type":"email"
           },
           {
                "comment_id":"576438000000191018",
                "estimate_id":"576438000000189019",
                "description":"Quote updated.",
                "commented_by_id":"576438000000049001",
                "commented_by":"zoho1",
                "comment_type":"system",
                "date":"2024-07-10",
                "date_description":"20 hours ago",
                "time":"6:38 AM",
                "operation_type":"updated",
                "transaction_id":"",
                "transaction_type":"estimate"
           },
           {
                "comment_id":"576438000000189039",
                "estimate_id":"576438000000189019",
                "description":"Quote marked as sent",
                "commented_by_id":"576438000000049001",
                "commented_by":"zoho1",
                "comment_type":"system",
                "date":"2024-07-10",
                "date_description":"21 hours ago",
                "time":"5:32 AM",
                "operation_type":"updated",
                "transaction_id":"",
                "transaction_type":"estimate"
           },
           {
                "comment_id":"576438000000189029",
                "estimate_id":"576438000000189019",
                "description":"Quote created for $324.53",
                "commented_by_id":"576438000000049001",
                "commented_by":"zoho1",
                "comment_type":"system",
                "date":"2024-07-10",
                "date_description":"22 hours ago",
                "time":"5:05 AM",
                "operation_type":"Added",
                "transaction_id":"",
                "transaction_type":"estimate"
           }
      ]
}

Using the API table to DELETE comments

This API call deletes the estimate comment based on the Estimate_Id and the Comment_Id:

SELECT * FROM API WHERE URL = 'books/v3/estimates/576438000000189019/comments/576438000000198001' AND Method = 'DELETE'
         Code: 200
         ResponseType: application/json;charset=UTF-8
         ResponseBody: {"code":0,"message":"The comment has been deleted."}

Expense

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

First, create the JSON data for the expense:

[
      {
           "account_id":"576438000000000406",
           "account_name":"Air Travel Expense",
           "description":"New York to LA",
           "tax_amount":10,
           "tax_type":"tax",
           "tax_percentage":10,
           "item_total":100,
           "amount":110,
           "item_order":1
      },
      {
           "account_id":"576438000000000406",
           "account_name":"Air Travel Expense",
           "description":"LA to Miami",
           "tax_amount":30,
           "tax_type":"tax",
           "tax_percentage":10,
           "item_total":300,
           "amount":330,
           "item_order":2
      }
]

Then run the INSERT statement:

INSERT INTO Expense (Transaction_Type, Account_Id, Account_Name, Vendor_Id, Vendor_Name, Currency_Code, Line_Items) VALUES ('expense' , '576438000000000406' , 'Air Travel Expense' , '576438000000166003' , 'Air Travel USA' , 'USD' , 'JSON DATA')

UPDATE statements

You can update some of the columns but only if the expense in question is not itemized. If you try to edit one of these Zoho Books, returns Error <115124: Itemized expense cannot be edited.>

UPDATE Expense SET [Date] = '2024-07-01' WHERE Expense_Id = '576438000000170042'

DELETE statements

Use something like:

DELETE FROM Expense WHERE Expense_Id = '576438000000168003'

Or by using the API table:

SELECT * FROM API WHERE URL = 'books/v3/expenses/579676000000113002' AND Method = 'DELETE'

Using the API table to get expense receipts

To do this by using the API table:

SELECT Code, ResponseType, ResponseBody FROM api WHERE url = 'books/v3/expenses/576438000000170042/receipt' AND Method = 'GET'

The ResponseBody column contains the data Base64 encoded. The ResponseType denotes the type of receipt downloaded.

Using the API table to delete expense receipts

To do this by using the API table:

SELECT Code, ResponseType, ResponseBody FROM api WHERE url = 'books/v3/expenses/576438000000170042/receipt' AND Method = 'DELETE'

Invoice

Supports: SELECT, INSERT, UPDATE, and DELETE

SELECT statement

The Zoho Books Invoices API call lets get data back in JSON, HTML, or PDF. For example:

SELECT * FROM API WHERE URL = 'books/v3/invoices/576438000000197002/?accept=pdf' AND Method = 'GET'

Valid values for accept are json, pdf, or html.

INSERT, UPDATE, and DELETE statements

Except for changing the SQL table name from Estimate to Invoice, invoice works in exactly the same way as documented in this section.

UPDATE statements

Let's say you need to change the quantity of a line in the Line_Items column:

{
           "line_item_id":"576438000000205017",
           "tax_name":"10% Tax",
           "item_order":8,
           "quantity":2.0,
           "header_name":"Storage",
           "description":"8TB Surveillance Hard Drive",
           "account_id":"576438000000000376",
           "rate":169.13999999999999,
           "tax_id":"576438000000056007",
           "bcy_rate":169.13999999999999,
           "account_name":"Sales",
           "pricing_scheme":"unit",
           "header_id":"576438000000197034",
           "tax_type":"tax",
           "tax_percentage":10,
           "item_total":338.27999999999997,
           "line_item_taxes":[
                {
                     "tax_id":"576438000000056007",
                     "tax_name":"10% Tax (10%)",
                     "tax_amount":33.810000000000002
                }
           ]
}

Alter the data and send it back by using:

UPDATE Invoice SET Line_Items = 'JSON DATA' WHERE Invoice_Id = '576438000000205001'

Running SELECT * FROM LastId after this update returns:

Code: 0
Message: Invoice information has been updated.
Operation: UPDATE
Api: invoice
Key: Invoice_Id
Value: 576438000000205001

Delete an invoice

DELETE FROM Invoice WHERE Invoice_Id = '576438000000205001'

Running SELECT * FROM LastId after this update returns:

Code: 0
Message: The invoice has been deleted.
Operation: DELETE
Api: invoice
Key: Invoice_Id
Value: 576438000000205001
FullMessage: {"code": 0, "message": "The invoice has been deleted."}

Using the API table to approve an invoice

Depending on your Zoho Books settings, invoices might have to be approved before they can be sent:

SELECT * FROM API WHERE URL = 'books/v3/invoices/576438000000206025/approve

API response columns:

Code: 201
ResponseType: application/json;charset=UTF-8
ResponseBody:  
{
      "code":0,
      "message":"The invoice(s) has been approved successfully."
}

Using the API table to mark invoices as sent, void, or draft

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/invoices/576438000000206025/status/X' AND Method = 'POST'

where X is one of:

Value Description
sent Mark a draft invoice as sent.
void Mark an invoice status as void.
draft Mark a void invoice as draft.

The ResponseBody is:

Code: 201
ResponseType: application/json;charset=UTF-8
ResponseBody:
{
      "code":0,
      "message":"The invoice(s) has been approved successfully."
}

Using the API table to email an invoice

Create some JSON data that specifies the email recipients:

{
      "to_mail_ids":[
           "test1@easysoft.com",
           "test2@easysoft.com"
      ],
      "cc_mail_ids":[
           "test3@easysoft.com"
      ],
      "subject":"Invoice Email Test",
      "body":"ZB Email containing accepted Invoice"
}

The body part of the JSON can be plain text or HTML. To send the invoice:

SELECT * FROM API WHERE URL = 'books/v3/invoices/576438000000206025/email' AND Method = 'POST' AND RequestBody = 'JSON Data'

If you want the email to include the customer's statement after /email, add:

?send_customer_statement=true

Using the API table to get email sent details

SELECT * FROM API WHERE URL = 'books/v3/invoices/576438000000206025/email' AND Method = 'GET'

The ResponseBody will contain all the details about the last email sent.

Using the API table to send payment reminders

This is the same JSON_Data layout as in Using the API table to email an invoice but the API url changes at the end from /email to /paymentreminder.

Using the API table to get payment reminder email content

This is the same method as shown in Using the API table to get email sent details. In url, change the end from /email to /paymentreminder.

Using the API table to generate bulk invoice reminders

Bulk invoice reminders can only be sent to contacts added to the customer record and check on the invoice. If the invoice does not have a contact selected, you'll not be able to use Bulk Remind. Only open and overdue invoices can be bulk sent:

SELECT * FROM API WHERE URL = 'books/v3/invoices/paymentreminder?Invoice_Ids=IDs' AND Method = 'POST'

where IDs is a comma separated list of up to 10 invoice IDs. For example, 579676000000054079,579676000000050364,579676000000053106.

If this succeeds, the ResponseBody contains:

{
               "code":0,
               "message":"Success! All reminders have been sent."
         }

Otherwise, the ResponseBody returns something like:

{
      "code":0,
      "message":"Success! All reminders have been sent.",
      "info":{
           "email_errors_info":[
                {
                     "code":4083,
                     "ids":[
                          "579676000000050364",
                          "579676000000053106",
                          "579676000000053080",
                          "579676000000050312",
                          "579676000000053054",
                          "579676000000050286",
                          "579676000000053028",
                          "579676000000053002"
                     ],
                     "message":"Unable to send payment reminder as no contact person was found for the invoice(s): INV-000015,
                      INV-000014,
                      INV-000011,
                      INV-000010,
                      INV-000009,
                      INV-000007,
                      INV-000006,
                      INV-000003"
                }
           ],
           "email_success_info":{
                "message":"We were able to send 2 reminders. However, we faced a glitch while sending the rest of them.",
                "sent_count":2
           }
      }
}

Using the API table to bulk export invoices

This API call returns up to 25 estimates in a single PDF:

SELECT ResponseBody FROM api WHERE url = 'books/v3/invoices/pdf?Invoice_Ids=579676000000053002,579676000000054079,579676000000053106,' AND Method = 'GET'

The ResponseBody contains a single PDF in Base64 encoded format.

Using the API table to bulk export and print invoices

This is the same as the previous export but includes the print flag, so you're prompted with the print window when you open the PDF:

SELECT * FROM API WHERE URL = 'books/v3/invoices/print?Invoice_Ids=579676000000053002,579676000000054079,579676000000053106'

Using the API table to generate payment reminders

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/invoices/579676000000053002/paymentreminder/disable

Change disable to enable to turn on the reminder.

Using the API table to write off or cancel write off

SELECT * FROM API WHERE URL = 'books/v3/invoices/579676000000053002/writeoff' AND Method = 'POST'
SELECT * FROM API WHERE URL = 'books/v3/invoices/579676000000053002/writeoff/cancel

Using the API table to list payments

SELECT * FROM API WHERE URL = 'books/v3/invoices/579676000000050234/payments

The ResponseBody returns all the payments against the Invoice_Id sent:

{
      "code":0,
      "message":"success",
      "payments":[
           {
                "payment_id":"579676000000063535",
                "payment_number":"9",
                "Invoice_Id":"579676000000050234",
                "invoice_payment_id":"579676000000063539",
                "payment_mode":"cash",
                "description":"",
                "date":"2024-07-17",
                "reference_number":"",
                "exchange_rate":1.00,
                "amount":2000.00,
                "tax_amount_withheld":0.00,
                "online_transaction_id":"",
                "is_single_invoice_payment":true
           },
           {
                "payment_id":"579676000000060144",
                "payment_number":"10",
                "Invoice_Id":"579676000000050234",
                "invoice_payment_id":"579676000000060148",
                "payment_mode":"cash",
                "description":"",
                "date":"2024-07-17",
                "reference_number":"",
                "exchange_rate":1.00,
                "amount":2000.00,
                "tax_amount_withheld":0.00,
                "online_transaction_id":"",
                "is_single_invoice_payment":true
           }
      ]
}

Using the API table to add comments

This API call allows you to add a comment to an invoice and choose whether or not you want your customer to be able to refer to that. First, create the JSON data for the comment:

{
      "description":"Spoke to customer 22-Jul-2024",
      "show_comment_to_clients":true
}

Send the comment:

SELECT ResponseBody FROM api WHERE url = 'books/v3/invoices/579676000000050364/comments' AND Method = 'POST' AND RequestBody = 'JSON_Data'

The ResponseBody contains the message Comments added.

Using the API table to UPDATE comments

Use the same format as shown in the previous example for your JSON data.

SELECT ResponseBody FROM api WHERE url = 'books/v3/invoices/579676000000050364/comments/579676000000078003' AND Method = 'PUT' AND RequestBody = 'JSON_Data'

The second ID (579676000000078003) is the one for the comment you're updating.

Using the API table to list comments and history

This API call lists all the comments and history for the Invoice_Id sent.

SELECT ResponseBody FROM api WHERE url = 'books/v3/invoices/579676000000050364/comments' AND Method = 'GET'

Using the API table to delete comments

Use something like:

SELECT ResponseBody FROM api WHERE url = 'books/v3/invoices/579676000000050364/comments/579676000000078003' AND Method = 'DELETE'

Item

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

This example inserts an item that's purchased and sold as goods:

INSERT INTO Item ([Name], Description, Tax_Id, Item_Type, Product_Type, Unit_Id, Rate, Account_Id, Purchase_Rate, Purchase_Description, Purchase_Account_Id, Vendor_Id) VALUES ('1TB Hard Disk' , 'WD 1TB HDD 3.5"' , '579676000000050178' , 'sales_and_purchases' , 'goods' , '579676000000050038' , '299' , '579676000000000376' , '249' , '1 x WD 1TB HDD 3.5"' , '579676000000000509' , '579676000000081069')

As long as you have the IDs for the columns (vendor_id, for example) there's no need to put in the column (vendor_name, for example) as this will be automatically filled in by Zoho Books.

DELETE statements

This statement deletes all items that match a particular name:

DELETE FROM Item WHERE [Name] = '1TB Hard Disk'

You can do this by using the API table if you have the Item_Id:

SELECT * FROM API WHERE URL = 'books/v3/items/579676000000131010' AND Method = 'DELETE'

UPDATE statements

This example adds 10% onto the sales price for all goods:

UPDATE Item SET Rate=Rate*1.1 WHERE product_type = 'goods'

Using the API table to mark an invoice as active or inactive

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/items/579676000000089003/status/X' AND Method = 'POST'

where X is one of:

Value Description
active Active
inactive Inactive.

Journal

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

Create the JSON data for Line_Items. There needs to be at least one debit and one credit line:

[
      {
           "account_id":579676000000000397,
           "customer_id":579676000000050204,
           "description":"Standard cheque charge",
           "tax_id":579676000000050182,
           "debit_or_credit":"debit",
           "amount":4.99
      },
      {
           "account_id":579676000000000501,
           "customer_id":579676000000050204,
           "description":"Bank charge",
           "debit_or_credit":"credit",
           "amount":4.99
      }
]

Then send it by using:

INSERT INTO Journal (Reference_Number, Journal_Date, Journal_Type, Currency_Id, Notes, Vat_Treatment, Tax_Treatment, Product_Type, Line_Items) VALUES ('Bank charge 2' , '2024-08-06' , 'both' , '579676000000000065' , 'Standard cheque processing charge.' , 'non_eu' , 'non_eu' , 'service' , 'JSON_Data')

UPDATE statements

Alter the JSON data for Line_Items to reflect the amount you want to change. For example:

[
      {
           "account_id":579676000000000397,
           "customer_id":579676000000050204,
           "description":"Standard cheque charge",
           "tax_id":579676000000050182,
           "debit_or_credit":"debit",
           "amount":5.99
      },
      {
           "account_id":579676000000000501,
           "customer_id":579676000000050204,
           "description":"Bank charge",
           "debit_or_credit":"credit",
           "amount":5.99
      }
]

Then send the update by using:

UPDATE Journal SET Line_Items = 'JSON_Data' WHERE Journal_id = '579676000000130007'

DELETE statements

DELETE FROM Journal WHERE Journal_Id = '579676000000130007'

Or use the API table:

SELECT * FROM API WHERE URL = 'books/v3/journals/579676000000130007/' AND Method = 'DELETE'

Using the API table to mark a journal as published

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/journals/579676000000130007/status/publish' AND Method = 'POST'

Opening_Balance

Supports: SELECT, INSERT, UPDATE, and DELETE

This table contains one row of data when you have customers, suppliers, or accounts with opening balances only. All the opening balances for customers, suppliers, and accounts are in the JSON data in the Accounts column. This JSON data shows the total amount for each account. If you have more than one customer with an opening balance and you need to find out a particular customer's opening balance, check the Contact table's Opening_Balance_Amount column instead.

INSERT statements

You can only insert one record into the opening balance table. If you already have a record in there you need to update it. To insert the first record, first, create the JSON data:

[
      {
           "account_id":579676000000138031,
           "debit_or_credit":"credit",
           "exchange_rate":1,
           "currency_id":579676000000000065,
           "amount":1223441.22
      }
]

Then send it using:

INSERT INTO Opening_Balance ([date], [accounts]) values ('2024-07-16' , 'JSON Data')

UPDATE statements

Updating the opening balance accounts is a little tricky as the data returned in the Accounts column has all the opening balance details for bank accounts, customers, and suppliers. For example:

[
      {
           "accounts_list": [
                {
                     "bcy_amount_formatted": "£ 1,223,441.22",
                      "branch_id": "",
                      "exchange_rate": 1.0,
                      "product_name": "",
                      "Currency_Code": "GBP",
                      "debit_or_credit": "credit",
                      "product_id": "",
                      "account_split_id": "579676000000142036",
                      "account_id": "579676000000138031",
                      "product_stock_rate": 0,
                      "product_stock_rate_formatted": "£ 0.00",
                      "product_stock": 0,
                      "bcy_amount": 1223441.22,
                      "account_name": "Test Bank Account",
                      "branch_name": "",
                      "currency_id": "579676000000000065"
                },
                 {
                     "bcy_amount_formatted": "£ 14, 400.00",
                      "branch_id": "",
                      "exchange_rate": 1.2,
                      "product_name": "",
                      "Currency_Code": "USD",
                      "debit_or_credit": "credit",
                      "product_id": "",
                      "account_split_id": "579676000000142038",
                      "account_id": "579676000000107014",
                      "product_stock_rate": 0,
                      "product_stock_rate_formatted": "£ 0.00",
                      "product_stock": 0,
                      "bcy_amount": 14400.0,
                      "account_name": "Test COOP USD 32",
                      "branch_name": "",
                      "currency_id": "579676000000000059"
                }
           ],
            "account_type": "asset",
            "account_type_formatted": "Asset"
      },
       {
           "accounts_list": [
                {
                     "debit_or_credit": "debit",
                      "product_name": "",
                      "bcy_amount_formatted": "£ 299.00",
                      "account_id": "579676000000000352",
                      "product_stock_rate": 0,
                      "product_stock_rate_formatted": "£ 0.00",
                      "product_stock": 0,
                      "bcy_amount": 299.0,
                      "product_id": "",
                      "account_name": "Accounts Receivable"
                }
           ],
            "account_type": "accounts_receivable",
            "account_type_formatted": "Accounts Receivable"
      },
       {
           "accounts_list": [
                {
                     "bcy_amount_formatted": "£ 1,
                     237,
                     542.22",
                      "branch_id": "",
                      "exchange_rate": 1.0,
                      "product_name": "",
                      "Currency_Code": "GBP",
                      "debit_or_credit": "debit",
                      "product_id": "",
                      "account_split_id": "579676000000145099",
                      "account_id": "579676000000000499",
                      "product_stock_rate": 0,
                      "product_stock_rate_formatted": "£ 0.00",
                      "product_stock": 0,
                      "bcy_amount": 1237542.22,
                      "account_name": "Opening Balance Adjustments",
                      "branch_name": "",
                      "currency_id": "579676000000000065"
                }
           ],
            "account_type": "liability",
            "account_type_formatted": "Liability"
      }
]

It's only the first two sections that can be changed. After removing the other sections, you end up with JSON data in this format:

[
      {
           "exchange_rate":1.0,
           "debit_or_credit":"credit",
           "account_split_id":"579676000000142036",
           "account_id":"579676000000138031",
           "bcy_amount":1223441.22,
           "currency_id":"579676000000000065"
      },
      {
           "exchange_rate":1.2,
           "debit_or_credit":"credit",
           "account_split_id":"579676000000142038",
           "account_id":"579676000000107014",
           "bcy_amount":14400.0,
           "currency_id":"579676000000000059"
      }
]

Then use:

UPDATE Opening_Balance SET Accounts = 'JSON_Data'

If you need to adjust a customer or supplier opening balance, use:

UPDATE Contact SET Opening_Balance_Amount=299 WHERE Contact_Id = '579676000000093092'

This updates the opening balance at the Zoho Books API end.

DELETE statement

You can only delete a record if no customer or suppliers have an opening balance.

DELETE FROM Opening_Balance

Or use the API table:

SELECT * FROM API WHERE URL = 'books/v3/settings/openingbalances/' AND Method = 'DELETE'

Organization

Supports: SELECT, INSERT, UPDATE, and DELETE

This table can be used to create, amend, and delete organizations in Zoho Books. There is currently no Zoho Books API documentation on this API call.

INSERT statements

This appears to be the minimum needed to create a new organization:

INSERT INTO Organization ([Name], Contact_Name, Email, Version, Currency_Code, Time_Zone, Address_State_Code) VALUES ('ESL Two (India)' , 'zoho2' , 'zoho2@fastphotography.co.uk' , 'india' , 'INR' , 'Asia/Calcutta' , 'CG')

UPDATE statements

This changes the first line in the organization's address:

UPDATE Organization SET Address_Street_Address1 = 'Building 1' WHERE organization_id = '20100387237'

DELETE statements

Use something like:

DELETE FROM Organization WHERE Organization_Id = '20100386941'

This can also be done by calling the API table:

SELECT * FROM API WHERE URL = 'books/v3/organizations/20100386834' AND Method = 'DELETE'

Project

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

To create a project:

INSERT INTO Project (Project_Name, Customer_Id, Currency_Id, Billing_Rate_Frequency, Billing_Type, Rate, Description) VALUES ('PROJ-00002' , '579676000000093092' , '579676000000000059' , 'hourly' , 'based_on_project_hours' , '99.99' , 'Create Zoho Books API Examples')

UPDATE statements

This changes the rate:

UPDATE Project SET Rate=110 WHERE project_id = '579676000000151003'

DELETE statements

Use something like:

DELETE FROM Project WHERE project_id = '579676000000151003'

This can also be done with the API table:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000152003?organization_id=20099941201' AND Method = 'DELETE'

Using the API table to mark a project as active or inactive

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/X' AND Method = 'POST'

where X is one of:

Value Description
inactive Make inactive.
active Activate.

Using the API table to clone projects

Create the JSON data for the project to clone:

{
               "project_name":"PROJ-00003",
               "description":"Cloned Example"
}

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/clone?organization_id=20099941201' AND Method = 'POST' AND RequestBody = 'JSON_Data'

Using the API table to invite users to a project

Create JSON data in the form:

{
               "user_name":"Paul West",
               "email":"test27@easysoft.com",
               "user_role":"staff",
               "rate":"0",
               "budget_hours":"0",
               "cost_rate":"35"
         }

Then use something like:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/users/invite?organization_id=20099941201' AND Method = 'POST' AND RequestBody = 'JSON_Data'

Using the API table to list invited users

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/users?organization_id=20099941201' AND Method = 'GET'

Only users that have accepted the invitation are listed.

Using the API table to assign users to a project

Assigns an existing user to a project. First, create the list of users in some JSON data:

{
               "users":[
                    {"user_id":"579676000000156001"},
                    {"user_id":"579676000000155001"},
                    {"user_id":"579676000000050001"}
               ],
               "cost_rate":100
          }

The cost_rate is also required. Any number of users can be added at once. Then send it through the API table:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/users?organization_id=20099941201' AND Method = 'POST' AND RequestBody = 'JSON Data'

Using the API table to update a project user

Create JSON data in the form:

{
               "user_role":"admin"
         }

You only need to put in the items that need to be updated. Send the JSON data to the API by using:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/users/579676000000156001?organization_id=20099941201' AND Method = 'PUT' AND RequestBody = 'JSON_Data'

The second ID (579676000000156001) is the user_id of the user you want to update.

Using the API table to get a project user's details

To do this, pass in the user_id. SELECT it from the API by using:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/users/579676000000156001?organization_id=20099941201' AND Method = 'GET'

Using the API table to delete a project user

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000149075/users/579676000000156001?organization_id=20099941201' AND Method = 'DELETE'

Purchase_Order

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

Create the JSON data for Line_Items:

[
               {
                    "description":"2TB Hard Disk",
                    "rate":99,
                    "quantity":3,
                    "account_id":"579676000000000415",
                    "tax_id":"579676000000050178"
               }
          ]

Then send it by using:

INSERT INTO Purchase_Order (Vendor_Id, [Date], Line_Items) VALUES ('579676000000081069' , '2024-07-30' , 'JSON Data')

If you leave out the Purchaseorder_Number column, this will be auto populated with the next number in the sequence.

UPDATE statements

This example changes the quantity from 3 to 4:

UPDATE Purchase_Order SET Line_Items=REPLACE(Line_Items,'{"quantity": 3','{"quantity": 4') WHERE purchaseorder_id = '579676000000092047'

DELETE statements

Use something like:

DELETE FROM Purchase_Order WHERE PurchaseOrder_Id = '579676000000092047'

Alternatively, use the API table. For example:

SELECT * FROM API WHERE URL = 'books/v3/purchaseorders/579676000000091014' AND Method = 'DELETE'

Using the API table to mark a purchase order as open, billed, or cancelled

Call the API table by using:

SELECT * FROM API WHERE URL = 'books/v3/purchaseorders/579676000000089003/status/X' AND Method = 'POST'

where X is one of:

Value Description
open Mark as open.
billed Mark as billed. This only works if the purchase order you created can be billed to a customer.
cancelled Cancel a purchase order.

Using the API table to submit or approve purchase orders

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/purchaseorders/579676000000089003/X' AND Method = 'POST'

where X is one of:

Value Description
submit Submit for approval.
approve Approve a credit note.

Submit and approve only work if they have been turned on in the Zoho Books company that you're connecting to.

Using the API table to add purchase order comments

Create the JSON data containing the comment:

{
               "description":"Spoke to customer 22-Jul-2024"
         }

Then use the API table to send it:

SELECT ResponseBody FROM api WHERE url = 'books/v3/purchaseorders/579676000000088014/comments' AND Method = 'POST' AND RequestBody = 'JSON_Data'

If successful, the ResponseBody will contain:

{
               "code":0,
               "message":"Comments added.",
               "comment":{
                    "comment_id":"579676000000107005",
                    "purchaseorder_id":"579676000000088014",
                    "comments_html_format":"Spoke to customer 22-Jul-2024",
                    "description":"Spoke to customer 22-Jul-2024",
                    "commented_by_id":"579676000000050001",
                    "commented_by":"zoho2",
                    "comment_type":"internal",
                    "date":"2024-08-01",
                    "date_description":"few seconds ago",
                    "time":"8:30 AM"
               }
         }

To update the comment, change the JSON data and use the API table to send it. Include the comment ID:

SELECT ResponseBody FROM api WHERE url = 'books/v3/purchaseorders/579676000000088014/comments/579676000000116023' AND Method = 'POST' AND RequestBody = 'JSON_Data'

To delete a comment:

SELECT ResponseBody FROM api WHERE url = 'books/v3/purchaseorders/579676000000088014/comments/579676000000107005' AND Method = 'DELETE'

Recurring_Bill

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

You can create a new recurring bill by creating the JSON data required for the line item details:

[
               {
                    "account_id":"548752000000000430",
                    "description":"A5 Notepad",
                    "rate":9.99,
                    "quantity":3
               }
         ]

Then run the INSERT statement:

INSERT INTO Recurring_Bill (Recurrence_Name, Start_Date, End_Date, Recurrence_Frequency, Repeat_Every, Vendor_Id, Line_Items) VALUES ('A5 notepads' , '2024-07-08' , '2026-12-12' , 'months' , '1' , '548752000000052031' , 'JSON Data')

recurrence_name values need to be unique.

UPDATE statements

This example adds an additional line to the Line_Item column:

[
               {
                    "account_id":"548752000000000430",
                    "description":"A5 Notepad",
                    "rate":9.99,
                    "quantity":3
               },
               {
                    "account_id":"548752000000000430",
                    "description":"A3 Paper box 100",
                    "rate":9.99,
                    "quantity":1
               }
          ]

Then use:

UPDATE Recurring_Bill SET Line_Item = 'JSON Data' WHERE Recurring_Bill_Id = '576438000000176002'

DELETE statements

DELETE FROM Recurring_Bill WHERE Recurring_Bill_Id = '576438000000176002'

Using the API table to stop a recurring expense

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringbills/576438000000180001/status/stop' AND Method = 'POST'

Using the API table to resume a recurring expense

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringbills/576438000000180001/status/resume' AND Method = 'POST'

The ResponseBody message is "The recurring expense has been activated."

Using the API table to list recurring bill history

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringbills/576438000000173123/comments' and Method = 'GET'

Recurring_Expense

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

To create a new recurring expense, first create the JSON data required for the line item details:

[
               {
                    "account_id":"576438000000173094",
                    "account_name":"Cleaning",
                    "description":"Weekly Outside Window Clean",
                    "amount":100
               }
          ]

Then run the INSERT statement:

INSERT INTO Recurring_Expense (Recurrence_Name, Start_Date, End_Date, Recurrence_Frequency, Repeat_Every, Vendor_Id, Paid_Through_Account_Id, Line_Item) VALUES ('Window Clean' , '2024-07-08' , '2024-12-12' , 'weeks' , '1' , '576438000000173100' , '576438000000118006' , 'JSON DATA')

Recurrence_Name values need to be unique.

UPDATE statements

This example adds an additional line to the Line_Item column. Create the JSON data:

[
               {
                    "account_id":"576438000000173094",
                    "account_name":"Cleaning",
                    "description":"Weekly Outside Window Clean",
                    "amount":100
               },
               {
                    "account_id":"576438000000173094",
                    "account_name":"Cleaning",
                    "description":"Weekly Inside Window Clean",
                    "amount":150
               }
         ]

then:

UPDATE Recurring_Expense SET Line_Item = 'JSON Data' WHERE Recurring_Expense_Id = '576438000000176002'

The Recurring_Expense table does support multiple lines and the total gets increased. However, you can only refer to item lines two and beyond if you select the data through the Zoho Books API.

DELETE statements

DELETE FROM Recurring_Expense WHERE Recurring_Expense_Id = '576438000000176002'

Using the API table to stop recurring expense

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringexpenses/576438000000180001/status/stop' AND Method = 'POST'

The ResponseBody message is "The recurring expense has been stopped."

Using the API table to resume recurring expenses

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringexpenses/576438000000180001/status/resume' AND Method = 'POST'

The ResponseBody message says "The recurring expense has been activated."

Using the API table to list child expenses

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringexpenses/576438000000173123/expenses' AND Method = 'GET'

The ResponseBody returns:

{
               "code":0,
               "message":"success",
               "expensehistory":[
                    {
                         "expense_id":"576438000000173133",
                         "date":"2024-07-05",
                         "account_name":"Cleaning",
                         "vendor_name":"Clare's Cleaners",
                         "paid_through_account_name":"COOP Account 4",
                         "customer_name":"",
                         "total":63.87,
                         "status":"nonbillable"
                    },
                    {
                         "expense_id":"576438000000174001",
                         "date":"2024-07-06",
                         "account_name":"Cleaning",
                         "vendor_name":"Clare's Cleaners",
                         "paid_through_account_name":"COOP Account 4",
                         "customer_name":"",
                         "total":64.05,
                         "status":"nonbillable"
                    },
                    {
                         "expense_id":"576438000000175001",
                         "date":"2024-07-07",
                         "account_name":"Cleaning",
                         "vendor_name":"Clare's Cleaners",
                         "paid_through_account_name":"COOP Account 4",
                         "customer_name":"",
                         "total":63.98,
                         "status":"nonbillable"
                    },
                    {
                         "expense_id":"576438000000175047",
                         "date":"2024-07-08",
                         "account_name":"Cleaning",
                         "vendor_name":"Clare's Cleaners",
                         "paid_through_account_name":"COOP Account 4",
                         "customer_name":"",
                         "total":64.12,
                         "status":"nonbillable"
                    }
               ],
               "page_context":{
                    "page":1,
                    "per_page":200,
                    "has_more_page":false,
                    "report_name":"expense history",
                    "sort_column":"expense_account",
                    "sort_order":"D"
               }
          }

In this example, I had one daily expense record. The expensehistory array shows each of the transactions created. These transactions were created in the GBP currency, but the test company default is USD so the total amount changes each day to reflect the changes in exchange rate.

Using the API table to list recurring expense history

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringexpenses/576438000000173123/comments' AND Method = 'GET'

ResponseBody returns:

{
               "code":0,
               "message":"success",
               "comments":[
                    {
                         "comment_id":"576438000000175055",
                         "recurring_expense_id":"576438000000173123",
                         "description":"Expense Created for £50.00",
                         "commented_by_id":"",
                         "commented_by":"Zoho Books",
                         "date":"2024-07-08",
                         "date_description":"22 hours ago",
                         "time":"6:15 AM",
                         "operation_type":"Added",
                         "transaction_id":"576438000000175047",
                         "transaction_type":"expense"
                    },
                    {
                         "comment_id":"576438000000175009",
                         "recurring_expense_id":"576438000000173123",
                         "description":"Expense Created for £50.00",
                         "commented_by_id":"",
                         "commented_by":"Zoho Books",
                         "date":"2024-07-07",
                         "date_description":"yesterday",
                         "time":"6:14 AM",
                         "operation_type":"Added",
                         "transaction_id":"576438000000175001",
                         "transaction_type":"expense"
                    },
                    {
                         "comment_id":"576438000000174009",
                         "recurring_expense_id":"576438000000173123",
                         "description":"Expense Created for £50.00",
                         "commented_by_id":"",
                         "commented_by":"Zoho Books",
                         "date":"2024-07-06",
                         "date_description":"2 days ago",
                         "time":"6:14 AM",
                         "operation_type":"Added",
                         "transaction_id":"576438000000174001",
                         "transaction_type":"expense"
                    },
                    {
                         "comment_id":"576438000000173141",
                         "recurring_expense_id":"576438000000173123",
                         "description":"Expense Created for £50.00",
                         "commented_by_id":"576438000000049001",
                         "commented_by":"zoho1",
                         "date":"2024-07-05",
                         "date_description":"4 days ago",
                         "time":"2:44 AM",
                         "operation_type":"Added",
                         "transaction_id":"576438000000173133",
                         "transaction_type":"expense"
                    },
                    {
                         "comment_id":"576438000000173125",
                         "recurring_expense_id":"576438000000173123",
                         "description":"Recurring expense created for £50.00",
                         "commented_by_id":"576438000000049001",
                         "commented_by":"zoho1",
                         "date":"2024-07-05",
                         "date_description":"4 days ago",
                         "time":"2:44 AM",
                         "operation_type":"Added",
                         "transaction_id":"",
                         "transaction_type":"recurring_expense"
                    }
               ]
         }

In this example, the history returned relates to the child expenses created previously.

Recurring_Invoice

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

To create a new recurring invoice, first create the JSON data required for the line item details:

[
               {
                    "description":"Cloud Storage Monthly",
                    "rate":9.99,
                    "quantity":3,
                    "tax_id":"579676000000050178"
               }
          ]

Then run:

INSERT INTO Recurring_Invoice (customer_id, Line_Items, recurrence_name, recurrence_frequency, Repeat_Every, start_date, end_date) VALUES ('579676000000050204' , 'JSON DATA' , 'Monthly Cloud Charge' , 'weeks' , '1' , '2024-07-29' , '2024-12-30')

Recurrence_Name values need to be unique.

UPDATE statements

This example changes the occurrence to two weeks:

UPDATE Recurring_Invoice SET Repeat_Every = '2' WHERE Recurring_Invoice_Id = '579676000000076008'

DELETE statements

DELETE FROM Recurring_Invoice WHERE Recurring_Invoice_Id = '579676000000076008'

Or use the API table:

SELECT * FROM API WHERE URL = 'books/v3/recurringinvoices/579676000000114023/' AND Method = 'DELETE'

Using the API table to stop recurring invoice

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringinvoices/579676000000076008/status/stop' AND Method = 'POST'

The ResponseBody message is: "The recurring invoice has been stopped."

Using the API table to resume recurring invoices

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringinvoices/579676000000076008/status/resume' AND Method = 'POST'

ResponseBody message is: "The recurring invoice has been activated."

Using the API table to list recurring invoice history

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/recurringinvoices/579676000000076008/comments' AND Method = 'GET'

Retainer_Invoice

Supports: SELECT, INSERT, UPDATE, and DELETE

SELECT, INSERT, and UPDATE statements

The Retainer_Invoice table works in the same way as the Invoice table.

Using the API table to select retainer invoices

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/retainerinvoices/579676000000081041' AND Method = 'GET'

DELETE statements

Use something like:

DELETE FROM Retainer_Invoice WHERE RetainerInvoice_Id = '579676000000091002'

This can also be done with the API table. For example:

SELECT * FROM API WHERE URL = 'books/v3/retainerinvoices/579676000000091014' AND Method = 'DELETE'

Using the API table to mark retainer invoices as sent, void, or draft

Call the API table using:

SELECT * FROM API WHERE URL = 'books/v3/retainerinvoices/579676000000089003/status/X' AND Method = 'POST'

where X is one of:

Value Description
void Void a retainer invoice.
draft Convert to draft.
sent Convert to open.

Using the API table to submit or approve retainer invoices

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/retainerinvoices/579676000000089003/X' AND Method = 'POST'

where X is one of:

Value Description
submit Submit for approval.
approve Approve a credit note

submit and approve only work if they have been turned on in the Zoho Books company you're connecting to.

Using the API table to manage recurring invoice comments

Refer to this section (remember to specify retainerinvoices instead of invoices).

Salesorder

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

Create the JSON data for line items:

[
      {
           "description":"2TB Hard Disk",
           "rate":99,
           "quantity":3,
           "account_id":"579676000000000415",
           "tax_id":"579676000000050178"
      }
 ]

Then send it using:

INSERT INTO Salesorder ([Customer_Id], [date], [Line_Items]) values ('579676000000050204' , '2024-07-30' , 'JSON Data')

If you leave out the Salesorder_Number column, this will be autopopulated with the next number in the sequence.

UPDATE statements

This example update changes the quantity from 3 to 4:

UPDATE Salesorder SET Line_Items=REPLACE(Line_Items,'{""quantity"": 3','{""quantity"": 4') WHERE Salesorder_Id = '579676000000119019'

DELETE statements

Use something like:

DELETE FROM Salesorder WHERE Salesorder_Id = '579676000000119019'

This can also be done by calling the API table. For example:

SELECT * FROM API WHERE URL = 'books/v3/salesorders/579676000000116031' AND Method = 'DELETE'

Using the API table to mark a sales order as open or void

Call the API table by using:

SELECT * FROM API WHERE URL = 'books/v3/salesorders/579676000000089003/status/X' AND Method = 'POST'

where X is one of:

Value Description
open Mark open.
void Mark void.

Using the API table to submit or approve sales orders

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/salesorders/579676000000089003/X' AND Method = 'POST'

where X is one of:

Value Description
submit Submit for approval.
approve Approve a credit note.

submit and approve only work if they have been turned on in the Zoho Books company you're connecting to.

Using the API table to manage sales order comments

Refer to this section and change purchaseorders to salesorders.

Salesreceipt

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

You can create a new sales receipt by firstly creating the JSON Data required for the line item details:

[
               {
                    "description":"2TB Hard Disk",
                    "rate":99,
                    "quantity":3,
                    "account_id":"593625000000000503"
               }
          ]

Then run the INSERT statement:

INSERT INTO Salesreceipt (Customer_Id, [date], Line_Items) VALUES ('593625000000054001' , '2024-08-17' , 'JSON Data')

UPDATE statements

Alter the JSON data from the INSERT and send it back by using:

UPDATE Salesreceipt SET Line_Items = 'JSON Data' WHERE sales_receipt_id = '593625000000065001'

DELETE statements

DELETE FROM Salesreceipt WHERE sales_receipt_id = '593625000000065001'

Or:

SELECT * FROM API WHERE URL = 'books/v3/salesreceipts/593625000000065001?organization_id=20100449894' AND Method = 'DELETE'

Task

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

You can create a task and assign it to a project by running:

INSERT INTO Task (Project_Id, Task_Name, Description) values ('579676000000093167' , 'QA Test' , 'Test the source code developed')

UPDATE statements

You can update tasks by running:

UPDATE Task SET description=description+'.' WHERE Project_Id = '579676000000093167' AND Task_Id = '579676000000160004'

Project_Id is mandatory.

DELETE statements

Directly in the driver using:

DELETE FROM Task WHERE Project_Id = '579676000000093167' AND Task_id = '579676000000164003'

You need to give it both IDs.

This can also be done by calling the API table. For example:

SELECT * FROM API WHERE URL = 'books/v3/projects/579676000000093167/tasks/579676000000160004?organization_id=20099941201' AND Method = 'DELETE'

Tax

Supports: SELECT, INSERT, UPDATE, and DELETE

These examples were created under a Zoho Books organization set up for UK taxes.

INSERT statements

You can create a new tax time entry by running:

INSERT INTO Tax (Tax_Name, Tax_Percentage) VALUES ('S Reduced rate', 17.5)

UPDATE statements

You can update the Tax_Percentage by running:

UPDATE Tax SET Tax_Percentage=17.75 WHERE Tax_Id = '579676000000165002'

DELETE statements

Use something like:

DELETE FROM Tax WHERE tax_name = 'S Reduced rate'

This can also be done by calling the API table. For example:

SELECT * FROM API WHERE URL = 'books/v3/settings/taxes/579676000000169001?organization_id=20099941201' AND Method = 'DELETE'

Time_Entry

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

You can create a time entry and add time by running:

INSERT INTO Time_Entry (Project_ID, Task_Id, Log_Date, Log_Time) VALUES ('579676000000093167' , '579676000000093228' , '2024-08-14' , '02:00')

Both Project_Id and Task_Id are required. The log_time has to be in the format hh:mm.

UPDATE statements

You can update the Log_Time by running:

UPDATE Time_Entry SET Log_Time = '03:00' WHERE Time_Entry_Id = '579676000000160017'

DELETE statements

Use something like:

DELETE FROM Time_Entry WHERE Time_Entry_Id = '579676000000160017'

This can also be done by using the API table. For example:

SELECT * FROM API WHERE URL = 'books/v3/projects/timeentries/579676000000160021?organization_id=20099941201' AND Method = 'DELETE'

Using the API table to start a timer

You can ONLY start the timer for the user account you're logged in as. To do this, first create a blank Time_Entry record by sending:

INSERT INTO Time_Entry (Project_Id, Task_Id, User_Id, Log_Date) VALUES ('579676000000149075' , '579676000000161018' , '579676000000156001' , '2024-08-14')

The user_id value passed in must be the same user_id as you're connected as with the Easysoft Zoho Books ODBC driver. If you use LastId after the insert, the column value contains the Time_Entry_Id of the record created. Start the timer by passing that column in by using the API table:

SELECT * FROM API WHERE URL = 'books/v3/projects/timeentries/time_entry_id/timer/start?organization_id=20099941201' AND Method = 'POST'

where Time_Entry_Id is the ID value rather than the name.

Using the API table to get an active timer

If you have an active timer running, you can get the details through the API table by calling:

SELECT * FROM API WHERE URL = 'books/v3/projects/timeentries/runningtimer/me?organization_id=20099941201' AND Method = 'GET'

Using the API table to stop a timer

If you have an active timer running, you can stop it with:

SELECT * FROM API WHERE URL = 'books/v3/projects/timeentries/timer/stop?organization_id=20099941201' AND Method = 'POST'

Users

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

INSERT statements can be very simple:

INSERT INTO Users ([Name], Email, Role_Id, Billing_Rate) VALUES ('Sally Smedley', 's.smedley@easysoft.com', '579676000000000682', 150)

UPDATE statements

Use something like:

UPDATE Users SET Billing_Rate=159 WHERE User_Id = '579676000000160069'

DELETE statements

Use something like:

DELETE FROM Users WHERE User_Id = '579676000000160069'

Or you can use the API table, if you have the Account_Id:

SELECT * FROM API WHERE URL = 'books/v3/users/579676000000160069?organization_id=20099941201' AND Method = 'DELETE'

Using the API table to mark a user as active or inactive

Use something like:

SELECT * FROM API WHERE URL = 'books/v3/users/579676000000160069/X?organization_id=20099941201' and Method = 'POST'

where X is one of:

Value Description
inactive Make inactive.
active Activate.

Vendor_Credit

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

To create new vendor credits, first create the JSON data required for the line_item details to be credited:

[
      {
           "account_id":"593625000000000388",
           "description":"Dell Laser Paper",
           "rate":3.50,
           "quantity":2
      }
]

Then run:

INSERT INTO Vendor_Credit(vendor_credit_number, vendor_id, [date], Line_Items) VALUES ('VC-000001', '593625000000055001', '2024-08-19', 'JSON Data')

UPDATE statements

Alter the JSON data from the previous example and then use:

UPDATE Vendor_Credit SET Line_Items = '" & EscQuotes(JSON DATA) & "' WHERE Vendor_Credit_Id = '593625000000067162'

DELETE statements

DELETE FROM Vendor_Credit WHERE vendor_credit_id = '593625000000067162'

Or use the API table:

SELECT * FROM API WHERE URL = 'books/v3/vendorcredits/593625000000064222?organization_id=20100449894' AND Method = 'DELETE'

Using the API table to create a refund

Create the JSON for the refund:

{
               "date":"2024-08-19",
               "refund_mode":"cash",
               "reference_number":VC Payment 1,
               "amount":1,
               "account_id":593625000000054023
          }

Then send it by using the API table:

SELECT * FROM API WHERE URL = 'books/v3/vendorcredits/593625000000064260/refunds?organization_id=20100449894' AND Method = 'POST' AND RequestBody = 'JSON Data'

Using the API table to DELETE refunds

SELECT * FROM API WHERE URL = 'books/v3/vendorcredits/593625000000064260/refunds/593625000000064278?organization_id=20100449894' AND Method = 'DELETE'

The second ID used is the vendor_credit_refund_id.

Vendor_Payment

Supports: SELECT, INSERT, UPDATE, and DELETE

INSERT statements

First, create the JSON data required for the bill to be paid:

[
      {
           "bill_id":"593625000000068005",
           "amount_applied":5
      },
      {
           "bill_id":"593625000000069005",
           "amount_applied":1
      }
]

Then run:

INSERT INTO Vendor_Payment(vendor_id, Payment_Mode, [date], amount, Bills) VALUES ('593625000000055001', 'cash', '2024-08-19', 6, 'JSON Data')

UPDATE statements

Alter the JSON data from the insert example and send it back using:

UPDATE Vendor_Payment SET Amount=6, Bills = 'JSON Data' WHERE Payment_Id = '593625000000064094'

DELETE statements

DELETE FROM Vendor_Payment WHERE Payment_Id = '593625000000067040'

Or use API table:

SELECT * FROM API WHERE URL = 'books/v3/Vendor_Payment/593625000000067040?organization_id=20100449894' AND Method = 'DELETE'

Appendix A

SQL functionality

Supported string functions

Function Description
ASCII(string_exp) Returns the ASCII code value of the leftmost character of string_exp as an integer.
BIT_LENGTH(string_exp) Returns the length in bits of the string expression.
CHAR(code) Returns the character that has the ASCII code value specified by code. The value of code should be between 0 and 255, otherwise the return value is data source-dependent.
CHAR_LENGTH(string_exp) Returns the length in characters of the string expression, if the string expression is of a character data type, otherwise returns the length in bytes of the string expression (the smallest integer not less than the number of bits divided by 8). This is the same function as CHARACTER_LENGTH.
CHARACTER_LENGTH Refer to CHAR_LENGTH
CONCAT(string_exp1, string_exp2) Returns a character string that is the result of concatenating string_exp2 to string_exp1. The resulting string is DBMS-dependent.
DIFFERENCE(string_exp1, string_exp2) Returns an integer value that indicates the difference between the values returned by the SOUNDEX function for string_exp1 and string_exp2.
INSERT(string_exp1, start, length, string_exp2) Returns a character string where length characters have been deleted from string_exp1 beginning at start and where string_exp2 has been inserted into string_exp, beginning at start.
LCASE(string_exp) Returns a string equal to that in string_exp with all uppercase characters converted to lowercase.
LEFT(string_exp, count) Returns the leftmost count characters of string_exp.
LENGTH(string_exp) Returns the number of characters in string_exp, excluding trailing blanks.
LOCATE(string_exp1, string_exp2[,start]) Returns the starting position of the first occurrence of string_exp1 within string_exp2. The search for the first occurrence of string_exp1 begins with the first character position in string_exp2 unless the optional argument, start, is specified. If start is specified, the search begins with the character position indicated by the value of start. The first character position in string_exp2 is indicated by the value1. If string_exp1 is not found within string_exp2, the value 0 is returned.
LTRIM(string_exp) Returns the characters of string_exp, with leading blanks removed.
OCTET_LENGTH(string_exp) Returns the length in bytes of the string expression. The result is the smallest integer not less than the number of bits divided by 8.
POSITION(char_exp IN char_exp) Returns the position of the first character expression in the second character expression. The result is an exact numeric with an implementation-defined precision and a scale of 0.
REPEAT(string_exp, count) Returns a character string composed of string_exp repeated count times.
REPLACE(string_exp1, string_exp2, string_exp3) Search string_exp1 for occurrences of string_exp2 and replace with string_exp3.
RIGHT(string_exp, count) Returns the rightmost count characters of string_exp.
RTRIM(string_exp) Returns the characters of string_exp with trailing blanks removed.
SOUNDEX(string_exp) Returns a data source-dependent character string representing the sound of the words in string_exp.
SPACE(count) Returns a character string consisting of count spaces.
SUBSTRING(string_exp, start, length) Returns a character string that is derived from string_exp beginning at the character position specified by start for length characters.
TRIM This is an SQL-92 version of the ODBC LTRIM and RTRIM functions.
UCASE(string_exp) Returns a string equal to that in string_exp with all lowercase characters converted to uppercase.

Supported numeric functions

Function Description
ABS(numeric_exp) Returns the absolute value of numeric_exp.
ACOS(float_exp) Returns the arccosine of float_exp as an angle, expressed in radians.
ASIN(float_exp) Returns the arcsine of float_exp as an angle, expressed in radians.
ATAN(float_exp) Returns the arctangent of float_exp as an angle, expressed in radians.
ATAN2(float_exp1, float_exp2) Returns the arctangent of the x and y coordinates, specified by float_exp1 and float_exp2 respectively, as an angle expressed in radians.
CEILING(numeric_exp) Returns the smallest integer greater than or equal to numeric_exp.
COS(float_exp) Returns the cosine of float_exp where float_exp is an angle expressed in radians.
COT(float_exp) Returns the cotangent of float_exp where float_exp is an angle expressed in radians.
DEGREES(numeric_exp) Returns the number of degrees converted from numeric_exp radians.
EXP(float_exp) Returns the exponential value of float_exp.
FLOOR(numeric_exp) Returns the largest integer less than or equal to numeric_exp.
LOG(float_exp) Returns the natural logarithm of float_exp.
LOG10(float_exp) Returns the base 10 logarithm of float_exp.
MOD(integer_exp1, integer_exp2) Returns the remainder (modulus) of integer_exp1 divided by integer_exp2.
PI() Returns the constant value of pi as a floating point value.
POWER(numeric_exp, integer_exp) Returns the value of numeric_exp to the power of integer_exp.
RADIANS(numeric_exp) Returns the number of radians converted from numeric_exp degrees.
RAND([integer_exp]) Returns a random floating point value using integer_exp as the optional seed value.
ROUND(numeric_exp, integer_exp) Returns numeric_exp rounded to integer_exp places right of the decimal point. If integer_exp is negative, numeric_exp is rounded to integer_exp places to the left of the decimal point.
SIGN(numeric_exp) Returns an indicator of the sign of numeric_exp. If numeric_exp is less than zero, -1 is returned. If numeric_exp equals zero, 0 is returned. If numeric_exp is greater than zero, 1 is returned.
SIN(float_exp) Returns the sine of float_exp, where float_exp is an angle expressed in radians.
SQRT(float_exp) Returns the square root of float_exp.
TAN(float_exp) Returns the tangent of float_exp where float_exp is an angle expressed in radians.
TRUNCATE(numeric_exp, integer_exp) Returns numeric_exp truncated to integer_exp places right of the decimal point. If integer_exp is negative, numeric_exp is truncated to integer_exp places to the left of the decimal point.

Supported date and time functions

Function Description
CURRENT_DATE() Returns the current date.
CURRENT_TIME[(time-precision)] Returns the current local time. The time-precision argument determines the seconds precision of the returned value.
CURRENT_TIMESTAMP[(timestamp-precision)] Returns the current local date and local time as a timestamp value. The timestamp-precision argument determines the seconds precision of the returned timestamp.
CURDATE() Returns the current date.
CURTIME() Returns the current local time.
DAYNAME(date_exp) Returns a character string containing the data source-specific name of the day for the day portion of date_exp.
DAYOFMONTH(date_exp) Returns the day of the month based on the month field in date_exp as an integer value in the range 1-31.
DAYOFWEEK(date_exp) Returns the day of the week based on the week field in date_exp as an integer value in the range of 1–7 where 1 represents Sunday.
DAYOFYEAR(date_exp) Returns the day of the year based on the year field in date_exp as an integer value in the range of 1–366.
EXTRACT(extract-field FROM extract-sourc) Returns the extract-field portion of the extract-source. The extract-source argument is a datetime or interval expression. The extract-field argument can be one of the YEAR, MONTH, DAY, HOUR, MINUTE, or SECOND keywords. The precision of the returned value is implementation-defined. The scale is 0 unless SECOND is specified, in which case the scale is not less that the fractional seconds precision of the extract-source field.
HOUR(time_exp) Returns the hour based on the hour field in time_exp as an integer value in the range of 0–23.
MINUTE(time_exp) Returns the minute based on the minute field in time_exp as an integer value in the range of 0–59.
MONTH(date_exp) Returns the month based on the month field in date_exp as an integer value in the range 1–12.
MONTHNAME(date_exp) Returns a character string containing the data source-specific name of the month for the month portion of date_exp.
NOW() Returns the current date and time as a timestamp value.
QUARTER(date_exp) Returns the quarter in date_exp as an integer value in the range of 1–4.
SECOND(time_exp) Returns the second based on the second field in time_exp as an integer value in the range of 0–59.
TIMESTAMPADD(interval, integer_exp, timestamp_exp) Returns the timestamp calculated by adding integer_exp intervals of type interval to timestamp_exp. Valid values of interval are the following keywords: SQL_TSI_FRAC_SECOND, SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, or SQL_TSI_YEAR where fractional seconds are expressed in billionths of a second. If time_stamp is a time value and interval specifies days, weeks, months, quarters, or years, the date portion of timestamp_exp is set to the current date before calculating the resulting timestamp. If timestamp_exp is a date value and interval specifies fractional seconds, seconds, minutes, or hours, the time portion of timestamp_exp is set to 0 before calculating the resulting timestamp. An application determines which intervals a data source supports by calling SQLGetInfo with the SQL_TIMEDATE_ADD_INTERVALS option.
TIMESTAMPDIFF(interval, timestamp_exp1, timestamp_exp2) Returns the integer number of intervals of type interval by which timestamp_exp2 is greater than timestamp_exp1. The keywords SQL_TSI_FRAC_SECOND, SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, or SQL_TSI_YEAR are valid values of interval, where fractional seconds are expressed in billionths of a second. If either timestamp expression is a time value and interval specifies days, weeks, months, quarters, or years, the date portion of that timestamp is set to the current date before calculating the difference between timestamps. If either timestamp expression is a date value and interval specifies fractional seconds, seconds, minutes, or hours, the time portion of that timestamp is set to 0 before calculating the difference between timestamps. An application determines which intervals a data source supports by calling SQLGetInfo with the SQL_TIMEDATE_DIFF_INTERVALS option.
WEEK(date_exp) Returns the week of the year based on the week field in date_exp as an integer value in the range of 1–53.
YEAR(date_exp) Returns the year based on the year field in date_exp as an integer value. The range is data source-dependent.

Appendix B

Zoho Books tables and columns

Bank_Account

# Column API type LIST GET
0 Account_Id String
1 Account_Name String
2 Account_Code String
3 Currency_Id String
4 Currency_Code String
5 Currency_Symbol String
6 Price_Precision Number
7 Account_Type String
8 Account_Number String
9 Uncategorized_Transactions Number
10 Total_Unprinted_Checks Number
11 Is_Active Boolean
12 Is_Feeds_Subscribed Boolean
13 Is_Feeds_Active Boolean
14 Balance Number
15 Bank_Balance Number
16 Bcy_Balance Number
17 Bank_Name String
18 Routing_Number String
19 Is_Primary_Account Boolean
20 Is_Paypal_Account Boolean
21 Description String
22 Refresh_Status_Code String
23 Feeds_Last_Refresh_Date Date
24 Service_Id String
25 Is_System_Account Boolean
26 Is_Show_Warning_For_Feeds_Refresh Boolean
27 Can_Access_All_Branches Boolean
28 Last_Import_Duplicate_Count Number
29 Can_Show_In_Ze Boolean
30 Sort_Code String GB
31 Latest_Transaction_Date Date
32 Iban_Number String DE, GB DE, GB
33 Is_Direct_Paypal Boolean
34 Can_Show_Paypal_Direct_Integ_Banner Boolean
35 Can_Access_All_Locations Boolean
36 Payout_Bank_Name String
37 Partner_Bank_Source String
38 Feed_Status String
39 Migrate_To_Partner_Bank String
40 Institution_Id String
41 Institution_Name String
42 Is_Pdf_Password_Stored Boolean
43 Partner_Bank_Source_Formatted String
44 Is_Feeds_Owner Boolean
45 Consent_Info_Consent_Remaining_Days String
46 Consent_Info_Is_Consent_Expired String
47 Is_Beta_Feed Boolean
48 Swift_Code String DE, AU, GB DE, AU, GB

Bill

# Column API type LIST GET
0 Bill_Id String
1 Purchaseorder_Ids Array
2 Vendor_Id String
3 Vendor_Name String
4 Vat_Treatment String GB
5 Vat_Reg_No String
6 Source_Of_Supply String IN
7 Destination_Of_Supply String IN
8 Place_Of_Supply String BH, DE, SA, AE, OM
9 Permit_Number String BH, SA, AE, OM
10 Gst_No String IN
11 Gst_Treatment String IN
12 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
13 Is_Pre_Gst Boolean IN
14 Pricebook_Id String
15 Pricebook_Name String
16 Is_Reverse_Charge_Applied Boolean BH, DE, SA, AE, OM, IN, GB
17 Unused_Credits_Payable_Amount Number
18 Status String
19 Bill_Number String
20 Date String
21 Due_Date Date
22 Payment_Terms Number
23 Payment_Terms_Label String
24 Payment_Expected_Date Date
25 Reference_Number String
26 Recurring_Bill_Id String
27 Due_By_Days Number
28 Due_In_Days Number
29 Currency_Id String
30 Currency_Code String
31 Currency_Symbol String
32 Price_Precision Number
33 Exchange_Rate Number
34 Adjustment Number
35 Adjustment_Description String
36 Is_Tds_Applied Boolean
37 Is_Item_Level_Tax_Calc Boolean
38 Is_Inclusive_Tax Boolean
39 Filed_In_Vat_Return_Id String BH, DE, SA, AE, OM, AU, CA, IN, GB
40 Filed_In_Vat_Return_Name String BH, DE, SA, AE, OM, AU, CA, IN, GB
41 Filed_In_Vat_Return_Type String BH, DE, SA, AE, OM, AU, CA, IN, GB
42 Is_Abn_Quoted String AU AU
43 Sub_Total Number
44 Tax_Total Number
45 Total Number
46 Payment_Made Number
47 Vendor_Credits_Applied Number
48 Is_Line_Item_Invoiced Boolean
49 Acquisition_Vat_Total Number
50 Reverse_Charge_Vat_Total Number
51 Balance Number
52 Billing_Address_Id String
53 Billing_Address_Address String
54 Billing_Address_Street2 String
55 Billing_Address_City String
56 Billing_Address_State String
57 Billing_Address_Zip String
58 Billing_Address_Country String
59 Billing_Address_Fax String
60 Billing_Address_Attention String
61 Created_Time Timestamp
62 Last_Modified_Time Timestamp
63 Created_By_Id String
64 Reference_Id String
65 Notes String
66 Terms String
67 Attachment_Name String
68 Open_Purchaseorders_Count Number
69 Subject_Content String
70 Tds_Calculation_Type String
71 Billing_Address_Phone String
72 Approver_Id String
73 Current_Sub_Status String
74 Template_Id String
75 Contact_Category String
76 Discount_Amount Number
77 Is_Viewed_By_Client Boolean
78 Tax_Override_Preference String GO, AU, CA, GB
79 Discount_Applied_On_Amount Number
80 Source String
81 Client_Viewed_Time Timestamp
82 Submitted_Date Date
83 Orientation String
84 Can_Send_In_Mail Boolean
85 Submitter_Id String
86 Current_Sub_Status_Id String
87 Color_Code String
88 Submitted_By_Name String
89 Submitted_By_Photo_Url String
90 Unprocessed_Payment_Amount Number
91 Discount_Setting String
92 Discount_Account_Name String
93 Currency_Name_Formatted String
94 Is_Tally_Bill Boolean
95 Submitted_By_Email String
96 Tax_Rounding String
97 Is_Uber_Bill Boolean
98 Track_Discount_In_Account Boolean
99 Is_Bill_Reconciliation_Violated Boolean
100 Submitted_By String
101 Discount Number
102 Is_Discount_Before_Tax Boolean
103 Discount_Account_Id String
104 Discount_Type String
105 Sub_Total_Inclusive_Of_Tax Number
106 Entity_Type String
107 Last_Modified_Id String
108 Page_Width String
109 Template_Name String
110 Page_Height String
111 Template_Type String
112 Is_Approval_Required Boolean
113 Can_Create_Bill_Of_Entry Boolean DE, OM, GB
114 Tds_Total Number
115 Due_Days String
116 Has_Attachment Boolean
117 Reference_Invoice_Type String IN
118 Gst_Return_Details_Return_Period String IN
119 Gst_Return_Details_Status String IN
120 Can_Amend_Transaction Boolean IN
121 Bill_Order_Type String
122 Invoice_Conversion_Type String IN
123 Is_Tds_Amount_In_Percent Boolean IN
124 Tax_Account_Id String IN
125 Tds_Percent String IN
126 Tds_Amount Number IN
127 Tax_Override Boolean IN
128 Tds_Override_Preference String GO, IN
129 Tax_On_Discount_Preference String AU
130 Is_Discount_Tax_Inclusive Boolean AU
131 Reference_Bill_Id String SA, IN
132 Abn String AU
133 Tax_Reg_No String BH, DE, SA, AE, OM
134 Line_Items Array
135 Documents Array
136 Purchaseorders Array
137 Taxes Array
138 Acquisition_Vat_Summary JSONData
139 Reverse_Charge_Vat_Summary JSONData
140 Payments Array
141 Vendor_Credits Array
142 Sub_Statuses Array
143 Unallocated_Landed_Costs Array
144 Allocated_Landed_Costs Array
145 Approvers_List Array
146 Tds_Summary JSONData IN
147 Credit_Notes JSONData SA, IN

Chart_Of_Account

# Column API type LIST GET
0 Account_Id String
1 Account_Name String
2 Account_Code String
3 Account_Type String
4 Account_Type_Formatted String
5 Is_Active Boolean
6 Currency_Id String
7 Currency_Code String
8 Description String
9 Is_System_Account Boolean
10 Is_Involved_In_Transaction Boolean
11 Can_Show_In_Ze Boolean
12 Include_In_Vat_Return Boolean GB
13 Parent_Account_Id String
14 Parent_Account_Name String
15 Created_Time Timestamp
16 Last_Modified_Time Timestamp
17 Closing_Balance Number
18 Closing_Balance_Formatted String
19 Isdebit Boolean
20 Status String
21 Is_User_Created Boolean
22 Child_Count String
23 Has_Attachment Boolean
24 Depth Number
25 Is_Child_Present Boolean
26 Is_Standalone_Account Boolean
27 Include_In_Bas Boolean AU
28 Documents Array
29 Transactions Array

Contact

# Column API type LIST GET
0 Contact_Id String
1 Contact_Name String
2 Company_Name String
3 Has_Transaction Boolean
4 Contact_Type String
5 Customer_Sub_Type String
6 Credit_Limit Number
7 Is_Portal_Enabled Boolean
8 Language_Code String
9 Is_Taxable Boolean
10 Tax_Id String GO, AU, CA, IN, US
11 Tds_Tax_Id String IN
12 Tax_Name String GO, AU, CA, IN, US
13 Tax_Percentage Number GO, AU, CA, IN, US
14 Tax_Authority_Id String
15 Tax_Exemption_Id String
16 Tax_Authority_Name String
17 Tax_Exemption_Code String
18 Place_Of_Contact String DE, IN DE, IN
19 Gst_No String IN IN
20 Vat_Treatment String DE, GB GB
21 Tax_Treatment String BH, SA, AE, OM BH, DE, SA, AE, OM, IN, GB
22 Tax_Regime String
23 Is_Tds_Registered Boolean
24 Gst_Treatment String IN IN
25 Is_Linked_With_Zohocrm Boolean
26 Website String
27 Owner_Id String
28 Primary_Contact_Id String
29 Payment_Terms Number
30 Payment_Terms_Label String
31 Currency_Id String
32 Currency_Code String
33 Currency_Symbol String
34 Opening_Balance_Amount Number
35 Exchange_Rate String
36 Outstanding_Receivable_Amount Number
37 Outstanding_Receivable_Amount_Bcy Number
38 Unused_Credits_Receivable_Amount Number
39 Unused_Credits_Receivable_Amount_Bcy Number
40 Status String
41 Payment_Reminder_Enabled Boolean
42 Billing_Address_Attention String
43 Billing_Address_Address String
44 Billing_Address_Street2 String
45 Billing_Address_State_Code String
46 Billing_Address_City String
47 Billing_Address_State String
48 Billing_Address_Zip String
49 Billing_Address_Country String
50 Billing_Address_Fax String
51 Billing_Address_Phone String
52 Billing_Address_Country_Code String
53 Billing_Address_Address_Id String
54 Billing_Address_County String
55 Shipping_Address_Attention String
56 Shipping_Address_Address String
57 Shipping_Address_Street2 String
58 Shipping_Address_State_Code String
59 Shipping_Address_City String
60 Shipping_Address_State String
61 Shipping_Address_Zip String
62 Shipping_Address_Country String
63 Shipping_Address_Fax String
64 Shipping_Address_Phone String
65 Shipping_Address_Latitude String
66 Shipping_Address_Address_Id String
67 Shipping_Address_County String
68 Shipping_Address_Country_Code String
69 Shipping_Address_Longitude String
70 Notes String
71 Created_Time Timestamp
72 Last_Modified_Time Timestamp
73 Vat_Reg_No String BH, SA, AE, OM, AU, IN, GB
74 Tax_Reg_No String BH, DE, SA, AE, OM, IN, GB
75 Country_Code String BH, DE, SA, AE, OM, AU, IN, GB
76 Avatax_Exempt_No String
77 Avatax_Use_Code String
78 Facebook String
79 Twitter String
80 Track_1099 Boolean US US
81 Tax_Id_Type String US
82 Tax_Id_Value String US
83 First_Name String
84 Email String
85 Opening_Balance_Amount_Bcy String
86 Portal_Status String
87 Documents Array
88 Contact_Tax_Information String
89 Is_Credit_Limit_Migration_Completed Boolean
90 Price_Precision Number
91 Department String
92 Ach_Supported Boolean
93 Last_Name String
94 Designation String
95 Outstanding_Payable_Amount Number
96 Is_Bcy__Contact Boolean
97 Language_Code_Formatted String
98 Is_Crm_Customer Boolean
99 Created_Date Date
100 Invited_By String
101 Contact_Salutation String
102 Unused_Retainer_Payments Number
103 Is_Client_Review_Asked Boolean
104 Consent_Date Date
105 Zohopeople_Client_Id String
106 Phone String
107 Mobile String
108 Is_Consent_Agreed Boolean
109 Source String
110 Owner_Name String
111 Credit_Limit_Exceeded_Amount Number
112 Portal_Receipt_Count Number
113 Zcrm_Vendor_Id String
114 Outstanding_Ob_Payable_Amount Number
115 Is_Sms_Enabled Boolean
116 Allow_Parent_For_Payment_And_View Boolean
117 Crm_Owner_Id String
118 Opening_Balances Array
119 Can_Show_Customer_Ob Boolean
120 Can_Show_Vendor_Ob Boolean
121 Outstanding_Ob_Receivable_Amount Number
122 Outstanding_Payable_Amount_Bcy Number
123 Unused_Credits_Payable_Amount_Bcy Number
124 Vpa_List Array
125 Contact_Category String
126 Unused_Credits_Payable_Amount Number
127 Is_Client_Review_Settings_Enabled Boolean
128 Sales_Channel String
129 Entity_Address_Id String
130 Pricebook_Id String
131 Pricebook_Name String
132 Associated_With_Square Boolean
133 Created_By_Name String
134 Customer_Name String
135 Last_Modified_Time_Formatted Timestamp
136 Vendor_Name String
137 Contact_Type_Formatted String
138 Portal_Status_Formatted String
139 Has_Attachment Boolean
140 Created_Time_Formatted Timestamp
141 Zcrm_Account_Id String
142 Zcrm_Contact_Id String
143 Msme_Type String IN
144 Legal_Name String IN
145 Trader_Name String IN
146 Pan_No String IN IN
147 Udyam_Reg_No String IN
148 Tax_Rule_Id String DE, CA
149 Tax_Rule_Name String DE, CA
150 Is_Abn_Quoted Boolean AU
151 Gcc_Vat_Treatment String BH, SA, AE, OM
152 Siret_Number String GO
153 Place_Of_Contact_Formatted String DE, IN
154 Contact_Number String DE DE
155 Tax_Number String DE
156 Buyer_Reference_Number String DE
157 Buyer_Id_Value String SA
158 Buyer_Id_Label String SA
159 Default_Templates_PTU_Template_Name String
160 Default_Templates_Retainerinvoice_Email_Template_Id String
161 Default_Templates_Creditnote_Email_Template_Name String
162 Default_Templates_Salesorder_Template_Name String
163 Default_Templates_Bill_Template_Name String
164 Default_Templates_PTU_Email_Template_Name String
165 Default_Templates_Purchaseorder_Template_Name String
166 Default_Templates_PTU_Email_Template_Id String
167 Default_Templates_Retainerinvoice_Template_Name String
168 Default_Templates_Bill_Template_Id String
169 Default_Templates_Invoice_Template_Name String
170 Default_Templates_Estimate_Template_Name String
171 Default_Templates_Creditnote_Template_Name String
172 Default_Templates_Retainerinvoice_Template_Id String
173 Default_Templates_Retainerinvoice_Email_Template_Name String
174 Default_Templates_Purchaseorder_Email_Template_Id String
175 Default_Templates_PTU_Template_Id String
176 Default_Templates_Retainerinvoice_PTU_Template_Id String
177 Default_Templates_Retainerinvoice_PTU_Template_Name String
178 Default_Templates_Invoice_Email_Template_Name String
179 Default_Templates_Estimate_Email_Template_Name String
180 Default_Templates_Purchaseorder_Email_Template_Name String
181 Default_Templates_Salesorder_Email_Template_Name String
182 Default_Templates_Payment_Remittance_Email_Template_Id String
183 Default_Templates_Payment_Remittance_Email_Template_Name String
184 Default_Templates_Retainerinvoice_PTU_Email_Template_Id String
185 Default_Templates_Retainerinvoice_PTU_Email_Template_Name String
186 Default_Templates_Invoice_Template_Id String
187 Default_Templates_Estimate_Template_Id String
188 Default_Templates_Creditnote_Template_Id String
189 Default_Templates_Purchaseorder_Template_Id String
190 Default_Templates_Salesorder_Template_Id String
191 Default_Templates_Invoice_Email_Template_Id String
192 Default_Templates_Estimate_Email_Template_Id String
193 Default_Templates_Creditnote_Email_Template_Id String
194 Default_Templates_Salesorder_Email_Template_Id String
195 Default_Templates_Statement_Template_Id String
196 Default_Templates_Statement_Template_Name String
197 Contact_Persons Array
198 Addresses Array
199 Vendor_Currency_Summaries Array
200 Cards Array
201 Checks Array
202 Bank_Accounts Array
203 Tags Array
204 Customer_Currency_Summaries JSONData

Credit_Note

# Column API type LIST GET
0 Creditnote_Id String
1 Creditnote_Number String
2 Date String
3 Is_Pre_Gst Boolean IN
4 Place_Of_Supply String BH, DE, SA, AE, OM, IN
5 Vat_Treatment String GB
6 Vat_Reg_No String
7 Gst_No String IN
8 Cfdi_Usage String
9 Cfdi_Reference_Type String
10 Gst_Treatment String IN
11 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
12 Status String
13 Customer_Id String
14 Customer_Name String
15 Reference_Number String
16 Email String
17 Total Number
18 Balance Number
19 Currency_Id String
20 Currency_Code String
21 Currency_Symbol String
22 Created_Time Timestamp
23 Updated_Time Timestamp
24 Template_Id String
25 Template_Name String
26 Notes String
27 Terms String
28 Customer_Name_Sec_Lang String SA
29 Is_Simplified_Invoice String SA
30 Tax_Reg_No String BH, DE, SA, AE, OM
31 Special_Transaction_Type String SA
32 Reason_For_Credit_Debit_Note String SA
33 Billing_Address_Attention String
34 Billing_Address_Address String
35 Billing_Address_Street2 String
36 Billing_Address_State_Code String
37 Billing_Address_City String
38 Billing_Address_State String
39 Billing_Address_Zip String
40 Billing_Address_Country String
41 Billing_Address_Fax String
42 Billing_Address_Phone String
43 Billing_Address_Additional_Number String SA
44 Billing_Address_District String SA
45 Billing_Address_Attention_Sec_Lang String SA
46 Billing_Address_Additional_Number_Sec_Lang String SA
47 Billing_Address_Address_Sec_Lang String SA
48 Billing_Address_State_Sec_Lang String SA
49 Billing_Address_Street2_Sec_Lang String SA
50 Billing_Address_City_Sec_Lang String SA
51 Billing_Address_District_Sec_Lang String SA
52 Billing_Address_Zip_Sec_Lang String SA
53 Billing_Address_Country_Sec_Lang String SA
54 Billing_Address_Phone_Sec_Lang String SA
55 Billing_Address_Fax_Sec_Lang String SA
56 Shipping_Address_Attention String
57 Shipping_Address_Address String
58 Shipping_Address_Street2 String
59 Shipping_Address_State_Code String
60 Shipping_Address_City String
61 Shipping_Address_State String
62 Shipping_Address_Zip String
63 Shipping_Address_Country String
64 Shipping_Address_Fax String
65 Shipping_Address_Phone String
66 Shipping_Address_Additional_Number_Sec_Lang String SA
67 Shipping_Address_Attention_Sec_Lang String SA
68 Shipping_Address_Address_Sec_Lang String SA
69 Shipping_Address_Street2_Sec_Lang String SA
70 Shipping_Address_State_Sec_Lang String SA
71 Shipping_Address_City_Sec_Lang String SA
72 Shipping_Address_District_Sec_Lang String SA
73 Shipping_Address_Zip_Sec_Lang String SA
74 Shipping_Address_Country_Sec_Lang String SA
75 Shipping_Address_Phone_Sec_Lang String SA
76 Shipping_Address_Fax_Sec_Lang String SA
77 Created_By_Id String
78 Submitted_Date Date
79 Client_Viewed_Time Timestamp
80 Tds_Calculation_Type String
81 Salesperson_Id String
82 Page_Width String
83 Submitter_Id String
84 Bcy_Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
85 Current_Sub_Status_Id String
86 Current_Sub_Status String
87 Filed_In_Vat_Return_Name String BH, DE, SA, AE, OM, AU, CA, IN, GB
88 Shipping_Charge_Tax_Exemption_Id String DE, AU, CA, IN, GB, US
89 Salesperson_Name String
90 Submitted_By_Email String
91 Is_Emailed Boolean
92 Currency_Name_Formatted String
93 Shipping_Charge_Inclusive_Of_Tax Number DE, GO, AU, CA, IN, GB, US
94 Shipping_Charge_Exclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
95 Is_Viewed_By_Client Boolean
96 Last_Modified_By_Id String
97 Filed_In_Vat_Return_Id String BH, DE, SA, AE, OM, AU, CA, IN, GB
98 Invoice_Id String
99 Last_Modified_Time Timestamp
100 Subject_Content String
101 Shipping_Charge_Inclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
102 Invoice_Number String All except KW, QA, GO
103 Is_Child_Present Boolean
104 Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
105 Reverse_Charge_Tax_Total Number BH, DE, IN, GB
106 Shipping_Charge_Tax_Id String DE, GO, AU, CA, IN, GB, US
107 Filed_In_Vat_Return_Type String BH, DE, SA, AE, OM, AU, CA, IN, GB
108 Contact_Category String
109 Adjustment Number
110 Is_Taxable Boolean All except KW, QA, GO
111 Tax_Rounding String
112 Color_Code String
113 Discount_Type String
114 Template_Type String
115 Shipping_Charge_Tax_Type String DE, GO, AU, CA, IN, GB, US
116 Submitted_By_Name String
117 Page_Height String
118 Discount Number
119 Orientation String
120 Price_Precision Number
121 Exchange_Rate Number
122 Is_Inclusive_Tax Boolean
123 Discount_Applied_On_Amount Number
124 Approver_Id String
125 Is_Discount_Before_Tax Boolean
126 Is_Reverse_Charge_Applied Boolean
127 Submitted_By String
128 Submitted_By_Photo_Url String
129 Shipping_Charge_Tax_Name String DE, GO, AU, CA, IN, GB, US
130 Shipping_Charge_Tax_Percentage String DE, GO, AU, CA, IN, GB, US
131 Total_Credits_Used Number
132 Shipping_Charge_Tax_Exemption_Code String DE, AU, CA, IN, GB, US
133 Shipping_Charge_Exclusive_Of_Tax Number DE, GO, AU, CA, IN, GB, US
134 Transaction_Rounding_Type String
135 Shipping_Charge_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
136 Shipping_Charge Number
137 Adjustment_Description String
138 Roundoff_Value Number
139 Sub_Total Number
140 Sub_Total_Inclusive_Of_Tax Number
141 Tax_Total Number
142 Total_Refunded_Amount Number
143 Txn_Posting_Date Date
144 Shipping_Charge_Sac_Code String IN
145 Gst_Reason String IN
146 Gst_Return_Details_Status String IN
147 Gst_Return_Details_Return_Period String IN
148 Reason_For_Creditnote String IN
149 Reference_Invoice_Type String IN
150 Tax_Specification String IN
151 Tax_Override_Preference String GO, CA, US
152 Applied_Invoices String
153 Has_Attachment Boolean
154 Tds_Override_Preference String GO, IN
155 Is_Eway_Bill_Required Boolean IN
156 Discount_Amount Number
157 Discount_Account_Id String
158 Discount_Account_Name String
159 Is_Cancellation_Invoice String DE DE
160 Contact_Number String DE
161 Invoices JSONData
162 Taxes Array
163 Line_Items Array
164 Contact_Persons_Associated Array
165 Invoices_Credited Array
166 Approvers_List Array
167 Contact_Persons Array
168 Sub_Statuses Array
169 Documents Array
170 Ewaybills JSONData IN
171 Tds_Summary JSONData IN
172 Creditnote_Refunds Array

Currency

# Column API type LIST GET
0 Currency_Id String
1 Currency_Code String
2 Currency_Name String
3 Currency_Symbol String
4 Currency_Name_Formatted String
5 Price_Precision Number
6 Currency_Format String
7 Is_Base_Currency Boolean
8 Exchange_Rate Number
9 Effective_Date Date

Customer_Payment

# Column API type LIST GET
0 Payment_Id String
1 Payment_Mode String
2 Amount Number
3 Amount_Refunded Number
4 Bank_Charges Number
5 Date String
6 Status String
7 Reference_Number String
8 Description String
9 Customer_Id String
10 Customer_Name String
11 Email String
12 Currency_Code String
13 Currency_Symbol String
14 Account_Name String
15 Exchange_Rate Number
16 Documents Array
17 Currency_Id String
18 Payment_Number String
19 Payment_Link_Id String
20 Created_Time Timestamp
21 Updated_Time Timestamp
22 Is_Client_Review_Settings_Enabled Boolean
23 Payment_Number_Prefix String
24 Customer_Advance_Account_Id String
25 Card_Type String
26 Payment_Number_Suffix String
27 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
28 Can_Send_In_Mail Boolean
29 Offline_Created_Date_With_Time Date
30 Template_Type String
31 Account_Id String
32 Account_Type String
33 Customer_Advance_Account_Name String
34 Unused_Amount Number
35 Tax_Account_Id String
36 Is_Payment_Details_Required Boolean
37 Tax_Account_Name String
38 Online_Transaction_Id String
39 Tax_Amount_Withheld Number
40 Can_Send_Payment_Sms Boolean
41 Payment_Gateway String
42 Settlement_Status String
43 Payment_Refunds Array
44 Last_Four_Digits String
45 Template_Id String
46 Template_Name String
47 Page_Width String
48 Page_Height String
49 Orientation String
50 Attachment_Name String
51 Is_Pre_Gst Boolean IN
52 Product_Description String DE, IN DE, IN
53 Tds_Type String IN
54 Tds_Tax_Id String IN
55 Txn_Posting_Date Date
56 Payment_Status String
57 Tax_Id String IN
58 Tax_Percentage String IN
59 Tax_Type String IN
60 Gst_Treatment String IN
61 Gst_Return_Details_Return_Period String IN
62 Gst_Return_Details_Status String IN
63 Place_Of_Supply String BH, DE, SA, AE, OM, IN
64 Gst_No String IN
65 Tax_Name String IN
66 Is_Advance_Payment Boolean IN IN
67 Invoice_Numbers String
68 Last_Modified_Time Timestamp
69 RetainerInvoice_Id String
70 Payment_Mode_Formatted String
71 Custom_Fields_List String
72 Bcy_Amount Number
73 Bcy_Unused_Amount Number
74 Bcy_Refunded_Amount Number
75 Has_Attachment Boolean
76 Gateway_Transaction_Id String
77 Applied_Invoices Array
78 Payment_Type String
79 Contact_Number String DE
80 Invoices Array
81 Imported_Transactions Array

Delivery_Challan

# Column API type LIST GET
0 Deliverychallan_Id String
1 Last_Modified_Time Timestamp
2 Total Number
3 Customer_Name String
4 Date String
5 Zcrm_Potential_Id String
6 Status String
7 Bcy_Total Number
8 Zcrm_Potential_Name String
9 Customer_Id String
10 Company_Name String
11 Challan_Status String
12 Currency_Code String
13 Deliverychallan_Number String
14 Reference_Number String
15 Currency_Id String
16 Created_Time Timestamp
17 Has_Attachment Boolean
18 Tax_Rounding String
19 Tax_Total Number
20 Created_By_Id String
21 Currency_Symbol String
22 Has_Qty_Returned Boolean
23 Tax_Treatment String BH, SA, AE, OM, IN
24 Sub_Total Number
25 Tax_Reg_No String BH, SA, AE, OM
26 Challan_Type String
27 Place_Of_Supply String BH, SA, AE, OM, IN
28 Discount_Applied_On_Amount Number
29 Is_Inclusive_Tax Boolean
30 Discount Number
31 Discount_Type String
32 Page_Height String
33 Is_Taxable String BH, SA, AE, OM, IN
34 Exchange_Rate Number
35 Page_Width String
36 Is_Discount_Before_Tax Boolean
37 Source String
38 Sub_Total_Inclusive_Of_Tax Number
39 Adjustment Number
40 Adjustment_Description String
41 Transaction_Rounding_Type String
42 Price_Precision Number
43 Template_Id String
44 Shipping_Address_Address String
45 Shipping_Address_Zip String
46 Shipping_Address_City String
47 Shipping_Address_Street2 String
48 Shipping_Address_State String
49 Shipping_Address_Country String
50 Shipping_Address_Fax String
51 Shipping_Address_Attention String
52 Shipping_Address_Phone String
53 Notes String
54 Template_Type String
55 Terms String
56 Template_Name String
57 Orientation String
58 Attachment_Name String
59 Discount_Amount String IN
60 Is_Pre_Gst String IN
61 Invoice_Conversion_Type String IN
62 Gst_No String IN
63 Gst_Treatment String IN
64 Tax_Specification String IN
65 Is_Eway_Bill_Required String IN
66 Line_Items Array
67 Taxes Array
68 Documents Array
69 Contact_Persons Array
70 Ewaybills String IN

Estimate

# Column API type LIST GET
0 Estimate_Id String
1 Estimate_Number String
2 Date String
3 Reference_Number String
4 Is_Pre_Gst Boolean IN
5 Place_Of_Supply String BH, DE, SA, AE, OM, IN
6 Gst_No String IN
7 Gst_Treatment String IN
8 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
9 Status String
10 Customer_Id String
11 Customer_Name String
12 Currency_Id String
13 Currency_Code String
14 Exchange_Rate Number
15 Expiry_Date Date
16 Discount Number
17 Is_Discount_Before_Tax Boolean
18 Discount_Type String
19 Is_Inclusive_Tax Boolean
20 Shipping_Charge Number
21 Adjustment Number
22 Adjustment_Description String
23 Sub_Total Number
24 Total Number
25 Tax_Total Number
26 Price_Precision Number
27 Billing_Address_Address String
28 Billing_Address_Street2 String
29 Billing_Address_City String
30 Billing_Address_State String
31 Billing_Address_Zip String
32 Billing_Address_Country String
33 Billing_Address_Phone String
34 Billing_Address_Fax String
35 Billing_Address_Attention String
36 Shipping_Address_Address String
37 Shipping_Address_Street2 String
38 Shipping_Address_City String
39 Shipping_Address_State String
40 Shipping_Address_Zip String
41 Shipping_Address_Country String
42 Shipping_Address_Phone String
43 Shipping_Address_Fax String
44 Shipping_Address_Attention String
45 Customer_Default_Billing_Address_Zip String
46 Customer_Default_Billing_Address_Country String
47 Customer_Default_Billing_Address_Fax String
48 Customer_Default_Billing_Address_Address String
49 Customer_Default_Billing_Address_State String
50 Customer_Default_Billing_Address_City String
51 Customer_Default_Billing_Address_Phone String
52 Customer_Default_Billing_Address_Street2 String
53 Customer_Default_Billing_Address_State_Code String
54 Notes String
55 Terms String
56 Template_Id String
57 Template_Name String
58 Created_Time Timestamp
59 Last_Modified_Time Timestamp
60 Salesperson_Id String
61 Salesperson_Name String
62 Project_Project_Id String
63 Project_Project_Name String
64 Discount_Percent Number
65 Shipping_Charge_Exclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
66 Sub_Total_Inclusive_Of_Tax Number
67 Currency_Symbol String
68 Is_Converted_To_Open Boolean
69 Zcrm_Potential_Id String
70 Created_Date Date
71 Zcrm_Potential_Name String
72 Contact_Category String
73 Vat_Treatment String GB
74 Current_Sub_Status_Id String
75 Color_Code String
76 Current_Sub_Status String
77 Is_Taxable Boolean All except KW, QA, GO
78 Is_Transaction_Created Boolean
79 Shipping_Charge_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
80 Shipping_Charge_Inclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
81 Submitted_By String
82 Submitted_By_Name String
83 Shipping_Charge_Tax_Type String DE, GO, AU, CA, IN, GB, US
84 Last_Modified_By_Id String
85 Discount_Applied_On_Amount Number
86 Submitted_By_Photo_Url String
87 Estimate_Type String
88 Shipping_Charge_Exclusive_Of_Tax Number DE, GO, AU, CA, IN, GB, US
89 Shipping_Charge_Tax_Id String DE, GO, AU, CA, IN, GB, US
90 Submitted_By_Email String
91 Is_Viewed_By_Client Boolean
92 Client_Viewed_Time Timestamp
93 Tax_Rounding String
94 Tds_Calculation_Type String
95 Shipping_Charge_Inclusive_Of_Tax Number DE, GO, AU, CA, IN, GB, US
96 Estimate_Url String
97 Is_Reverse_Charge_Applied Boolean
98 Submitter_Id String
99 Shipping_Charge_Tax_Exemption_Id String DE, AU, CA, IN, GB, US
100 Submitted_Date Date
101 Roundoff_Value Number
102 Approver_Id String
103 Shipping_Charge_Tax_Name String DE, GO, AU, CA, IN, GB, US
104 Orientation String
105 Bcy_Sub_Total Number
106 Shipping_Charge_Tax_Percentage String DE, GO, AU, CA, IN, GB, US
107 Shipping_Charge_Tax_Exemption_Code String DE, AU, CA, IN, GB, US
108 Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
109 Bcy_Shipping_Charge Number
110 Bcy_Adjustment Number
111 Bcy_Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
112 Transaction_Rounding_Type String
113 Page_Height String
114 Sub_Total_Exclusive_Of_Discount Number
115 Discount_Total Number
116 Bcy_Discount_Total Number
117 Bcy_Total Number
118 Bcy_Tax_Total Number
119 Reverse_Charge_Tax_Total Number BH, DE, IN, GB
120 Template_Type String
121 Page_Width String
122 Created_By_Id String
123 Attachment_Name String
124 Can_Send_In_Mail Boolean
125 Can_Send_Estimate_Sms Boolean
126 Allow_Partial_Payments Boolean
127 Accept_Retainer Boolean
128 Retainer_Percentage String
129 Subject_Content String
130 Invoice_Conversion_Type String IN
131 Tds_Override_Preference String GO, IN
132 Tax_Override_Preference String GO, CA, US
133 Tax_Specification String IN
134 Shipping_Charge_Sac_Code String IN
135 Is_Progressive_Quote Boolean
136 Tax_Reg_No String BH, DE, SA, AE, OM
137 Declined_Date Date
138 Company_Name String
139 Has_Attachment Boolean
140 Is_Emailed Boolean
141 Accepted_Date Date
142 Contact_Number String DE
143 Taxes Array
144 Line_Items Array
145 Contact_Persons Array
146 Contact_Persons_Details Array
147 Documents Array
148 Approvers_List Array
149 Sub_Statuses Array
150 Salesorders Array
151 Invoice_Ids Array
152 Subscription_Ids Array
153 Retainerinvoices Array
154 Payment_Options Object
155 Tds_Summary JSONData IN
156 Payment_Options_Payment_Gateways Array

Expense

# Column API type LIST GET
0 Expense_Id String
1 Transaction_Id String
2 Transaction_Type String
3 Gst_No String IN
4 Gst_Treatment String IN
5 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
6 Destination_Of_Supply String IN
7 Destination_Of_Supply_State String IN
8 Place_Of_Supply String BH, DE, SA, AE, OM
9 Hsn_Or_Sac String IN
10 Source_Of_Supply String IN
11 Paid_Through_Account_Name String
12 Vat_Reg_No String DE, GB
13 Reverse_Charge_Tax_Id String BH, DE, SA, AE, OM, IN, GB
14 Reverse_Charge_Tax_Name String
15 Reverse_Charge_Tax_Percentage Number
16 Reverse_Charge_Tax_Amount Number
17 Tax_Amount Number
18 Is_Itemized_Expense Boolean
19 Is_Pre_Gst String IN
20 Trip_Id String
21 Trip_Number String
22 Reverse_Charge_Vat_Total Number
23 Acquisition_Vat_Total Number
24 Expense_Item_Id String
25 Account_Id String
26 Account_Name String
27 Date String
28 Tax_Id String
29 Tax_Name String
30 Tax_Percentage Number
31 Currency_Id String
32 Currency_Code String
33 Exchange_Rate Number
34 Sub_Total Number
35 Total Number
36 Bcy_Total Number
37 Amount Number
38 Is_Inclusive_Tax Boolean
39 Reference_Number String
40 Description String
41 Is_Billable Boolean
42 Is_Personal Boolean
43 Customer_Id String
44 Customer_Name String
45 Expense_Receipt_Name String
46 Expense_Receipt_Type String
47 Last_Modified_Time Timestamp
48 Status String
49 Invoice_Id String
50 Invoice_Number String
51 Project_Id String
52 Project_Name String
53 Mileage_Rate Number
54 Mileage_Type String
55 Expense_Type String
56 Start_Reading String
57 End_Reading String
58 Vendor_Id String
59 Vendor_Name String
60 Vat_Treatment String GB
61 Is_Recurring_Applicable Boolean
62 Tax_Exemption_Id String BH, DE, SA, AE, OM, AU, IN, GB
63 Report_Name String
64 Fuel_Type String GB
65 Fcy_Surcharge_Amount Number
66 Zcrm_Potential_Name String
67 Created_By_Id String
68 Vehicle_Name String
69 Markup_Percent Number
70 Transaction_Type_Formatted String
71 User_Email String
72 Paid_Through_Account_Id String
73 Filed_In_Vat_Return_Type String BH, DE, SA, AE, OM, AU, CA, IN, GB
74 Approver_Id String
75 Product_Type String BH, DE, SA, AE, OM, IN, GB
76 Filed_In_Vat_Return_Name String BH, DE, SA, AE, OM, AU, CA, IN, GB
77 Mileage_Unit String
78 Is_Reverse_Charge_Applied Boolean BH, DE, SA, AE, OM, IN, GB
79 User_Name String
80 Itc_Eligibility String BH, SA, AE, OM, IN, GB
81 Filed_In_Vat_Return_Id String BH, DE, SA, AE, OM, AU, CA, IN, GB
82 Tax_Exemption_Code String BH, DE, SA, AE, OM, AU, IN, GB
83 Vehicle_Type String DE, GB
84 Last_Modified_By_Id String
85 Employee_Name String
86 Is_Surcharge_Applicable Boolean
87 Created_Time Timestamp
88 Employee_Id String
89 Employee_Email String
90 Report_Number String
91 Vehicle_Id String
92 Fuel_Rate Number GB
93 Fuel_Element Number GB
94 Engine_Capacity_Range String GB
95 Report_Id String
96 User_Id String
97 Approver_Name String
98 Approver_Email String
99 Report_Status String
100 Is_Reimbursable Boolean
101 Location String
102 Merchant_Id String
103 Merchant_Name String
104 Payment_Mode String
105 Bcy_Surcharge_Amount Number
106 Zcrm_Potential_Id String
107 Total_Without_Tax Number
108 Bcy_Total_Without_Tax Number
109 Distance Number
110 Has_Attachment Boolean
111 Gst_Treatment_Code String IN
112 Gst_Return_Details_Return_Period String IN
113 Gst_Return_Details_Status String IN
114 Invoice_Conversion_Type String IN
115 Tax_Override Boolean IN
116 Tax_Override_Preference String GO, US
117 Tax_Reg_No String BH, DE, SA, AE, OM
118 Custom_Fields_List String
119 Acquisition_Vat_Summary JSONData
120 Reverse_Charge_Vat_Summary JSONData
121 Taxes Array
122 Line_Items Array
123 Documents Array
124 Imported_Transactions Array
125 Tags Array

Invoice

# Column API type LIST GET
0 Invoice_Id String
1 Ach_Payment_Initiated Boolean
2 Invoice_Number String
3 Is_Pre_Gst Boolean IN IN
4 Place_Of_Supply String BH, DE, SA, AE, OM, IN
5 Gst_No String IN
6 Gst_Treatment String IN
7 Cfdi_Usage String
8 Cfdi_Reference_Type String
9 Reference_Invoice_Id String
10 Vat_Treatment String GB
11 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
12 Vat_Reg_No String DE, GB
13 Date String
14 Status String
15 Payment_Terms Number
16 Payment_Terms_Label String
17 Due_Date Date
18 Payment_Expected_Date Date
19 Last_Payment_Date Date
20 Reference_Number String
21 Customer_Id String
22 Customer_Name String
23 Currency_Id String
24 Currency_Code String
25 Exchange_Rate Number
26 Discount Number
27 Is_Discount_Before_Tax Boolean
28 Discount_Type String
29 Is_Inclusive_Tax Boolean
30 Recurring_Invoice_Id String
31 Is_Viewed_By_Client Boolean
32 Has_Attachment Boolean
33 Client_Viewed_Time Timestamp
34 Shipping_Charge Number
35 Adjustment Number
36 Adjustment_Description String
37 Sub_Total Number
38 Tax_Total Number
39 Total Number
40 Payment_Reminder_Enabled Boolean
41 Payment_Made Number
42 Credits_Applied Number
43 Tax_Amount_Withheld Number
44 Balance Number
45 Write_Off_Amount Number
46 Allow_Partial_Payments Boolean
47 Price_Precision Number
48 Is_Emailed Boolean
49 Reminders_Sent Number
50 Last_Reminder_Sent_Date Date
51 Billing_Address_Address String
52 Billing_Address_Street String
53 Billing_Address_Street2 String
54 Billing_Address_City String
55 Billing_Address_State String
56 Billing_Address_Zip String
57 Billing_Address_Country String
58 Billing_Address_Phone String
59 Billing_Address_Fax String
60 Billing_Address_Attention String
61 Billing_Address_Additional_Number String SA
62 Billing_Address_District_Sec_Lang String SA
63 Billing_Address_Attention_Sec_Lang String SA
64 Billing_Address_Address_Sec_Lang String SA
65 Billing_Address_District String SA
66 Billing_Address_Phone_Sec_Lang String SA
67 Billing_Address_Additional_Number_Sec_Lang String SA
68 Billing_Address_City_Sec_Lang String SA
69 Billing_Address_Street2_Sec_Lang String SA
70 Billing_Address_Fax_Sec_Lang String SA
71 Billing_Address_State_Sec_Lang String SA
72 Billing_Address_Zip_Sec_Lang String SA
73 Billing_Address_Country_Sec_Lang String SA
74 Shipping_Address_Address String
75 Shipping_Address_Street String
76 Shipping_Address_Street2 String
77 Shipping_Address_State_Code String
78 Shipping_Address_City String
79 Shipping_Address_State String
80 Shipping_Address_Zip String
81 Shipping_Address_Country String
82 Shipping_Address_Phone String
83 Shipping_Address_Fax String
84 Shipping_Address_Attention String
85 Shipping_Address_Additional_Number String SA
86 Shipping_Address_District_Sec_Lang String SA
87 Shipping_Address_Attention_Sec_Lang String SA
88 Shipping_Address_Address_Sec_Lang String SA
89 Shipping_Address_District String SA
90 Shipping_Address_Phone_Sec_Lang String SA
91 Shipping_Address_Additional_Number_Sec_Lang String SA
92 Shipping_Address_City_Sec_Lang String SA
93 Shipping_Address_Street2_Sec_Lang String SA
94 Shipping_Address_Fax_Sec_Lang String SA
95 Shipping_Address_State_Sec_Lang String SA
96 Shipping_Address_Zip_Sec_Lang String SA
97 Shipping_Address_Country_Sec_Lang String SA
98 Notes String
99 Terms String
100 Template_Id String
101 Template_Name String
102 Created_Time Timestamp
103 Last_Modified_Time Timestamp
104 Attachment_Name String
105 Can_Send_In_Mail Boolean
106 Salesperson_Id String
107 Salesperson_Name String
108 Invoice_Url String BH, SA, AE, OM, IN
109 Reason String
110 Is_Autobill_Enabled Boolean
111 Offline_Created_Date_With_Time Date
112 Shipping_Charge_Tax_Exemption_Id String DE, AU, CA, IN, GB, US
113 Submitted_By_Photo_Url String
114 Is_Reverse_Charge_Applied Boolean DE, IN, GB
115 Invoice_Source String
116 Email String
117 Computation_Type String
118 Shipping_Charge_Tax_Percentage String DE, GO, AU, CA, IN, GB, US
119 Transaction_Rounding_Type String
120 Created_By_Name String
121 Currency_Symbol String
122 Currency_Name_Formatted String
123 Discount_Total Number
124 Is_Backorder String
125 Shipping_Charge_Exclusive_Of_Tax Number DE, GO, AU, CA, IN, GB, US
126 Submitted_By_Email String
127 Subject_Content String
128 Shipping_Charge_Inclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
129 Shipping_Charge_Tax_Name String DE, GO, AU, CA, IN, GB, US
130 Payment_Discount Number
131 Zcrm_Potential_Id String
132 Bcy_Discount_Total Number
133 Zcrm_Potential_Name String
134 Shipping_Charge_Tax_Id String DE, GO, AU, CA, IN, GB, US
135 Ecomm_Operator_Name String
136 Inprocess_Transaction_Present Boolean
137 Reader_Offline_Payment_Initiated Boolean
138 Ach_Supported Boolean
139 Shipping_Charge_Inclusive_Of_Tax Number DE, GO, AU, CA, IN, GB, US
140 Discount_Percent Number
141 Bcy_Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
142 Bcy_Tax_Total Number
143 Shipping_Charge_Tax_Type String DE, GO, AU, CA, IN, GB, US
144 Bcy_Shipping_Charge Number
145 Discount_Applied_On_Amount Number
146 Filed_In_Vat_Return_Id String BH, DE, SA, AE, OM, AU, CA, IN, GB
147 Shipping_Charge_Tax_Exemption_Code String DE, AU, CA, IN, GB, US
148 Contact_Category String
149 Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
150 Shipping_Charge_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
151 Shipping_Charge_Exclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
152 Color_Code String
153 Bcy_Adjustment Number
154 Bcy_Sub_Total Number
155 Qr_Code_Qr_Source String
156 Qr_Code_Qr_Value String
157 Qr_Code_Qr_Description String
158 Qr_Code_Is_Qr_Enabled Boolean
159 Bcy_Total Number
160 Reverse_Charge_Tax_Total Number BH, DE, IN, GB
161 Roundoff_Value Number
162 Sub_Total_Inclusive_Of_Tax Number
163 Tax_Reg_No String BH, DE, SA, AE, OM, IN, GB
164 Is_Taxable Boolean All except KW, QA, GO
165 Tax_Rounding String
166 Orientation String
167 Filed_In_Vat_Return_Name String BH, DE, SA, AE, OM, AU, CA, IN, GB
168 Salesorder_Number String
169 Filed_In_Vat_Return_Type String BH, DE, SA, AE, OM, AU, CA, IN, GB
170 Tds_Calculation_Type String
171 Can_Send_Invoice_Sms Boolean
172 Stop_Reminder_Until_Payment_Expected_Date Boolean
173 Submitted_Date Date
174 Ecomm_Operator_Id String
175 Schedule_Time Timestamp
176 Created_By_Id String
177 Txn_Posting_Date Date
178 Merchant_Id String
179 Merchant_Name String
180 Salesorder_Id String
181 Includes_Package_Tracking_Info Boolean
182 Next_Reminder_Date_Formatted Date
183 Submitter_Id String
184 Approver_Id String
185 Submitted_By String
186 Submitted_By_Name String
187 Template_Type String
188 Unused_Retainer_Payments Number
189 Created_Date Date
190 Last_Modified_By_Id String
191 Page_Width String
192 Page_Height String
193 Sales_Channel String
194 Current_Sub_Status_Id String
195 Current_Sub_Status String
196 Estimate_Id String
197 Is_Client_Review_Settings_Enabled Boolean
198 Contact_Credit_Limit Number
199 Contact_Customer_Balance Number
200 Contact_Unused_Customer_Credits Number
201 Contact_Is_Credit_Limit_Migration_Completed Boolean
202 Customer_Default_Billing_Address_Zip String
203 Customer_Default_Billing_Address_Country String
204 Customer_Default_Billing_Address_Phone String
205 Customer_Default_Billing_Address_Street2 String
206 Customer_Default_Billing_Address_Address String
207 Customer_Default_Billing_Address_Fax String
208 Customer_Default_Billing_Address_City String
209 Customer_Default_Billing_Address_State String
210 Customer_Default_Billing_Address_State_Code String
211 Billing_Address_Zipcode String
212 Due_Days String
213 Project_Name String
214 Company_Name String
215 Shipping_Address_Zipcode String
216 Created_By String
217 Country String
218 Phone String
219 Updated_Time Timestamp
220 Transaction_Type String
221 Is_Export_With_Payment Boolean
222 Is_Eway_Bill_Required Boolean IN
223 Reason_For_Debit_Note String GO, IN
224 Merchant_Gst_No String IN
225 Can_Generate_Ewaybill_Using_Irn Boolean IN
226 Tds_Override_Preference String GO, IN
227 Shipping_Charge_Sac_Code String IN
228 Type String BH, SA, AE, KW, OM, QA, GO, IN BH, SA, AE, KW, OM, QA, GO, IN
229 Reference_Invoice_Type String IN
230 Tax_Specification String IN
231 Tax_Override_Preference String GO, CA, US
232 Gst_Return_Details_Return_Period String IN
233 Gst_Return_Details_Status String IN
234 Ecomm_Operator_Gst_No String IN
235 No_Of_Copies Number BH, SA, AE, KW, OM, QA, GO, IN BH, SA, AE, KW, OM, QA, GO, IN
236 Show_No_Of_Copies Boolean BH, SA, AE, KW, OM, QA, GO, IN BH, SA, AE, KW, OM, QA, GO, IN
237 Reference_Invoice_Reference_Invoice_Id String BH, SA, AE, KW, OM, QA, GO, IN
238 Discount_Account_Id String
239 Discount_Account_Name String
240 Mail_First_Viewed_Time String
241 Mail_Last_Viewed_Time String
242 Is_Viewed_In_Mail Boolean
243 Customer_Name_Sec_Lang String SA
244 Special_Transaction_Type String SA
245 Gcc_Vat_Treatment String BH, SA, AE, OM
246 Supply_Date String SA
247 Is_Simplified_Invoice Boolean SA
248 Hsn_Or_Sac String IN
249 Contact_Number String DE
250 Preceding_Invoice_Id String DE
251 Is_Correction_Invoice String DE
252 Tax_Exemption_Code String AU, CA, US
253 Tax_Exemption_Id String AU, CA, US
254 Tax_Authority_Id String AU, CA, US
255 Tax_Authority_Name String AU, CA, US
256 Line_Items Array
257 Contact_Persons Array
258 Payment_Options Object
259 Contact_Persons_Details Array
260 Salesorders Array
261 Customer_Custom_Fields Array
262 Approvers_List Array
263 Shipping_Bills Array
264 Documents Array
265 Taxes Array
266 Sub_Statuses Array
267 Deliverychallans Array
268 Tds_Summary JSONData IN
269 Debit_Notes JSONData GO, IN
270 Payment_Options_Payment_Gateways Array
271 Ewaybills JSONData IN

Item

# Column API type LIST GET
0 Item_Id String
1 Name String
2 Status String
3 Description String
4 Rate Number
5 Unit String
6 Tax_Id String All except DE, CA
7 Purchase_Tax_Rule_Id String DE, CA
8 Sales_Tax_Rule_Id String DE, CA DE, CA
9 Tax_Name String All except DE, CA
10 Hsn_Or_Sac String IN IN
11 Sat_Item_Key_Code String
12 Unitkey_Code String
13 Tax_Percentage Number All except DE, CA
14 Tax_Type String
15 Sku String
16 Product_Type String
17 Vendor_Id String
18 Offline_Created_Date_With_Time Date
19 Image_Name String
20 Crm_Owner_Id String
21 Created_At String
22 Maximum_Order_Quantity String
23 Pricing_Scheme String
24 Account_Name String
25 Purchase_Description String
26 Brand String
27 Manufacturer String
28 Source String
29 Created_Time Timestamp
30 Is_Default_Tax_Applied Boolean
31 Image_Type String
32 Is_Linked_With_Zohocrm Boolean
33 Zcrm_Product_Id String
34 Tax_Information_End_Date String
35 Tax_Information_Country_Code String
36 Tax_Information_Tax_Specification String
37 Tax_Information_Status String
38 Tax_Information_Tax_Specific_Type String
39 Tax_Information_Is_Non_Advol_Tax Boolean
40 Tax_Information_Tax_Groups_Details JSONData
41 Tax_Information_Type String
42 Tax_Information_Type_Formatted String
43 Tax_Information_Text String
44 Tax_Information_Percentage Number
45 Tax_Information_Id String
46 Tax_Information_Start_Date String
47 Unit_Id String
48 Account_Id String
49 Associated_Template_Id String
50 Purchase_Account_Id String
51 Purchase_Account_Name String
52 Tax_Exemption_Code String All except GO, KW, QA All except GO, KW, QA
53 Tax_Status String
54 Purchase_Rate Number
55 Tax_Country_Code String
56 Is_Taxable Boolean All except GO, KW, QA All except GO, KW, QA
57 Tax_Exemption_Id String All except GO, KW, QA All except GO, KW, QA
58 Item_Type String
59 Pricebook_Rate Number
60 Sales_Rate Number
61 Last_Modified_Time Timestamp
62 Include_In_Tax_Return Boolean AU, GB
63 Minimum_Order_Quantity String
64 Is_Fulfillable Boolean
65 Vendor_Name String
66 Tax_Start_Date String IN
67 Tax_End_Date String IN
68 Taxability_Type String IN
69 Tax_Information String
70 Is_Tax_Expired String IN
71 Tax_Groups_Details String
72 Name_Sec_Lang String SA
73 Purchase_Tax_Percentage Number GO, CA
74 Purchase_Tax_Name String GO, CA
75 Purchase_Tax_Information Object
76 Purchase_Tax_Information_Tax_Specification String DE, CA
77 Purchase_Tax_Information_Type_Formatted String DE, CA
78 Purchase_Tax_Information_Country_Code String DE, CA
79 Purchase_Tax_Information_Status String DE, CA
80 Purchase_Tax_Information_Tax_Specific_Type String DE, CA
81 Purchase_Tax_Information_Type String DE, CA
82 Purchase_Tax_Information_End_Date String DE, CA
83 Purchase_Tax_Information_Is_Non_Advol_Tax Boolean DE, CA
84 Purchase_Tax_Information_Tax_Groups_Details JSONData DE, CA
85 Purchase_Tax_Information_Percentage Number DE, CA
86 Purchase_Tax_Information_Text String DE, CA
87 Purchase_Tax_Information_Id String DE, CA
88 Purchase_Tax_Information_Start_Date String DE, CA
89 Purchase_Tax_Exemption_Code String DE, CA
90 Sales_Tax_Rule_Name String DE, CA
91 Purchase_Tax_Exemption_Id String DE, CA
92 Purchase_Tax_Id String GO, CA
93 Purchase_Tax_Type String GO, CA
94 Purchase_Tax_Rule_Name String DE, CA
95 Has_Attachment Boolean
96 Item_Name String
97 Image_Document_Id String
98 Item_Tax_Preferences JSONData IN IN
99 Warehouses JSONData
100 Documents Array
101 Default_Price_Brackets Array
102 Price_Brackets Array
103 Tags Array
104 Sales_Channels Array
105 Preferred_Vendors Array

Journal

# Column API type LIST GET
0 Journal_Id String
1 Entry_Number String
2 Reference_Number String
3 Notes String
4 Currency_Id String
5 Currency_Code String
6 Currency_Symbol String
7 Exchange_Rate Number
8 Journal_Date Date
9 Journal_Type String
10 Vat_Treatment String GB
11 Product_Type String DE, OM, GB
12 Include_In_Vat_Return Boolean AU, GB
13 Is_Bas_Adjustment Boolean AU
14 Line_Item_Total Number
15 Total Number
16 Bcy_Total Number
17 Price_Precision Number
18 Created_Time Timestamp
19 Last_Modified_Time Timestamp
20 Status String
21 Journal_Number_Suffix String
22 Tax_Treatment String DE, GB
23 Journal_Template_Name String
24 Journal_Number_Prefix String
25 Journal_Transaction_Type String DE, GO, GB
26 Available_Receivables_Credits Number
27 Available_Payables_Credits Number
28 Reverse_Charge_Vat_Total Number
29 Is_Accrual_Journal Boolean
30 Project_Id String
31 Project_Name String
32 Custom_Fields String
33 Branch_Difference Array
34 Created_By_Name String
35 Entity_Type String
36 Created_By_Id String
37 Line_Items Array
38 Taxes Array
39 Bills_Credited Array
40 Reverse_Charge_Vat_Summary JSONData
41 Documents Array
42 Comments Array
43 Imported_Transactions Array
44 Invoices_Credited Array

Opening_Balance

# Column API type LIST GET
0 Opening_Balance_Id String
1 Date String
2 Price_Precision Number
3 Total Number
4 Total_Formatted String
5 Date_Formatted String
6 Can_Show_Customer_Ob Boolean
7 Can_Show_Vendor_Ob Boolean
8 Accounts Array
9 Comments Array

Organization

# Column API type LIST GET
0 Organization_Id String
1 Name String
2 Contact_Name String
3 Email String
4 Is_Default_Org Boolean
5 Language_Code String
6 Fiscal_Year_Start_Month String
7 Account_Created_Date Date
8 Time_Zone String
9 Is_Org_Active Boolean
10 Currency_Id String
11 Currency_Code String
12 Currency_Symbol String
13 Currency_Format String
14 Price_Precision Number
15 Is_Retainerinvoice_Enabled Boolean
16 Previous_Invoicing_Option String
17 Role_Id String
18 Custom_Field_Type Number
19 Weight_Unit String
20 User_Role String
21 Is_Sez Boolean
22 Business_Type String
23 Is_Trial_Period_Extended Boolean
24 Is_Portal_Enabled Boolean
25 Logo_Url String
26 Date_Format String
27 Store_Logo_Url String
28 Field_Separator String
29 Is_Estimate_Enabled Boolean
30 Is_Public_Domain Boolean
31 Primary_Domain_Name String
32 Can_Show_Authentication_Warning Boolean
33 Remit_To_Address String
34 Tax_Id_Label String
35 Fiscal_Year_Start_Date Number
36 Service_User_Number String
37 Is_Free_Zone Boolean
38 Industry_Type String
39 Industry_Size String
40 Is_Designated_Zone Boolean
41 Is_Project_Enabled Boolean
42 Previous_Product_Option String
43 Company_Id_Label String
44 Store_Url String
45 Company_Id_Value String
46 Tax_Basis String
47 Is_New_Customer_Custom_Fields Boolean
48 Tax_Id_Value String
49 Version String
50 Unverified_Emails_Count Number
51 Fax String
52 Status String
53 Is_Registered_For_Gst Boolean
54 Address_Country String
55 Address_Street_Address1 String
56 Address_City String
57 Address_Street_Address2 String
58 Address_Longitude String
59 Address_State String
60 Address_State_Code String
61 Address_Zip String
62 Address_Latitude String
63 Tax_Settings_Tax_Reg_No String
64 Tax_Settings_Is_Tax_Registered Boolean
65 Tax_Settings_Tax_Registered_Date String BH, DE, SA, AE
66 Tax_Settings_Tax_Reg_No_Label String BH, DE, SA, AE
67 Tax_Settings_International_Trade_Enabled String BH, DE, SA, AE
68 Tax_Settings_Flat_Rate_Scheme String
69 Tax_Settings_Flat_Rate_Percentage String
70 Tax_Settings_Tax_Return_Start_Date String BH, DE, SA, AE
71 Phone String
72 Org_Address String
73 Website String
74 Dimension_Unit String
75 Is_Late_Fee_Disabled Boolean
76 Portal_Name String
77 Is_Purchaseorder_Enabled Boolean
78 Is_Salesorder_Enabled Boolean
79 Mode String
80 Payments_Url String
81 Is_Composition_Scheme_Enabled String
82 Tax_Group_Enabled Boolean
83 Source Number
84 IsOrgNotSupported Boolean
85 Is_Registered_For_Tax Boolean
86 Partners_Domain String
87 State String
88 Country String
89 Digital_Signature_Mode String
90 Country_Code String
91 Org_Settings Boolean
92 Is_Ziedition Boolean
93 Account_Created_Date_Formatted Date
94 Is_Tax_Registered Boolean
95 Zoho_One_Org String
96 Org_Type String
97 Is_Sku_Enabled Boolean
98 State_Code String
99 Zi_Zb_Edition Number
100 User_Status Number
101 Org_Created_App_Source Number
102 Zi_Zb_Client Number
103 Can_Show_Document_Tab Boolean
104 Is_Solo_Org Boolean
105 Sales_Tax_Type String
106 Version_Formatted String
107 Is_Gst_India_Version Boolean
108 User_Status_Formatted String
109 Is_Sales_Inclusive_Tax_Enabled Boolean
110 Is_Search460_Enabled String
111 Is_International_Trade_Enabled Boolean
112 Time_Zone_Formatted String
113 Can_Change_Timezone Boolean
114 Is_Quick_Setup_Completed Boolean
115 Is_Dsign_Required Boolean
116 Can_Sign_Invoice Boolean
117 Is_User_Dsign_Mandatory Boolean
118 Plan_Type Number
119 IsOrgActive Boolean
120 Plan_Name String
121 Is_Hsn_Or_Sac_Enabled Boolean
122 Plan_Period String
123 Is_Trial_Expired Boolean
124 Is_Invoice_Pmt_Tds_Allowed Boolean
125 Is_Scan_Preference_Enabled Boolean
126 Is_User_Accountant Boolean
127 Org_Action String
128 AppList Array
129 Is_Zpayroll_Grid Boolean
130 Is_Po_Enabled String
131 Is_Inventory_Enabled String
132 Is_Trial_Extended String
133 Zi_Migration_Status String
134 Is_Bill_Of_Supply_Enabled String
135 Org_Joined_App_List Array

Project

# Column API type LIST GET
0 Project_Id String
1 Project_Name String
2 Customer_Id String
3 Customer_Name String
4 Currency_Code String
5 Description String
6 Status String
7 Billing_Type String
8 Rate Number
9 Budget_Type String
10 Total_Hours String
11 Total_Amount Number
12 Billed_Hours String
13 Billed_Amount Number
14 Un_Billed_Hours String
15 Un_Billed_Amount Number
16 Billable_Hours String
17 Billable_Amount Number
18 Non_Billable_Hours String
19 Cost_Budget_Amount Number
20 Is_Recurrence_Associated String
21 Created_Time Timestamp
22 Last_Modified_Time Timestamp
23 Show_In_Dashboard Boolean
24 Project_Head_Id String
25 Unused_Retainer_Payments Number
26 Budget_Amount Number
27 Customer_Email String
28 Created_By_Id String
29 Budget_Threshold Number
30 Is_From_Zoho_Projects Boolean
31 Currency_Id String
32 Project_Code String
33 Customer_Vat_Treatment String GB
34 Customer_First_Name String
35 Hours_Per_Day String
36 Photo_Url String
37 Billing_Rate_Frequency String
38 Is_Budget_Threshold_Notification_Enabled Boolean
39 Is_Client_Approval_Needed Boolean
40 Zohoworkerly_Project_Id String
41 Is_User_Approval_Needed Boolean
42 Project_Head_Name String
43 Is_Valid_Project_Head Boolean
44 Budget_Threshold_Formatted String
45 Is_Expense_Inclusive Number
46 Total_Amount_Expense_Inclusive String
47 Last_Modified_By_Id String
48 Non_Billable_Amount Number
49 Is_From_Zoho_People Boolean
50 Has_Active_Recurring_Profiles Boolean
51 Zohopeople_Project_Id String
52 Can_Be_Invoiced Boolean
53 Other_Service_App_Source String
54 Has_Attachment Boolean
55 Users_Working Number
56 Recurring_Invoices String
57 Tasks Array
58 Users Array
59 Documents Array
60 Accounts_Budgets Array

Purchase_Order

# Column API type LIST GET
0 Purchaseorder_Id String
1 Vat_Treatment String GB
2 Gst_No String IN
3 Gst_Treatment String IN
4 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
5 Is_Pre_Gst String IN
6 Source_Of_Supply String IN
7 Destination_Of_Supply String IN
8 Place_Of_Supply String BH, DE, SA, AE, OM
9 Pricebook_Id String
10 Pricebook_Name String
11 Is_Reverse_Charge_Applied String BH, DE, SA, AE, OM, IN, GB
12 Purchaseorder_Number String
13 Date String
14 Expected_Delivery_Date Date
15 Discount Number
16 Discount_Account_Id String
17 Is_Discount_Before_Tax Boolean
18 Reference_Number String
19 Status String
20 Vendor_Id String
21 Vendor_Name String
22 Crm_Owner_Id String
23 Currency_Id String
24 Currency_Code String
25 Currency_Symbol String
26 Exchange_Rate Number
27 Delivery_Date Date
28 Is_Emailed Boolean
29 Is_Inclusive_Tax Boolean
30 Sub_Total Number
31 Tax_Total Number
32 Total Number
33 Acquisition_Vat_Total String
34 Reverse_Charge_Vat_Total String
35 Billing_Address_Address String
36 Billing_Address_Street2 String
37 Billing_Address_City String
38 Billing_Address_State String
39 Billing_Address_Zip String
40 Billing_Address_Country String
41 Billing_Address_Fax String
42 Billing_Address_Attention String
43 Notes String
44 Terms String
45 Ship_Via String
46 Ship_Via_Id String
47 Attention String
48 Delivery_Org_Address_Id String
49 Delivery_Customer_Id String
50 Delivery_Address_Zip String
51 Delivery_Address_Is_Verifiable String SA
52 Delivery_Address_State String
53 Delivery_Address_Address1 String
54 Delivery_Address_Address2 String
55 Delivery_Address_Is_Valid String SA
56 Delivery_Address_City String
57 Delivery_Address_Country String
58 Delivery_Address_Address String
59 Delivery_Address_Email String SA
60 Delivery_Address_Is_Primary String SA
61 Delivery_Address_Organization_Address_Id String
62 Delivery_Address_Phone String
63 Delivery_Address_Is_Verified String SA
64 Price_Precision Number
65 Attachment_Name String
66 Can_Send_In_Mail Boolean
67 Template_Id String
68 Template_Name String
69 Page_Width String
70 Page_Height String
71 Orientation String
72 Template_Type String
73 Created_By_Id String
74 Created_Time Timestamp
75 Last_Modified_Time Timestamp
76 Can_Mark_As_Bill Boolean
77 Can_Mark_As_Unbill Boolean
78 Order_Status String
79 Tds_Calculation_Type String
80 Submitted_By_Name String
81 Contact_Category String
82 Payment_Terms Number
83 Tax_Rounding String
84 Current_Sub_Status_Id String
85 Client_Viewed_Time Timestamp
86 Is_Viewed_By_Client Boolean
87 Is_Adv_Tracking_In_Receive Boolean
88 Billed_Status String
89 Billing_Address_Id String
90 Color_Code String
91 Sub_Total_Inclusive_Of_Tax Number
92 Submitted_Date Date
93 Current_Sub_Status String
94 Billing_Address_Phone String
95 Submitted_By_Email String
96 Has_Qty_Cancelled Boolean
97 Total_Quantity Number
98 Submitted_By_Photo_Url String
99 Tax_Override_Preference String GO, AU, CA, GB
100 Discount_Applied_On_Amount Number
101 Adjustment Number
102 Adjustment_Description String
103 Discount_Amount Number
104 Submitter_Id String
105 Discount_Type String
106 Payment_Terms_Label String
107 Submitted_By String
108 Approver_Id String
109 Delivery_Customer_Address_Id String
110 Has_Attachment Boolean
111 Company_Name String
112 Due_In_Days String
113 Quantity_Marked_As_Received Number
114 Delivery_Days String
115 Due_By_Days String
116 Quantity_Yet_To_Receive Number
117 Tax_Override String IN
118 Tds_Override_Preference String GO, IN
119 Tds_Summary String IN
120 Is_Discount_Tax_Inclusive String AU
121 Tax_Reg_No String BH, DE, SA, AE, OM
122 Documents Array
123 Contact_Persons Array
124 Line_Items Array
125 Taxes Array
126 Acquisition_Vat_Summary String
127 Reverse_Charge_Vat_Summary String
128 Bills Array
129 Sub_Statuses Array
130 Approvers_List Array
131 Salesorders Array
132 Receives Array

Recurring_Bill

# Column API type LIST GET
0 Recurring_Bill_Id String
1 Recurrence_Name String
2 Recurrence_Frequency String
3 Next_Bill_Date Date
4 Status String
5 Total Number
6 Last_Sent_Date Date
7 Vendor_Id String
8 Vendor_Name String
9 Start_Date Date
10 End_Date Date
11 Last_Modified_Time Timestamp
12 Repeat_Every Number
13 Created_Time Timestamp
14 Tax_Rounding String
15 Currency_Code String
16 Is_Item_Level_Tax_Calc Boolean
17 Discount_Setting String
18 Reference_Id String
19 Vat_Treatment String GB
20 Adjustment_Description String
21 Contact_Category String
22 Is_Reverse_Charge_Applied String BH, DE, SA, AE, OM, IN, GB
23 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
24 Tds_Calculation_Type String
25 Tds_Tax_Name String
26 Currency_Id String
27 Payment_Terms Number
28 Payment_Terms_Label String
29 Discount_Amount Number
30 Price_Precision Number
31 Is_Inclusive_Tax Boolean
32 Template_Id String
33 Exchange_Rate Number
34 Terms String
35 Last_Modified_By_Id String
36 Track_Discount_In_Account Boolean
37 Discount_Account_Id String
38 Subject_Content String
39 Discount Number
40 Sub_Total Number
41 Tax_Total Number
42 Adjustment Number
43 Discount_Type String
44 Discount_Applied_On_Amount Number
45 Notes String
46 Is_Discount_Before_Tax Boolean
47 Created_By_Id String
48 Template_Name String
49 Tds_Percent String IN
50 Tds_Amount String IN
51 Source_Of_Supply String IN
52 Destination_Of_Supply String IN
53 Gst_No String IN
54 Gst_Treatment String IN
55 Tds_Tax_Id String IN
56 Tax_Account_Id String IN
57 Is_Pre_Gst String IN
58 Is_Tds_Amount_In_Percent String IN
59 Tds_Section String IN
60 Tax_Override String IN
61 Tds_Override_Preference String GO, IN
62 Place_Of_Supply String BH, DE, SA, AE, OM
63 Tax_Reg_No String BH, DE, SA, AE, OM
64 Permit_Number String BH, SA, AE, OM
65 Abn String AU
66 Is_Discount_Tax_Inclusive String AU
67 Is_Abn_Quoted String AU
68 Tax_On_Discount_Preference String AU
69 Billing_Address_Id String
70 Billing_Address_Address String
71 Billing_Address_Country String
72 Billing_Address_Street2 String
73 Billing_Address_City String
74 Billing_Address_Fax String
75 Billing_Address_State String
76 Billing_Address_Zip String
77 Billing_Address_Phone String
78 Billing_Address_Attention String
79 Tds_Summary String IN
80 Taxes Array
81 Line_Items Array

Recurring_Expense

# Column API type LIST GET
0 Recurring_Expense_Id String
1 Recurrence_Name String
2 Start_Date Date
3 End_Date Date
4 Is_Pre_Gst String IN
5 Source_Of_Supply String IN
6 Destination_Of_Supply String IN
7 Place_Of_Supply String BH, DE, SA, AE, OM
8 Gst_No String IN
9 Gst_Treatment String IN
10 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
11 Destination_Of_Supply_State String IN
12 Hsn_Or_Sac String IN
13 Vat_Treatment String GB
14 Reverse_Charge_Tax_Id String BH, DE, SA, AE, OM, IN, GB
15 Reverse_Charge_Tax_Name String
16 Reverse_Charge_Tax_Percentage String
17 Reverse_Charge_Tax_Amount String
18 Is_Reverse_Charge_Applied String BH, DE, SA, AE, OM, IN, GB
19 Acquisition_Vat_Total String
20 Reverse_Charge_Vat_Total String
21 Recurrence_Frequency String
22 Repeat_Every Number
23 Amount Number
24 Total Number
25 Sub_Total Number
26 Bcy_Total Number
27 Product_Type String BH, DE, SA, AE, OM, IN, GB
28 Acquisition_Vat_Id String
29 Reverse_Charge_Vat_Id String
30 Tax_Id String
31 Tax_Name String
32 Tax_Percentage Number
33 Created_Time Timestamp
34 Last_Modified_Time Timestamp
35 Is_Inclusive_Tax Boolean
36 Is_Billable Boolean
37 Customer_Id String
38 Currency_Id String
39 Exchange_Rate Number
40 Project_Id String
41 Project_Name String
42 Paid_Through_Account_Id String
43 Paid_Through_Account_Name String
44 Vendor_Id String
45 Vendor_Name String
46 Vendor_Country_Code String
47 Tax_Exemption_Code String BH, DE, SA, AE, OM, AU, IN, GB
48 Next_Expense_Date Date
49 Last_Created_Date Date
50 Markup_Percent Number
51 Account_Id String
52 Account_Name String
53 Created_By_Id String
54 Status String
55 Currency_Code String
56 Employee_Id String
57 Employee_Name String
58 Employee_Email String
59 Tax_Amount Number
60 Tax_Exemption_Id String BH, DE, SA, AE, OM, AU, IN, GB
61 Customer_Vat_Treatment String GB
62 Tax_Name_Formatted String
63 Itc_Eligibility String BH, SA, AE, OM, IN, GB
64 Description String
65 Customer_Name String
66 Last_Modified_By_Id String
67 Mileage_Rate Number
68 Mileage_Unit String
69 Gst_Treatment_Code String IN
70 Tax_Reg_No String BH, DE, SA, AE, OM
71 Line_Items Array
72 Acquisition_Vat_Summary String
73 Reverse_Charge_Vat_Summary String
74 Tags Array

Recurring_Invoice

# Column API type LIST GET
0 Recurring_Invoice_Id String
1 Recurrence_Name String
2 Reference_Number String
3 Status String
4 Total Number
5 Customer_Id String
6 Customer_Name String
7 Child_Entity_Type String
8 Recurrence_Frequency String
9 Repeat_Every Number
10 Is_Pre_Gst String IN
11 Gst_No String IN
12 Gst_Treatment String IN
13 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
14 Cfdi_Usage String
15 Vat_Treatment String GB
16 Place_Of_Supply String BH, DE, SA, AE, OM, IN
17 Currency_Id String
18 Currency_Code String
19 Currency_Symbol String
20 Created_Time Timestamp
21 Last_Modified_Time Timestamp
22 Created_By_Id String
23 Last_Modified_By_Id String
24 Start_Date Date
25 End_Date Date
26 Last_Sent_Date Date
27 Next_Invoice_Date Date
28 Avatax_Exempt_No String
29 Avatax_Use_Code String
30 Salesperson_Id String
31 Salesperson_Name String
32 Last_Four_Digits String
33 Subject_Content String
34 Payment_Terms Number
35 Payment_Terms_Label String
36 Is_Taxable String All except GO, KW, QA
37 Contact_Category String
38 Customer_Email String
39 Customer_Phone String
40 Customer_Mobile_Phone String
41 Photo_Url String
42 Company_Name String
43 Contact_Persons Array
44 Price_Precision Number
45 Exchange_Rate Number
46 Discount Number
47 Discount_Applied_On_Amount Number
48 Is_Discount_Before_Tax Boolean
49 Discount_Type String
50 Tax_Rounding String
51 Is_Inclusive_Tax Boolean
52 Paid_Invoices_Total Number
53 Unpaid_Invoices_Balance Number
54 Is_Reverse_Charge_Applied String
55 Bcy_Shipping_Charge Number
56 Bcy_Adjustment Number
57 Bcy_Sub_Total Number
58 Bcy_Discount_Total Number
59 Bcy_Tax_Total Number
60 Bcy_Total Number
61 Bcy_Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
62 Discount_Percent Number
63 Discount_Total Number
64 Adjustment Number
65 Adjustment_Description String
66 Recurrence_Preferences String
67 Is_General_Preference Boolean
68 Shipping_Charge_Tax_Id String DE, GO, AU, CA, IN, GB, US
69 Shipping_Charge_Tax_Name String DE, GO, AU, CA, IN, GB, US
70 Shipping_Charge_Tax_Type String DE, GO, AU, CA, IN, GB, US
71 Shipping_Charge_Tax_Percentage String DE, GO, AU, CA, IN, GB, US
72 Shipping_Charge_Tax_Exemption_Id String DE, AU, CA, IN, GB, US
73 Shipping_Charge_Tax_Exemption_Code String DE, AU, CA, IN, GB, US
74 Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
75 Shipping_Charge_Exclusive_Of_Tax String DE, GO, AU, CA, IN, GB, US
76 Shipping_Charge_Inclusive_Of_Tax String DE, GO, AU, CA, IN, GB, US
77 Shipping_Charge_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
78 Shipping_Charge_Exclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
79 Shipping_Charge_Inclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
80 Shipping_Charge Number
81 Roundoff_Value Number
82 Transaction_Rounding_Type String
83 Sub_Total Number
84 Sub_Total_Inclusive_Of_Tax Number
85 Tax_Total Number
86 Reverse_Charge_Tax_Total String BH, DE, IN, GB
87 Allow_Partial_Payments Boolean
88 Tds_Calculation_Type String
89 Template_Id String
90 Template_Name String
91 Page_Width String
92 Page_Height String
93 Orientation String
94 Notes String
95 Terms String
96 Actual_Child_Invoices_Count Number
97 Manual_Child_Invoices_Count Number
98 Is_Autobill_Enabled Boolean
99 Unpaid_Child_Invoices_Count String
100 Tax_Specification String IN
101 Shipping_Charge_Sac_Code String IN
102 Tds_Override_Preference String GO, IN
103 Contact_Number String DE
104 Tax_Exemption_Code String AU, CA, US
105 Tax_Authority_Id String AU, CA, US
106 Tax_Exemption_Id String AU, CA, US
107 Tax_Authority_Name String AU, CA, US
108 Tax_Override_Preference String GO, CA, US
109 Tax_Reg_No String BH, DE, SA, AE, OM
110 Billing_Address_Address String
111 Billing_Address_Street2 String
112 Billing_Address_City String
113 Billing_Address_State String
114 Billing_Address_Zip String
115 Billing_Address_Country String
116 Billing_Address_Fax String
117 Billing_Address_Phone String
118 Billing_Address_Attention String
119 Shipping_Address_Address String
120 Shipping_Address_Street2 String
121 Shipping_Address_City String
122 Shipping_Address_State String
123 Shipping_Address_Zip String
124 Shipping_Address_Country String
125 Shipping_Address_Fax String
126 Shipping_Address_Phone String
127 Shipping_Address_Attention String
128 Line_Items Array
129 Payment_Options Object
130 Taxes Array
131 Comments Array
132 Project_Details Array
133 Tds_Summary String IN
134 Payment_Options_Payment_Gateways Array

Retainer_Invoice

# Column API type LIST GET
0 RetainerInvoice_Id String
1 Retainerinvoice_Number String
2 Date String
3 Status String
4 Is_Pre_Gst String IN
5 Place_Of_Supply String BH, DE, SA, AE, OM, IN
6 Project_Id String
7 Project_Name String
8 Last_Payment_Date Date
9 Reference_Number String
10 Customer_Id String
11 Customer_Name String
12 Currency_Id String
13 Currency_Code String
14 Currency_Symbol String
15 Exchange_Rate Number
16 Is_Viewed_By_Client Boolean
17 Client_Viewed_Time Timestamp
18 Is_Inclusive_Tax Boolean
19 Sub_Total Number
20 Total Number
21 Payment_Made Number
22 Payment_Drawn Number
23 Balance Number
24 Allow_Partial_Payments Boolean
25 Price_Precision Number
26 Is_Emailed Boolean
27 Notes String
28 Terms String
29 Template_Id String
30 Template_Name String
31 Page_Width String
32 Page_Height String
33 Orientation String
34 Template_Type String
35 Created_Time Timestamp
36 Last_Modified_Time Timestamp
37 Created_By_Id String
38 Attachment_Name String
39 Can_Send_In_Mail Boolean
40 Invoice_Url String
41 Roundoff_Value Number
42 Current_Sub_Status String
43 Vat_Treatment String GB
44 Mail_Last_Viewed_Time String
45 Color_Code String
46 Payments Array
47 Current_Sub_Status_Id String
48 Unused_Retainer_Payments Number
49 Tax_Treatment String DE, GB
50 Transaction_Rounding_Type String
51 Tax_Reg_No String BH, DE, SA, AE, OM, IN, GB
52 Submitted_Date Date
53 Tax_Rounding String
54 Submitted_By_Photo_Url String
55 Mail_First_Viewed_Time String
56 Billing_Address_Address String
57 Billing_Address_Street2 String
58 Billing_Address_City String
59 Billing_Address_State String
60 Billing_Address_Zip String
61 Billing_Address_Country String
62 Billing_Address_Fax String
63 Billing_Address_Phone String
64 Billing_Address_Attention String
65 Shipping_Address_Address String
66 Shipping_Address_City String
67 Shipping_Address_State String
68 Shipping_Address_Zip String
69 Shipping_Address_Country String
70 Shipping_Address_Fax String
71 Shipping_Address_Street2 String
72 Shipping_Address_Phone String
73 Shipping_Address_Attention String
74 Last_Modified_By_Id String
75 Submitted_By String
76 Submitted_By_Name String
77 Submitted_By_Email String
78 Ach_Payment_Initiated Boolean
79 Estimate_Number String
80 Project_Or_Estimate_Name String
81 Has_Attachment Boolean
82 Tax_Specification String IN
83 Special_Transaction_Type String SA SA
84 Contact_Number String DE
85 Contact_Persons Array
86 Line_Items Array
87 Taxes Array
88 Documents Array
89 Payment_Options Object
90 Approvers_List Array
91 Sub_Statuses Array
92 Payment_Options_Payment_Gateways Array

Salesorder

# Column API type LIST GET
0 Salesorder_Id String
1 Is_Pre_Gst String IN
2 Gst_No String IN
3 Gst_Treatment String IN
4 Place_Of_Supply String BH, DE, SA, AE, OM, IN
5 Vat_Treatment String GB
6 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
7 Zcrm_Potential_Id String
8 Zcrm_Potential_Name String
9 Salesorder_Number String
10 Date String
11 Status String
12 Shipment_Date Date
13 Reference_Number String
14 Customer_Id String
15 Customer_Name String
16 Currency_Id String
17 Currency_Code String
18 Currency_Symbol String
19 Exchange_Rate Number
20 Discount_Amount String
21 Discount Number
22 Discount_Applied_On_Amount Number
23 Is_Discount_Before_Tax Boolean
24 Discount_Type String
25 Estimate_Id String
26 Delivery_Method String
27 Delivery_Method_Id String
28 Is_Inclusive_Tax Boolean
29 Shipping_Charge Number
30 Adjustment Number
31 Adjustment_Description String
32 Sub_Total Number
33 Tax_Total Number
34 Total Number
35 Price_Precision Number
36 Is_Emailed Boolean
37 Notes String
38 Terms String
39 Template_Id String
40 Template_Name String
41 Page_Width String
42 Page_Height String
43 Orientation String
44 Template_Type String
45 Created_Time Timestamp
46 Last_Modified_Time Timestamp
47 Created_By_Id String
48 Attachment_Name String
49 Can_Send_In_Mail Boolean
50 Salesperson_Id String
51 Salesperson_Name String
52 Merchant_Id String
53 Merchant_Name String
54 Order_Status String
55 Bcy_Shipping_Charge Number
56 Discount_Percent Number
57 Billing_Address_Phone String
58 Billing_Address_Country_Code String
59 Billing_Address_State_Code String
60 Roundoff_Value Number
61 Offline_Created_Date_With_Time Date
62 Paid_Status String
63 Tds_Calculation_Type String
64 Tracking_Url String
65 Has_Discount Boolean
66 Approver_Id String
67 Submitter_Id String
68 Bcy_Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
69 Color_Code String
70 Submitted_By_Email String
71 Tax_Rounding String
72 Current_Sub_Status_Id String
73 Payment_Terms_Label String
74 Is_Taxable String All except GO, KW, QA
75 Current_Sub_Status String
76 Pickup_Location_Id String
77 Source String
78 Created_Date Date
79 Contact_Category String
80 Submitted_By_Name String
81 Submitted_By String
82 Has_Shipping_Address Boolean
83 Bcy_Adjustment Number
84 Sub_Total_Exclusive_Of_Discount Number
85 Shipping_Charge_Tax String DE, GO, AU, CA, IN, GB, US
86 Invoiced_Status String
87 Shipping_Charge_Inclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
88 Account_Identifier String
89 Shipping_Charge_Inclusive_Of_Tax String DE, GO, AU, CA, IN, GB, US
90 Created_By_Email String
91 Integration_Id String
92 Last_Modified_By_Id String
93 Shipping_Charge_Tax_Name String DE, GO, AU, CA, IN, GB, US
94 Submitted_Date Date
95 Has_Qty_Cancelled Boolean
96 Is_Reverse_Charge_Applied String
97 Created_By_Name String
98 Total_Quantity Number
99 Shipping_Address_Id String
100 Entity_Tags String
101 Submitted_By_Photo_Url String
102 Bcy_Sub_Total Number
103 Billing_Address_Id String
104 Is_Test_Order Boolean
105 Shipping_Charge_Tax_Percentage String DE, GO, AU, CA, IN, GB, US
106 Payment_Terms Number
107 Bcy_Total Number
108 Is_Adv_Tracking_In_Package Boolean
109 Shipping_Charge_Tax_Id String DE, GO, AU, CA, IN, GB, US
110 Shipping_Charge_Tax_Type String DE, GO, AU, CA, IN, GB, US
111 Shipping_Charge_Tax_Exemption_Id String DE, AU, CA, IN, GB, US
112 Shipping_Charge_Tax_Exemption_Code String DE, AU, CA, IN, GB, US
113 Shipping_Charge_Exclusive_Of_Tax String DE, GO, AU, CA, IN, GB, US
114 Shipping_Charge_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
115 Shipping_Charge_Exclusive_Of_Tax_Formatted String DE, GO, AU, CA, IN, GB, US
116 Transaction_Rounding_Type String
117 Sub_Total_Inclusive_Of_Tax Number
118 Discount_Total Number
119 Bcy_Discount_Total Number
120 Bcy_Tax_Total Number
121 Computation_Type String
122 Reverse_Charge_Tax_Total String BH, DE, IN, GB
123 Contact_Unused_Customer_Credits Number
124 Contact_Customer_Balance Number
125 Contact_Credit_Limit Number
126 Contact_Is_Credit_Limit_Migration_Completed Boolean
127 Balance Number
128 Billing_Address_Address String
129 Billing_Address_Street2 String
130 Billing_Address_City String
131 Billing_Address_State String
132 Billing_Address_Zip String
133 Billing_Address_Country String
134 Billing_Address_Fax String
135 Billing_Address_Attention String
136 Shipping_Address_Address String
137 Shipping_Address_Street2 String
138 Shipping_Address_City String
139 Shipping_Address_State String
140 Shipping_Address_Zip String
141 Shipping_Address_Country String
142 Shipping_Address_Phone String
143 Shipping_Address_Country_Code String
144 Shipping_Address_State_Code String
145 Shipping_Address_Fax String
146 Shipping_Address_Attention String
147 Has_Attachment Boolean
148 Delivery_Date Date
149 Email String
150 Company_Name String
151 Custom_Fields_List String
152 Due_By_Days String
153 Shipment_Days String
154 Due_In_Days String
155 Total_Invoiced_Amount Number
156 Quantity_Invoiced Number
157 Order_Fulfillment_Type String
158 Invoice_Conversion_Type String IN
159 Tds_Override_Preference String GO, IN
160 Tax_Specification String IN
161 Tax_Override_Preference String GO, CA, US
162 Shipping_Charge_Sac_Code String IN
163 Merchant_Gst_No String IN
164 Tax_Reg_No String BH, DE, SA, AE, OM
165 Contact_Contact_Number String DE
166 Documents Array
167 Contact_Persons Array
168 Line_Items Array
169 Taxes Array
170 Purchaseorders Array
171 Sub_Statuses Array
172 Contact_Person_Details Array
173 Invoices Array
174 Approvers_List Array
175 Tds_Summary String IN

Salesreceipt

# Column API type LIST GET
0 Sales_Receipt_Id String
1 Notes String
2 Reference_Number String
3 Last_Modified_Time Timestamp
4 Receipt_Number String
5 Status String
6 Salesperson_Name String
7 Exchange_Rate Number
8 Date String
9 Txn_Posting_Date Date
10 Payment_Mode Number
11 Customer_Name String
12 Currency_Id String
13 Total Number
14 Payment_Mode_Formatted String
15 Company_Name String
16 Payment_Mode_Name String
17 Customer_Id String
18 Currency_Code String
19 Created_Time Timestamp
20 Salesperson_Id String
21 Created_By String
22 Tax_Rounding String
23 Discount_Applied_On_Amount Number
24 Discount_Amount String
25 Page_Width String
26 Computation_Type String
27 Can_Send_Sms String
28 Bcy_Sub_Total Number
29 Shipping_Charge_Exclusive_Of_Tax Number
30 Shipping_Charge_Tax String
31 Discount Number
32 Bcy_Adjustment Number
33 Shipping_Charge_Tax_Exemption_Code String CA, US
34 Is_Discount_Before_Tax Boolean
35 Bcy_Discount_Total Number
36 Contact_Category String
37 Shipping_Address_Address String
38 Shipping_Address_Phone String
39 Shipping_Address_Street2 String
40 Shipping_Address_Fax String
41 Shipping_Address_State String
42 Shipping_Address_City String
43 Shipping_Address_Zip String
44 Shipping_Address_Country String
45 Shipping_Address_Attention String
46 Currency_Symbol String
47 Adjustment_Description String
48 Shipping_Charge_Tax_Exemption_Id String CA, US
49 Shipping_Charge_Tax_Id String
50 Payment_Discount Number
51 Sub_Total_Inclusive_Of_Tax Number
52 Roundoff_Value Number
53 Shipping_Charge_Exclusive_Of_Tax_Formatted String
54 Discount_Type String
55 Is_Inclusive_Tax Boolean
56 Bcy_Shipping_Charge_Tax String
57 Shipping_Charge_Tax_Name String
58 Shipping_Charge_Tax_Type String
59 Page_Height String
60 Shipping_Charge_Tax_Percentage String
61 Shipping_Charge_Inclusive_Of_Tax Number
62 Shipping_Charge_Tax_Formatted String
63 Shipping_Charge_Inclusive_Of_Tax_Formatted String
64 Bcy_Tax_Total Number
65 Template_Name String
66 Shipping_Charge Number
67 Discount_Percent Number
68 Adjustment Number
69 Orientation String
70 Transaction_Rounding_Type String
71 Terms String
72 Sub_Total Number
73 Tax_Total Number
74 Discount_Total Number
75 Bcy_Shipping_Charge Number
76 Deposit_To_Account_Name String
77 Bcy_Total Number
78 Tax_Amount_Withheld Number
79 Price_Precision Number
80 Template_Id String
81 Status_Formatted String
82 No_Of_Copies String GO
83 Show_No_Of_Copies String GO
84 Billing_Address_Address String
85 Billing_Address_Phone String
86 Billing_Address_Street2 String
87 Billing_Address_Fax String
88 Billing_Address_State String
89 Billing_Address_City String
90 Billing_Address_Zip String
91 Billing_Address_Country String
92 Billing_Address_Attention String
93 Customer_Default_Billing_Address_Zip String
94 Customer_Default_Billing_Address_Country String
95 Customer_Default_Billing_Address_Address String
96 Customer_Default_Billing_Address_Phone String
97 Customer_Default_Billing_Address_City String
98 Customer_Default_Billing_Address_Street2 String
99 Customer_Default_Billing_Address_Fax String
100 Customer_Default_Billing_Address_State String
101 Customer_Default_Billing_Address_State_Code String
102 Template_Type String
103 Includes_Package_Tracking_Info Boolean
104 Created_Date Date
105 Created_By_Id String
106 Last_Modified_By_Id String
107 Can_Send_In_Mail Boolean
108 Sales_Receipt_Url String
109 Subject_Content String
110 Deposit_To_Account_Id String
111 Is_Taxable String CA, US
112 Filed_In_Vat_Return_Id String CA
113 Filed_In_Vat_Return_Type String CA
114 Filed_In_Vat_Return_Name String CA
115 Taxes Array
116 Imported_Transactions Array
117 Line_Items Array
118 Contact_Persons Array
119 Contact_Persons_Details Array
120 Documents Array

Task

# Column API type LIST GET
0 Project_Id String
1 Task_Id String
2 Currency_Id String
3 Customer_Id String
4 Task_Name String
5 Project_Name String
6 Customer_Name String
7 Billed_Hours String
8 Log_Time Timestamp
9 Un_Billed_Hours String
10 Is_Billable Boolean
11 Description String
12 Rate Number
13 Status String
14 Task_Custom_Fields Array
15 Zohopeople_Job_Id String

Tax

# Column API type LIST GET
0 Tax_Id String
1 Tax_Name String
2 Tax_Name_Formatted String
3 Tax_Percentage Number
4 Tax_Type String
5 Tax_Factor String
6 Tds_Payable_Account_Id String GO, IN
7 Tax_Authority_Id String All except GO, IN All except GO, IN
8 Tax_Authority_Name String All except GO, IN All except GO, IN
9 Is_Value_Added String GO, CA, US GO, CA, US
10 Tax_Specific_Type String
11 Country String DE, SA, OM, GB DE, SA, OM, GB
12 Country_Code String DE, SA, OM, GB DE, SA, OM, GB
13 Purchase_Tax_Expense_Account_Id String US
14 Is_State_Cess String IN
15 End_Date String IN IN
16 Start_Date String IN IN
17 Tax_Specification String IN IN
18 Diff_Rate_Reason String IN IN
19 Tax_Account_Id String DE, GO, CA DE, GO, CA
20 Tax_Account_Tracking String DE, GO, CA
21 Purchase_Tax_Account_Id String DE, GO, CA DE, GO, CA
22 Purchase_Tax_Account_Name String DE, GO, CA DE, GO, CA
23 Output_Tax_Account_Name String DE, GO, CA DE, GO, CA
24 Is_Editable Boolean
25 Is_Inactive Boolean
26 Is_Default_Tax Boolean
27 Status String
28 Last_Modified_Time Timestamp

Time_Entry

# Column API type LIST GET
0 Time_Entry_Id String
1 Project_Id String
2 Project_Name String
3 Customer_Id String
4 Customer_Name String
5 Task_Id String
6 Task_Name String
7 User_Id String
8 User_Name String
9 Is_Current_User Boolean
10 Log_Date Date
11 Begin_Time Timestamp
12 End_Time Timestamp
13 Log_Time Timestamp
14 Is_Billable Boolean
15 Is_Paused Boolean
16 Billed_Status String
17 Invoice_Id String
18 Notes String
19 Timer_Started_At String
20 Timer_Started_At_Utc_Time Timestamp
21 Timer_Duration_In_Minutes Number
22 Timer_Duration_In_Seconds Number
23 Created_Time Timestamp
24 Timesheet_Custom_Fields String
25 Zohopeople_Time_Entry_Id Timestamp
26 Can_Create_User_Approval Boolean
27 Project_Head_Name String
28 Customer_First_Name String
29 Can_Create_Client_Approval Boolean
30 Project_Head_Id String
31 Can_Be_Invoiced Boolean
32 Logged_Day Number
33 Can_Continue_Timer Boolean
34 Billing_Rate_Frequency String
35 Is_Client_Approval_Needed Boolean
36 Invoice_Number String

Users

# Column API type LIST GET
0 User_Id String
1 Role_Id String
2 Name String
3 Email String
4 User_Role String
5 Status String
6 Is_Current_User Boolean
7 Photo_Url String
8 Is_Customer_Segmented Boolean
9 Is_Vendor_Segmented Boolean
10 User_Type String
11 Mobile String
12 Default_Branch_Id String
13 Billing_Rate Number
14 Is_Super_Admin Boolean
15 Is_Accountant Boolean
16 Role_Role Object
17 Role_Role_Id String
18 Role_Name String
19 Role_Email String
20 Role_Zuid String
21 Is_Employee Boolean
22 Is_Associated_For_Approval Boolean
23 Is_Claimant Boolean
24 Invitation_Type String
25 Created_Time Timestamp
26 Is_Associated_With_Org_Email Boolean
27 Email_Ids Array
28 Associated_Clients Array

Vendor_Credit

# Column API type LIST GET
0 Vendor_Credit_Id String
1 Vendor_Credit_Number String
2 Date String
3 Source_Of_Supply String IN
4 Destination_Of_Supply String IN
5 Place_Of_Supply String BH, DE, SA, AE, OM
6 Gst_No String IN
7 Gst_Treatment String IN
8 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
9 Pricebook_Id String
10 Is_Reverse_Charge_Applied String BH, DE, SA, AE, OM, IN, GB
11 Status String
12 Reference_Number String
13 Vendor_Id String
14 Vendor_Name String
15 Currency_Id String
16 Currency_Code String
17 Exchange_Rate Number
18 Price_Precision Number
19 Vat_Treatment String GB
20 Filed_In_Vat_Return_Id String BH, DE, SA, AE, OM, AU, CA, IN, GB
21 Filed_In_Vat_Return_Name String BH, DE, SA, AE, OM, AU, CA, IN, GB
22 Filed_In_Vat_Return_Type String BH, DE, SA, AE, OM, AU, CA, IN, GB
23 Is_Inclusive_Tax Boolean
24 Acquisition_Vat_Total String
25 Reverse_Charge_Vat_Total String
26 Sub_Total Number
27 Total Number
28 Total_Credits_Used Number
29 Total_Refunded_Amount Number
30 Balance Number
31 Notes String
32 Created_Time Timestamp
33 Last_Modified_Time Timestamp
34 Submitter_Id String
35 Discount_Setting String
36 Current_Sub_Status String
37 Bill_Id String BH, DE, SA, AE, KW, OM, QA, IN, GB
38 Discount_Account_Id String
39 Color_Code String
40 Discount_Applied_On_Amount Number
41 Bill_Number String BH, DE, SA, AE, KW, OM, QA, IN, GB
42 Sub_Total_Inclusive_Of_Tax Number
43 Current_Sub_Status_Id String
44 Template_Name String
45 Currency_Symbol String
46 Tds_Calculation_Type String
47 Discount Number
48 Tax_Rounding String
49 Subject_Content String
50 Submitted_Date Date
51 Template_Type String
52 Contact_Category String
53 Submitted_By String
54 Submitted_By_Name String
55 Adjustment_Description String
56 Submitted_By_Email String
57 Submitted_By_Photo_Url String
58 Approver_Id String
59 Adjustment Number
60 Discount_Type String
61 Discount_Amount Number
62 Is_Discount_Before_Tax Boolean
63 Tax_Override_Preference String GO, AU, CA, GB
64 Template_Id String
65 Page_Width String
66 Page_Height String
67 Orientation String
68 Txn_Posting_Date Date
69 Has_Attachment Boolean
70 Tax_Override String IN
71 Reference_Invoice_Type String IN
72 Is_Pre_Gst String IN
73 Can_Amend_Transaction String IN
74 Reason_For_Debit_Note String IN
75 Gst_Return_Details_Return_Period String IN
76 Gst_Return_Details_Status String IN
77 Tds_Override_Preference String GO, IN
78 Is_Discount_Tax_Inclusive String AU
79 Tax_On_Discount_Preference String AU
80 Discount_Account_Name String
81 Tax_Reg_No String BH, DE, SA, AE, OM
82 Billing_Address_Id String
83 Billing_Address_Fax String
84 Billing_Address_Address String
85 Billing_Address_Street2 String
86 Billing_Address_City String
87 Billing_Address_State String
88 Billing_Address_Phone String
89 Billing_Address_Zip String
90 Billing_Address_Country String
91 Billing_Address_Attention String
92 Acquisition_Vat_Summary String
93 Reverse_Charge_Vat_Summary String
94 Documents Array
95 Comments Array
96 Vendor_Credit_Refunds Array
97 Bills_Credited Array
98 Line_Items Array
99 Sub_Statuses Array
100 Taxes Array
101 Approvers_List Array
102 Tds_Summary String IN

Vendor_Payment

# Column API type LIST GET
0 Payment_Id String
1 Vendor_Id String
2 Date String
3 Exchange_Rate Number
4 Amount Number
5 Paid_Through_Account_Id String
6 Payment_Mode String
7 Description String
8 Reference_Number String
9 Is_Paid_Via_Print_Check Boolean
10 Purpose_Code String
11 Payment_Number String
12 Last_Modified_Time Timestamp
13 Tax_Account_Name String
14 Credit_Account_Id String
15 Is_Online_Payment Boolean
16 Payment_Number_Suffix String
17 Submitted_By_Name String
18 Vendor_Name String
19 Tax_Amount_Withheld Number
20 Status String
21 Currency_Id String
22 Transfer_Type String
23 Payment_Number_Prefix String
24 Created_By_Id String
25 Billing_Address_Address String
26 Billing_Address_Street2 String
27 Billing_Address_City String
28 Billing_Address_Attention String
29 Billing_Address_Phone String
30 Billing_Address_State String
31 Billing_Address_Country String
32 Billing_Address_Zip String
33 Billing_Address_Fax String
34 Submitted_By_Photo_Url String
35 Offset_Account_Name String
36 Ach_Payment_Status String
37 Is_Tds_Amount_In_Percent Boolean
38 Tds_Tax_Id String
39 Tds_Calculation_Type String
40 Tax_Account_Id String
41 Currency_Code String
42 Created_Time Timestamp
43 Balance Number
44 Currency_Symbol String
45 Created_By_Name String
46 Paid_Through_Account_Name String
47 Paid_Through_Account_Type String
48 Offset_Account_Id String
49 Tax_Treatment String BH, DE, SA, AE, OM, IN, GB
50 Reverse_Charge_Tax_Id String BH, DE, IN, GB
51 Is_Reverse_Charge_Applied String BH, DE, SA, AE, OM, IN, GB
52 Bank_Charges String DE, KW, OM, QA, GO, AU, CA, US
53 Check_Details_Check_Id String
54 Check_Details_Check_Number String
55 Check_Details_Template_Id String
56 Check_Details_Check_Status String
57 Check_Details_Memo String
58 Check_Details_Amount_In_Words String
59 Check_Details_Is_New_Check_Voucher String CA
60 Check_Details_Is_New_Check_Voucher_Early_Access String CA
61 Is_Ach_Payment Boolean
62 Submitted_Date Date
63 Submitted_By String
64 Submitted_By_Email String
65 Submitter_Id String
66 Approver_Id String
67 Total_Payment_Amount String IN
68 Indirect_Tcs_Tax_Amount String IN
69 Txn_Posting_Date Date
70 Gst_No String IN
71 Indirect_Tcs_Tax_Id String IN
72 Gst_Return_Details_Return_Period String IN
73 Gst_Return_Details_Status String IN
74 Indirect_Tds_Tax_Id String IN
75 Indirect_Tds_Tax_Amount String IN
76 Tds_Override_Preference String GO, IN
77 Product_Description String DE, IN DE, IN
78 Is_Advance_Payment String IN IN
79 Destination_Of_Supply String IN
80 Is_Pre_Gst String IN
81 Source_Of_Supply String IN
82 Gst_Treatment String IN
83 Place_Of_Supply String BH, DE, SA, AE, OM
84 Ach_Gw_Transaction_Id String
85 Bill_Numbers String
86 Bcy_Amount Number
87 Bcy_Balance Number
88 Has_Attachment Boolean
89 Bills Array
90 Check_Detail String
91 Documents Array
92 Approvers_List Array
93 Comments Array
94 Vendorpayment_Refunds Array
95 Imported_Transactions Array
96 Indirect_Tcs_Tax_Details String IN
97 Indirect_Tds_Tax_Details String IN
98 Tds_Summary String IN

Multilingual versions

Where a two digit country code is used, refer to this table:

Region code Country name
AE United Arab Emirates
AU Australia
BH Bahrain
CA Canada
DE Germany
GB United Kingdom
GO Global GCC
KW Kuwait
IN India
OM Oman
QA Qatar
SA Saudi Arabia
US United States

Global GCC is the generic Zoho Books API version you're given if you do not reside in a country they directly support.