API Docs
/
No Results Found
Recurring Expenses

Recurring Expenses

Recurring expenses are those expenses that repeat itself after a fixed interval of time.

Attribute

account_id
string
recurrence_name
string
Name of the Recurring Expense. Max-length [100]
start_date
string
Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd].
end_date
string
Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].
is_pre_gst
boolean
🇮🇳 India
only
Applicable for transactions that fall before july 1, 2017
source_of_supply
string
🇮🇳 India
only
Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)
destination_of_supply
string
🇮🇳 India
only
Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
gst_treatment
string
🇮🇳 India
only
Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
destination_of_supply_state
string
🇮🇳 India
only
Place to where the goods/services are supplied
hsn_or_sac
string
🇮🇳 India
, 🇰🇪 Kenya
only
Add HSN/SAC code for your goods/services
vat_treatment
string
🇬🇧 United Kingdom
only
VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
reverse_charge_tax_name
string
🇮🇳 India
only
Enter reverse charge tax name
reverse_charge_tax_percentage
double
🇮🇳 India
only
Tax percentage of the reverse charge
reverse_charge_tax_amount
double
🇮🇳 India
only
Tax amount of the reverse charge
is_reverse_charge_applied
boolean
🇮🇳 India
only
Applicable for transactions where you pay reverse charge
acquisition_vat_total
double
Enter the total acquisition vat.
reverse_charge_vat_total
double
🇮🇳 India
only
Enter the total of the reverse charge vat.
acquisition_vat_summary
array
Summary of the VAT Acquistion
Show Sub-Attributes arrow
tax_name
string
tax_amount
double
reverse_charge_vat_summary
array
Summary of the Reverse Charge
Show Sub-Attributes arrow
tax_name
string
tax_amount
double
recurrence_frequency
string
repeat_every
string
amount
double
Recurring Expense amount.
total
double
sub_total
double
bcy_total
double
product_type
string
🇬🇧 United Kingdom
, 🇿🇦 South Africa
only
Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods
acquisition_vat_id
string
🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇮🇳 India
, 🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.
tax_id
string
tax_name
string
tax_percentage
double
created_time
string
last_modified_time
string
is_inclusive_tax
boolean
is_billable
boolean
customer_id
string
Search expenses by customer id.
currency_id
string
exchange_rate
double
project_id
string
project_name
string
custom_fields
array
Custom fields for a recurring-expense.
Show Sub-Attributes arrow
customfield_id
long
value
string
Value of the Custom Field
line_item
object
Show Sub-Attributes arrow
line_item_id
string
account_id
string
account_name
string
For which Account the Expense is raised. Max-length [100]
description
string
Search recurring expenses by description. Max-length [100]
tax_amount
double
tax_id
string
tax_name
string
tax_type
string
tax_percentage
double
item_total
string
item_order
string
hsn_or_sac
string
🇮🇳 India
, 🇰🇪 Kenya
only
Add HSN/SAC code for your goods/services
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
reverse_charge_tax_name
string
🇮🇳 India
only
Enter reverse charge tax name
reverse_charge_tax_percentage
double
🇮🇳 India
only
Tax percentage of the reverse charge
reverse_charge_tax_amount
double
🇮🇳 India
only
Tax amount of the reverse charge

Example

{ "account_id": 982000000561057, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "is_pre_gst": false, "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "destination_of_supply_state": "AP", "hsn_or_sac": 80540, "vat_treatment": "eu_vat_not_registered", "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10, "is_reverse_charge_applied": false, "acquisition_vat_total": 0, "reverse_charge_vat_total": 10, "acquisition_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "reverse_charge_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "recurrence_frequency": "months", "repeat_every": 1, "amount": 112.5, "total": 128.25, "sub_total": 90, "bcy_total": 100, "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_percentage": 10.5, "created_time": "2013-11-18T02:17:40.080Z", "last_modified_time": " ", "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "currency_id": 982000000567001, "exchange_rate": 1, "project_id": " ", "project_name": " ", "custom_fields": [ { "customfield_id": "46000000012845", "value": "Normal" } ], "line_item": { "line_item_id": 10763000000140068, "account_id": 982000000561057, "account_name": "Rent", "description": " ", "tax_amount": 11.85, "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_type": "tax", "tax_percentage": 10.5, "item_total": 100, "item_order": 1, "hsn_or_sac": 80540, "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10 } }

Create a recurring expense

Create a recurring expense.
OAuth Scope : ZohoBooks.expenses.CREATE

Arguments

account_id
string
(Required)
recurrence_name
string
(Required)
Name of the Recurring Expense. Max-length [100]
start_date
string
(Required)
Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd].
end_date
string
Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].
recurrence_frequency
string
(Required)
repeat_every
string
(Required)
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
source_of_supply
string
🇮🇳 India
only
Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)
destination_of_supply
string
🇮🇳 India
only
Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
line_items
array
Show Sub-Attributes arrow
line_item_id
string
account_id
string
(Required)
description
string
Search recurring expenses by description. Max-length [100]
amount
double
(Required)
Recurring Expense amount.
tax_id
string
item_order
string
product_type
string
🇬🇧 United Kingdom
, 🇿🇦 South Africa
only
Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods
acquisition_vat_id
string
🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇮🇳 India
, 🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
tax_exemption_code
string
🇮🇳 India
, 🇲🇽 Mexico
only
Enter the code for tax exemption
tax_exemption_id
string
🇮🇳 India
, 🇲🇽 Mexico
only
Enter ID of the tax exemption
amount
double
(Required)
Recurring Expense amount.
vat_treatment
string
🇬🇧 United Kingdom
only
VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
product_type
string
🇬🇧 United Kingdom
, 🇿🇦 South Africa
only
Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods
acquisition_vat_id
string
🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇮🇳 India
, 🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.
tax_id
string
is_inclusive_tax
boolean
is_billable
boolean
customer_id
string
Search expenses by customer id.
project_id
string
currency_id
string
exchange_rate
double
custom_fields
array
Custom fields for a recurring-expense.
Show Sub-Attributes arrow
customfield_id
long
value
string
Value of the Custom Field

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695" type: POST headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695") .post(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("POST", "/books/v3/recurringexpenses?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "account_id": 982000000561057, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "recurrence_frequency": "months", "repeat_every": 1, "gst_no": "22AAAAA0000A1Z5", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "reverse_charge_tax_id": 982000000567254, "line_items": [ { "line_item_id": 10763000000140068, "account_id": 982000000561057, "description": " ", "amount": 112.5, "tax_id": 982000000566007, "item_order": 1, "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "reverse_charge_tax_id": 982000000567254, "tax_exemption_code": "string", "tax_exemption_id": 982000000567267 } ], "amount": 112.5, "vat_treatment": "eu_vat_not_registered", "tax_treatment": "vat_registered", "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "tax_id": 982000000566007, "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "project_id": " ", "currency_id": 982000000567001, "exchange_rate": 1, "custom_fields": [ { "customfield_id": "46000000012845", "value": "Normal" } ] }

Response Example

{ "code": 0, "message": "The recurring expense has been created", "recurring_expense": { "account_id": 982000000561057, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "is_pre_gst": false, "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "destination_of_supply_state": "AP", "hsn_or_sac": 80540, "vat_treatment": "eu_vat_not_registered", "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10, "is_reverse_charge_applied": false, "acquisition_vat_total": 0, "reverse_charge_vat_total": 10, "acquisition_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "reverse_charge_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "recurrence_frequency": "months", "repeat_every": 1, "amount": 112.5, "total": 128.25, "sub_total": 90, "bcy_total": 100, "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_percentage": 10.5, "created_time": "2013-11-18T02:17:40.080Z", "last_modified_time": " ", "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "currency_id": 982000000567001, "exchange_rate": 1, "project_id": " ", "project_name": " ", "custom_fields": [ { "customfield_id": "46000000012845", "value": "Normal" } ], "line_item": { "line_item_id": 10763000000140068, "account_id": 982000000561057, "account_name": "Rent", "description": " ", "tax_amount": 11.85, "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_type": "tax", "tax_percentage": 10.5, "item_total": 100, "item_order": 1, "hsn_or_sac": 80540, "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10 } } }

Update an recurring expense using a custom field's unique value

A custom field will have unique values if it's configured to not accept duplicate values. Now, you can use that custom field's value to update a recurring expense by providing its API name in the X-Unique-Identifier-Key header and its value in the X-Unique-Identifier-Value header. Based on this value, the corresponding recurring expense will be retrieved and updated. Additionally, there is an optional X-Upsert header. If the X-Upsert header is true and the custom field's unique value is not found in any of the existing recurring expenses, a new recurring expense will be created if the necessary payload details are available
OAuth Scope : ZohoBooks.expenses.UPDATE

Arguments

account_id
string
(Required)
recurrence_name
string
(Required)
Name of the Recurring Expense. Max-length [100]
start_date
string
(Required)
Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd].
end_date
string
Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].
recurrence_frequency
string
(Required)
repeat_every
string
(Required)
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
source_of_supply
string
🇮🇳 India
only
Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)
destination_of_supply
string
🇮🇳 India
only
Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
line_items
array
Show Sub-Attributes arrow
line_item_id
string
account_id
string
(Required)
description
string
Search recurring expenses by description. Max-length [100]
amount
double
(Required)
Recurring Expense amount.
tax_id
string
item_order
string
product_type
string
🇬🇧 United Kingdom
, 🇿🇦 South Africa
only
Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods
acquisition_vat_id
string
🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇮🇳 India
, 🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
tax_exemption_code
string
🇮🇳 India
, 🇲🇽 Mexico
only
Enter the code for tax exemption
tax_exemption_id
string
🇮🇳 India
, 🇲🇽 Mexico
only
Enter ID of the tax exemption
amount
double
(Required)
Recurring Expense amount.
vat_treatment
string
🇬🇧 United Kingdom
only
VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
product_type
string
🇬🇧 United Kingdom
, 🇿🇦 South Africa
only
Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods
acquisition_vat_id
string
🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇮🇳 India
, 🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.
tax_id
string
is_inclusive_tax
boolean
is_billable
boolean
customer_id
string
Search expenses by customer id.
project_id
string
currency_id
string
exchange_rate
double
custom_fields
array
Custom fields for a recurring-expense.
Show Sub-Attributes arrow
customfield_id
long
value
string
Value of the Custom Field

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("X-Unique-Identifier-Key", "cf_unique_cf"); headers_data.put("X-Unique-Identifier-Value", "unique Value"); headers_data.put("X-Upsert", "true"); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695" type: PUT headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695") .put(body) .addHeader("X-Unique-Identifier-Key", "cf_unique_cf") .addHeader("X-Unique-Identifier-Value", "unique Value") .addHeader("X-Upsert", "true") .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PUT', headers: { 'X-Unique-Identifier-Key': 'cf_unique_cf', 'X-Unique-Identifier-Value': 'unique Value', 'X-Upsert': 'true', Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'X-Unique-Identifier-Key': "cf_unique_cf", 'X-Unique-Identifier-Value': "unique Value", 'X-Upsert': "true", 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PUT", "/books/v3/recurringexpenses?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PUT", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses?organization_id=10234695", "headers": { "X-Unique-Identifier-Key": "cf_unique_cf", "X-Unique-Identifier-Value": "unique Value", "X-Upsert": "true", "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request PUT \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'X-Unique-Identifier-Key: cf_unique_cf' \ --header 'X-Unique-Identifier-Value: unique Value' \ --header 'X-Upsert: true' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "account_id": 982000000561057, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "recurrence_frequency": "months", "repeat_every": 1, "gst_no": "22AAAAA0000A1Z5", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "reverse_charge_tax_id": 982000000567254, "line_items": [ { "line_item_id": 10763000000140068, "account_id": 982000000561057, "description": " ", "amount": 112.5, "tax_id": 982000000566007, "item_order": 1, "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "reverse_charge_tax_id": 982000000567254, "tax_exemption_code": "string", "tax_exemption_id": 982000000567267 } ], "amount": 112.5, "vat_treatment": "eu_vat_not_registered", "tax_treatment": "vat_registered", "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "tax_id": 982000000566007, "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "project_id": " ", "currency_id": 982000000567001, "exchange_rate": 1, "custom_fields": [ { "customfield_id": "46000000012845", "value": "Normal" } ] }

Response Example

{ "code": 0, "message": "Recurring expense information has been updated", "recurring_expense": { "account_id": 982000000561057, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "is_pre_gst": false, "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "destination_of_supply_state": "AP", "hsn_or_sac": 80540, "vat_treatment": "eu_vat_not_registered", "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10, "is_reverse_charge_applied": false, "acquisition_vat_total": 0, "reverse_charge_vat_total": 10, "acquisition_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "reverse_charge_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "recurrence_frequency": "months", "repeat_every": 1, "amount": 120.5, "total": 128.25, "sub_total": 90, "bcy_total": 100, "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_percentage": 10.5, "created_time": "2013-11-18T02:17:40.080Z", "last_modified_time": " ", "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "currency_id": 982000000567001, "exchange_rate": 1, "project_id": " ", "project_name": " ", "line_item": { "line_item_id": 10763000000140068, "account_id": 982000000561057, "account_name": "Rent", "description": " ", "tax_amount": 11.85, "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_type": "tax", "tax_percentage": 10.5, "item_total": 100, "item_order": 1, "hsn_or_sac": 80540, "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10 } } }

List recurring expenses

List all the Expenses with pagination.
OAuth Scope : ZohoBooks.expenses.READ

Query Parameters

recurrence_name
Search recurring expenses by recurring expense name. Variants: recurrence_name_startswith and recurrence_name_contains. Max-length [100]
last_created_date
Search recurring expenses by date on when last expense was generated. Variants: last_created_date_start, last_created_date_end, last_created_date_before and last_created_date_after . Format [yyyy-mm-dd]
next_expense_date
Search recurring expenses by date on which next expense will be generated. Variants: next_expense_date_start, next_expense_date_end, next_expense_date_before and next_expense_date_after . Format [yyyy-mm-dd]
status
Search expenses by expense status. Allowed Values active, stopped and expired
account_id
account_name
Search expenses by expense account name. Variants account_name_startswith and account_name_contains . Max-length [100]
amount
Search expenses by amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_than
customer_name
Search expenses by customer name. Variants: customer_name_startswith and customer_name_contains . Max-length [100]
customer_id
Search expenses by customer id.
paid_through_account_id
Search expenses by paid through account id.
filter_by
Filter expenses by expense status. Allowed Values Status.All, Status.Active, Status.Expired and Status.Stopped
search_text
Search expenses by account name or description or customer name or vendor name. Max-length [100] .
sort_column
Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/recurringexpenses?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "recurring_expenses": [ { "recurring_expense_id": 982000000567240, "recurrence_name": "Monthly Rental", "recurrence_frequency": "months", "repeat_every": 1, "last_created_date": "2013-11-18T00:00:00.000Z", "next_expense_date": "2013-12-18T00:00:00.000Z", "account_name": "Rent", "description": " ", "currency_id": 982000000567001, "currency_code": "USD", "total": 128.25, "is_billable": true, "customer_name": "Bowman & Co", "custom_fields": [ { "customfield_id": "46000000012845", "value": "Normal" } ], "status": "active", "created_time": "2013-11-18T02:17:40.080Z", "last_modified_time": " " }, {...}, {...} ], "page_context": [ { "sort_column": "account_name", "filter_by": "Status.Billable", "search_text": "Rent" } ] }

Update a recurring expense

Update a recurring expense.
OAuth Scope : ZohoBooks.expenses.UPDATE

Arguments

