Zoho Books: Error 7008: There are no contact persons associated with this Invoice
- Category: Zoho
- Hits: 19042
A quick article on how to get around this error.
Why?
The use-case here is that I am using the send invoice API and I kept getting this error despite including the customer_id and there was a primary contact on the customer record.
This is from within ZohoCreator, requesting for an invoice in ZohoBooks to be sent.
How?
So the key here is that there were no contact persons on the customer record. Instead, when building the invoice, this had to be added (don't ever remember having to do this) as contact_ids (array/list). Instead the below script will show you how to use this API having a few email addresses as the recipients:
Zoho Deluge: Regex Rounding and/or Removing Trailing Zeros
- Category: Zoho
- Hits: 25786
A very quick article on a cool snippet of code, another regular expression, I've been trying out to round up a number or at least to remove the trailing zeros. I could have added this to my Zoho Deluge - Some Useful Regular Expressions list but I felt this deserved its own article.
Why?
A client wanted the discount displayed on a template and if they gave 10% discount, it would display as 10.00%. And they need the decimal because sometimes they might offer 12.5%. But when it displays in a template, it isn't that pretty to look at: Instead, could they have 10% to display instead of 10.00%, and display 12.5% instead of 12.50%.
Well there might be a longer solution without using a regular expression (regex), as in check for the decimal point, check each digit thereafter to see if there are zeros... But I'm keen on avoiding using loops where possible so we don't breach a statement execution limit in the Zoho app function.
How?
If we're not going to use loops, then the next best thing I'm aware of is a regular expression.
Zoho Deluge: Associate/Link an Invoice to a Sales Order
- Category: Zoho
- Hits: 24987
This is an article because there was no documentation that I could find that describes how to do this. When an invoice is created, not by clicking on the "convert sales order to invoice" button, I needed a way to programmatically link the sales order to the invoice.

Why?
The documentation around the API does not detail how to do this. I also couldn't find any search result via Google or DuckDuckGo (can't say for Bing, I never get around to searching that). This took several hours but it is possible, I was just about to give up even after having spoken to Zoho Support... And then I started updating multiple fields at the same time.
How?
Through sweat and perseverance.
Zoho Creator: Get Images in Report to be Exported to PDF
- Category: Zoho
- Hits: 24354
This is an article to document how to produce a report which when exported to PDF will display images without a user wall.
Why?
Our client needs to send a report to suppliers that include photos of the faulty products. These display fine in a Zoho Creator report and even show up on the preview when exporting to PDF. But when you download the PDF and view this outside of the Zoho instances, the photos don't display.
This is because the photos were just links in the Zoho Creator image field, links to another Zoho app that is behind a user wall (ie. login and password as a Zoho User).
How?
So I'll go over what happens in the real world process; then cover some technical information; and even include the function that makes it work:
ZohoCRM & ZohoWriter: Generate Rich-Text / HTML Email Signatures in CRM
- Category: Zoho
- Hits: 32883
This is an article to show you how to, using Deluge code, generate all the email signatures in the user profile in ZohoCRM.
Why?
To simplify the on-boarding process. A client of ours has a rather rich HTML email signature with a profile photo included. When sending an email from CRM, they want CRM to include this rich signature (different per user) at the bottom of the email message.
How?
So there are a few issues with displaying images which would have other solutions, such as hosting the images on a web-server, or converting to a base64 or an SVG. ZohoCRM signatures seem to be unable to handle a lot of code or long URLs such as a base64 source URL for an image.
Zoho Deluge: Generate and Send a CSV via Email
- Category: Zoho
- Hits: 19984
A super quick article to remind me how to generate and send a CSV as an attachment to an email.
Why?
Because I often get casually asked "oh and can you archive the data and email it to me every month"...
How?
Rather than just babble on about it, here's the code, replace what you need just noting that I'm enclosing each value with double-quotes because the values might have commas and someone may want to open this in Google Sheets or Microsoft Excel:
ZohoBooks: Error Code 15: Ensure Billing Address has less than 100 characters
- Category: Zoho
- Hits: 26851
Another article on something I learned today despite never running into this issue before; but sending a billing/shipping address included in a request to create or update an estimate in ZohoBooks will fail...
Why?
I have a function to push a ZohoCRM quote to a ZohoBooks estimate and a client asked that the address on the CRM record 'pulls through'. Sending the address in the same request however gives me the following error:
{ "code": 15, "message": "Please ensure that the billing_address has less than 100 characters." }
How?
So the quick answer is 2 separate API calls after you have sent the code to either create or update the estimate in ZohoBooks. You will need the returned estimate ID and I'm not 100% sure the attention/phone number goes along as my client didn't include these in her estimate template... But I'm sending them anyway.
Zoho CRM: ZDK Client Script: Auto-Select Pipeline based on User Department
- Category: Zoho
- Hits: 16023
A super quick article on how to pre-select the pipeline on deal creation within CRM based on the department specified on a user's profile.
Why?
A client asked that when staff create a deal/opportunity record in CRM, the pipeline is automatically pre-selected based on the user.
How?
So there's a bit of a pre-amble for setting up the fields, we'll then use a client script to automatically read the user's record, retrieve the department, and set the correct pipeline option.
Page 9 of 25
Credit where Credit is Due:
Feel free to copy, redistribute and share this information. All that we ask is that you attribute credit and possibly even a link back to this website as it really helps in our search engine rankings.
Disclaimer: Please note that the information provided on this website is intended for informational purposes only and does not represent a warranty. The opinions expressed are those of the author only. We recommend testing any solutions in a development environment before implementing them in production. The articles are based on our good faith efforts and were current at the time of writing, reflecting our practical experience in a commercial setting.
Thank you for visiting and, as always, we hope this website was of some use to you!
Kind Regards,
Joel Lipman
www.joellipman.com
Latest Articles
Accreditation



Donate & Support
If you like my content, and would like to support this sharing site, feel free to donate using a method below:

bc1qf6elrdxc968h0k673l2djc9wrpazhqtxw8qqp4
0xb038962F3809b425D661EF5D22294Cf45E02FebF
Paypal:

Bitcoin:

Ethereum:
