Zoho Invoice

Help Docs

Back to Settings Overview


The Preferences section under Settings allows you to customize certain functions of Zoho Invoice. This section is broadly divided into General, Customers, Items, Projects, Sales and Purchase modules.


To configure General Settings, click on the Gear Icon found on the top right hand side corner of the screen and click on More Settings. You will be taken to the Preferences section.

Through the General Settings, you can customize your Zoho Invoice account by selecting your preferences for the various options provided below.






Personalize your Zoho Invoice account to go with your brand.

The Branding section has three tabs:


Under this tab, you can:

Branding Themes

Note: The option to upload favicon will be available only if you’d configured a custom domain for your organization.

Portal Settings

This tab allows you to configure your client portal.

Branding Portal


Configure preferences related to the Customers module. Learn more.


Configure preferences related to the Items module. Learn more.


Configure preferences related to the Estimates module. Learn more.


Configure preferences related to the Invoices module. Learn more.

Recurring Invoices

Configure preferences related to the recurring invoices module. Learn more.

Credit Notes

Configure preferences related to Credit Notes. Learn more.

Delivery Note Settings

If you ship or deliver the products you sell to your customers, then you can configure your Delivery Note settings here. A Delivery Note lists the contents of the package, what the recipient has ordered and what has been sent to them. Typically, a Delivery Note includes description and quantity of the items delivered. In some cases, a copy of the Delivery Note is signed by the recipient and then returned to the seller or consignor as a proof that the items have been delivered.

To configure Delivery Note settings, click on the Gear Icon found on the top right hand side corner of the screen and click on More Settings. Click on Preferences and select the Delivery Note Settings tab.

Delivery Note Settings Preferences

Packing Slip Settings

A packing slip will include details of the contents in a package you deliver. The purpose of a packing slip is to inform all the parties, i.e. transport agencies, government authorities and customers, about the contents of the package which is being delivered.

To configure Package Slip settings, click on the Gear Icon found on the top right hand side corner of the screen and click on More Settings. Click on Preferences and select Packing Slip Settings tab.

Packing Slip Settings Preferences

Field Customization

In Zoho Invoice, you can create additional fields called custom fields for different modules. These fields can be used to record additional information for customers and transactions.

When will custom fields be used?
Let’s say you run a business where you wish to record the birthdays of your customer. In such a case, you can create a custom field in the Customers module with an appropriate label name and select the data type as Date.

New Custom Field

Create Custom Field

To create a new custom field:

New Custom Field

Fill in the following fields:

Data Type Name Description
Text Box (Single Line) You can enter a maximum of 100 characters.
Text Box (Multi-line) You can enter a description or note with a maximum of 36,000 characters.
Email An email address can be stored using this data type.
URL This data type allows you to enter a URL.
Phone You can enter a contact number for this data type.
Number You can enter any positive or negative number.
Decimal You can enter any positive or negative decimal number.
Amount You can enter any amount using this data type. It will be displayed along with the currency symbol. It can be your organization’s base currency or the currency for that particular transaction.
Percent You can enter any positive number as a percentage.
Date You can select a date from the date picker.
Checkbox You can add a checkbox with a small text or description to explain what the checkbox is for. For example, it may be used to confirm an action or to make a choice.
Auto-Generate Number While creating transactions, you can create a custom field with this data type if you wish to generate the data in a series automatically. For example, you can create a custom field called ‘Expense Reference’ and enter the values as shown in the image below,
auto number
Henceforth, for every expense you create, this field will be generated automatically.
Drop-down A list of options can be added and you can select one from them.
Multi-select Similar to the drop-down data type where you can provide a list of options, but here you can choose multiple options (a maximum of five) as its values.
Lookup You can pull data from one module and access it inside another module. Read more.

After entering all the details, click Save. From now on, when you enter data in the respective module, the custom field will be displayed.

Custom Fields - Limitations

There are certain limitations to the number of custom fields that can be created for each data type. Based on the limitations, custom fields are split into five sections:


Data Type Maximum Custom Fields
Text Box (Single Line) 20
Email 2
Phone 2
Auto-Generate Number 1
Dropdown 5
Multi-select 2

The sum of the custom fields created for the data types mentioned above should not exceed 20.


Data Type Maximum Custom Fields
Number 8
Date 4
Lookup 5

The sum of the custom fields created for the data types mentioned above should not exceed 12.


Data Type Maximum Custom Fields
Amount 4
Decimal 4
Percent 2

The sum of the custom fields created for the data types mentioned above should not exceed 4.


Data Type Maximum Custom Fields
Checkbox 3

Long Text

Data Type Maximum Custom Fields
Text Box (Multi-line) 5

Custom Fields Usage

You can keep track of the number of custom fields created in your organization using the Custom Fields Usage option. This will help you to create custom fields based on their availability.

Custom Field Usage Custom Field Usage Stats

Edit Custom Field

You can change the details of a custom field at any time. Here’s how:

Edit Custom Field Icon

Mark Field as Inactive/Active

If you’d like to stop using a custom field temporarily, you can choose to mark it as inactive.

To mark a custom field as inactive:

Mark Custom Field as Inactive

If you have marked a custom field as inactive, you can make it active again by following the same steps as above and selecting Mark as Active.

Delete Custom Field

You can delete a custom field you have created in Zoho Invoice. Here’s how:

Delete Custom Field

If you have added data in a custom field which is associated with a transaction, you cannot delete the custom field. If you want to delete the custom field, you would have to delete the corresponding transaction.

Alternatively, you can mark the custom field as inactive.

API Field Name

Once you save a custom field, you can edit it to find the API Field Name. This name will be used when referring to this custom field for an API call.

API Custom Field

Validation Rules

Validation Rules in Zoho Invoice help you create new rules that set restrictions for the data being recorded. So, when a user tries to enter data in a field that you have set a restriction for, it passes through the validation rule. If the value you enter in the field violates the condition you’ve set, an alert message is displayed and the transaction is not created. The user will also be able to set multiple criteria for a single validation rule.

Currently, Validation Rules are available only for the Estimates module.

Note: This feature is available only for the users in the Premium Plan (India) and Professional Plan (all other editions) of Zoho Invoice.

Let us understand how validation rules work with the help of few scenarios.

Scenario 1: Peter runs a catering business where he takes orders from his clients and provides them services. When customers enquire for the details, he sends out an estimate to the customer and also provides a small discount. When Peter is unavailable, his team reaches out to the customers. Sometimes, his staff tends to quote a higher discount that Peter might not really approve of. Peter wonders how he can prevent this, and immediately sets up a validation rule to not create an estimate with more than 10% discount.

Scenario 2: Peter also wants his employees to enter the terms and conditions of an ongoing-offer in the transaction. He creates a rule and ensures that the users are not able to create a transaction without entering the terms and conditions.

In this section:

Create Validation Rule

You can create a validation rule by setting certain criteria for the fields in a transaction. Here’s how:

Create Validation Rule

Set Conditions for Validation

If you want to create a new validation rule for the same field:

Add another validation

Multiple Criteria and Subrules

A validation rule is applicable for all transactions. However, if you would like to apply it for specific transactions based on multiple criteria, or create a new rule with the same condition, refer the following:

Adding Multiple Criteria

When you create a validation rule, it will be applicable for all transactions by default. You can also choose the rule to be applied to transactions based on specific criteria.

Scenario: (Based on Scenario 1) Peter had created a validation rule where the Discount cannot exceed 10% for the transactions created. However, he would like to customize this further as all transactions cannot have a maximum discount of only 10%. So he sets the criteria that the rule should be applicable only when the transaction total is under 100 and when there are shipping charges too.

Here’s how you can add multiple criteria:

Add another criteria

Edit Pattern

Adding Subrules

If you would like to include an additional rule to your existing condition, you can add Subrules. This is applicable only when you’ve chosen to apply the rule to transactions based on specific criteria.

Scenario: Peter had created a rule where the Discount cannot exceed 10% while creating transactions and had also customized it by adding certain criteria. Now, he’d like to use the same condition (<= 10% discount) but create a new rule that this condition is applicable only during off-seasons (July-Nov). So he creates a new subrule with the transaction date to be > July 1.

Here’s how you can create subrules:

Create Subrule

View Subrule

Execute Validation Rules

Once a Validation Rule is created and saved, it will be applicable for all transactions created henceforth. When any new transaction violates a validation rule, an alert message will be displayed to the users.

Other Actions for Validation Rules

Once you’ve created a validation rule you will be able to edit, mark it as inactive or delete them. Here’s how:

Edit/Delete/Mark as Inactive

Custom Buttons

Zoho Invoice allows you to create new button actions with the help of an advanced feature called Custom Buttons.

Users can create new buttons and define a set of actions based on their requirements.

For example, You wish to apply a discount of 10% to your regular customers, on their monthly purchase amount. You can define this action in a function and create a button Discount10. Likewise, you can create new buttons and define a set of actions based on your necessity.

Create Custom Button

To create a custom button:

Adding a custom button

Adding custom button details


Viewing a custom button

The Related Lists feature allows you to fetch and view data from within the app as well as from other third-party services. This comes in handy when you want to cross-reference data from different entities.

Note: This feature is available only for the users in the Professional Plan of Zoho Invoice.

You can create related lists for:

Insight: You can create a maximum of 10 related lists for each module. For example, 10 for invoices, 10 for estimates, and so on.

In this section:

Create Related Lists

There are two ways to create a related list:

By creating a lookup custom field

The lookup custom field allows you to pull data from one module and access it inside another module in Zoho Invoice. When you create a lookup field in one module, its associated details will be available as a related list in the other module. 

Scenario 1: Patricia wants to track the efficiency of users in her organization. So, she decides to track the invoices the sales team create for a customer. For this, she creates a Lookup custom field in the Invoices module and for the module whose data she wants to access (in this case, Users).

By writing a deluge script

With deluge scripts, you can connect Zoho Invoice with other third-party services to access their data.

Scenario 2: Zylker uses Zoho Invoice for their sales, and Zoho Desk to address their customer queries. Now, the admin can write and execute a deluge script to fetch the customer happiness rating from Zoho Desk, and show the consolidated data in a tabular form under each customer in Zoho Invoice.

To create a related list using deluge:

New Related List Create Related List

The lists will be displayed under the Related Lists tab in the respective modules.

View Related List


header_context: [
key: 'customer_name',
value: 'Customer Name'
key: 'invoice_number',
value: 'Invoice Number
data: [
customer_name: <customer_name>,
invoice_number: <invoice_number>

customer_name: <customer_name>

customer_name: {
"value": <customer_name>,
"isExternal":true, // To open the link in separate tab.
"link": <web_url_path>

Edit/Delete Related Lists

To edit/delete a related list that you had created:

Edit/Delete Related List

Pro Tip: If you want to temporarily disable the related list, click the down arrow and select Mark as Inactive.

Sample Function

Here’s a sample function for Scenario 2 that allows Zoho Invoice users to access customer details in Zoho Desk:

searchMap = Map();
searchMap.put('fullName', customer.get("contact_name"));
searchMap.put('orgId', XXXXX); //Zoho desk orgId

searchList = invokeurl
  url : "https://desk.zoho.com/api/v1/contacts/search"
  type : GET
  parameters: searchMap
  connection: "zohodesk"

contacts = searchList.get('data').toList();
contact = contacts.get('0');
contactId = contact.get('id');

paramsMap = Map();
paramsMap.put('orgId', XXXXX);

contactInfo = invokeurl
  url : "https://desk.zoho.com/api/v1/contacts/" + contactId
  type : GET
  parameters: paramsMap
  connection: "zohodesk"

owner = contactInfo.get('owner');
happiness = contactInfo.get('customerHappiness');

headerData = List();
headerData.add({"key":"owner_name", "value":"Owner Name"});
headerData.add({"key":"good_percent", "value":"Good Percentage"});
headerData.add({"key":"bad_percent", "value":"Bad Percentage"});
headerData.add({"key":"desk_url", "value":"Desk Url"});

details = Map();
details.put("owner_name", owner.get('firstName') + owner.get('lastName'));
details.put("good_percent", happiness.get('goodPercentage'));
details.put("bad_percent", happiness.get('badPercentage'));
details.put("desk_url", {"value":contact.get('lastName'), "isExternal":true, "link":contactInfo.get('webUrl')});

listData = List();

resultMap = Map();
resultMap.put("header_context", headerData);
resultMap.put("data", listData);
return resultMap;

Was this document helpful?
Thank you for your feedback!