account_id
string
(Required)
recurrence_name
string
(Required)
Name of the Recurring Expense. Max-length [100]
start_date
string
(Required)
Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd].
end_date
string
Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].
recurrence_frequency
string
(Required)
repeat_every
string
(Required)
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
source_of_supply
string
🇮🇳 India
only
Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)
destination_of_supply
string
🇮🇳 India
only
Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
line_items
array
Show Sub-Attributes arrow
line_item_id
string
account_id
string
(Required)
description
string
Search recurring expenses by description. Max-length [100]
amount
double
(Required)
Recurring Expense amount.
tax_id
string
item_order
string
product_type
string
🇬🇧 United Kingdom
, 🇿🇦 South Africa
only
Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods
acquisition_vat_id
string
🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇮🇳 India
, 🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.
tax_exemption_code
string
🇮🇳 India
, 🇲🇽 Mexico
only
Enter the code for tax exemption
tax_exemption_id
string
🇮🇳 India
, 🇲🇽 Mexico
only
Enter ID of the tax exemption
amount
double
(Required)
Recurring Expense amount.
vat_treatment
string
🇬🇧 United Kingdom
only
VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
product_type
string
🇬🇧 United Kingdom
, 🇿🇦 South Africa
only
Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods
acquisition_vat_id
string
🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇮🇳 India
, 🇬🇧 United Kingdom
only
This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.
tax_id
string
is_inclusive_tax
boolean
is_billable
boolean
customer_id
string
Search expenses by customer id.
project_id
string
currency_id
string
exchange_rate
double
custom_fields
array
Custom fields for a recurring-expense.
Show Sub-Attributes arrow
customfield_id
long
value
string
Value of the Custom Field

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695" type: PUT headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695") .put(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PUT', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PUT", "/books/v3/recurringexpenses/982000000567240?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PUT", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses/982000000567240?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request PUT \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "account_id": 982000000561057, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "recurrence_frequency": "months", "repeat_every": 1, "gst_no": "22AAAAA0000A1Z5", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "reverse_charge_tax_id": 982000000567254, "line_items": [ { "line_item_id": 10763000000140068, "account_id": 982000000561057, "description": " ", "amount": 112.5, "tax_id": 982000000566007, "item_order": 1, "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "reverse_charge_tax_id": 982000000567254, "tax_exemption_code": "string", "tax_exemption_id": 982000000567267 } ], "amount": 112.5, "vat_treatment": "eu_vat_not_registered", "tax_treatment": "vat_registered", "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "tax_id": 982000000566007, "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "project_id": " ", "currency_id": 982000000567001, "exchange_rate": 1, "custom_fields": [ { "customfield_id": "46000000012845", "value": "Normal" } ] }

Response Example

{ "code": 0, "message": "Recurring expense information has been updated", "recurring_expense": { "account_id": 982000000561057, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "is_pre_gst": false, "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "destination_of_supply_state": "AP", "hsn_or_sac": 80540, "vat_treatment": "eu_vat_not_registered", "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10, "is_reverse_charge_applied": false, "acquisition_vat_total": 0, "reverse_charge_vat_total": 10, "acquisition_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "reverse_charge_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "recurrence_frequency": "months", "repeat_every": 1, "amount": 120.5, "total": 128.25, "sub_total": 90, "bcy_total": 100, "product_type": "goods", "acquisition_vat_id": " ", "reverse_charge_vat_id": " ", "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_percentage": 10.5, "created_time": "2013-11-18T02:17:40.080Z", "last_modified_time": " ", "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "currency_id": 982000000567001, "exchange_rate": 1, "project_id": " ", "project_name": " ", "line_item": { "line_item_id": 10763000000140068, "account_id": 982000000561057, "account_name": "Rent", "description": " ", "tax_amount": 11.85, "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_type": "tax", "tax_percentage": 10.5, "item_total": 100, "item_order": 1, "hsn_or_sac": 80540, "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10 } } }

Get a recurring expense

Get the details of the recurring expense.
OAuth Scope : ZohoBooks.expenses.READ

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/recurringexpenses/982000000567240?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses/982000000567240?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "recurring_expense": { "recurring_expense_id": 982000000567240, "recurrence_name": "Monthly Rental", "start_date": "2016-11-19T00:00:00.000Z", "end_date": " ", "is_pre_gst": false, "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "destination_of_supply_state": "AP", "hsn_or_sac": 80540, "vat_treatment": "eu_vat_not_registered", "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10, "is_reverse_charge_applied": false, "acquisition_vat_total": 0, "reverse_charge_vat_total": 10, "acquisition_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "reverse_charge_vat_summary": [ { "tax_name": "SalesTax", "tax_amount": 11.85 } ], "recurrence_frequency": "months", "repeat_every": 1, "last_created_date": "2013-11-18T00:00:00.000Z", "next_expense_date": "2013-12-18T00:00:00.000Z", "account_id": 982000000561057, "account_name": "Rent", "currency_id": 982000000567001, "currency_code": "USD", "exchange_rate": 1, "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_percentage": 10.5, "tax_amount": 11.85, "sub_total": 90, "total": 128.25, "bcy_total": 100, "amount": 112.5, "description": " ", "is_inclusive_tax": false, "is_billable": true, "customer_id": 982000000567001, "customer_name": "Bowman & Co", "status": "active", "created_time": "2013-11-18T02:17:40.080Z", "last_modified_time": " ", "project_id": " ", "project_name": " ", "line_item": { "line_item_id": 10763000000140068, "account_id": 982000000561057, "account_name": "Rent", "description": " ", "tax_amount": 11.85, "tax_id": 982000000566007, "tax_name": "SalesTax", "tax_type": "tax", "tax_percentage": 10.5, "item_total": 100, "item_order": 1, "hsn_or_sac": 80540, "reverse_charge_tax_id": 982000000567254, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 10 } } }

Delete a recurring expense

Deleting an existing recurring expense.
OAuth Scope : ZohoBooks.expenses.DELETE

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695" type: DELETE headers: headers_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695") .delete(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("DELETE", "/books/v3/recurringexpenses/982000000567240?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "DELETE", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses/982000000567240?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request DELETE \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

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

Stop a recurring expense

Stop an active recurring expense.
OAuth Scope : ZohoBooks.expenses.CREATE

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/stop?organization_id=10234695" type: POST headers: headers_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/stop?organization_id=10234695") .post(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/stop?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("POST", "/books/v3/recurringexpenses/982000000567240/status/stop?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses/982000000567240/status/stop?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/stop?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The recurring expense has been stopped." }

Resume a recurring Expense

Resume a stopped recurring expense.
OAuth Scope : ZohoBooks.expenses.CREATE

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/resume?organization_id=10234695" type: POST headers: headers_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/resume?organization_id=10234695") .post(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/resume?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("POST", "/books/v3/recurringexpenses/982000000567240/status/resume?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses/982000000567240/status/resume?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/status/resume?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The recurring expense has been activated." }

List child expenses created

List child expenses created from recurring expense.
OAuth Scope : ZohoBooks.expenses.READ

Query Parameters

sort_column
Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/expenses?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/expenses?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/expenses?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/recurringexpenses/982000000567240/expenses?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses/982000000567240/expenses?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/expenses?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "expensehistory": [ { "expense_id": 982000000567250, "date": "string", "account_name": "Rent", "customer_name": "Bowman & Co", "total": 128.25, "status": "active", "vendor_name": " ", "paid_through_account_name": "Undeposited Funds" }, {...}, {...} ], "page_context": [ { "sort_column": "account_name", "filter_by": "Status.Billable", "search_text": "Rent" } ] }

List recurring expense history

Get history and comments of a recurring expense.
OAuth Scope : ZohoBooks.expenses.READ

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/comments?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ] info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/comments?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/comments?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/recurringexpenses/982000000567240/comments?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/recurringexpenses/982000000567240/comments?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/recurringexpenses/982000000567240/comments?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "comments": { "comment_id": 982000000567272, "recurring_expense_id": 982000000567240, "description": " ", "commented_by_id": 982000000554041, "commented_by": "John David", "date": "string", "time": "2.41 AM", "operation_type": "Added", "transaction_id": " ", "transaction_type": "expense" } }