Using a CRM Client Script Button to create a Books Invoice

Using a CRM Client Script Button to create a Books Invoice

Hello,
I need help handling error messages returned to my client script from a function.

The scenario
I have setup a client script button which is available from each Deal.
This CS executes a crm function, which in turn creates an invoice based on the information in the Deal.
The client script checks the deal is at the correct stage and displays the amount to be invoiced, before proceeding to execute the function.

The problem
It all works perfectly well except for the error handling. I'm only testing for a 'response' from the function ( in the Client Script) before showing a success or error message, so even if the function returns null or undefined, it still says it has been successful.

What I tried
So, I wanted to pass something more useful to the client script, like the newly created invoice number or id but it just doesn't seem to be working. I have tried using variations of this approach:
var output = JSON.parse(response.details.output)
but get this error amongst others...
"undefined" is not valid JSON 
What doesn't help matters is that I can't fully test the invoice creation process, even using a crm sandbox, because it will still create real invoices in Books, which I would rather avoid.

What are your thoughts on how to approach this?  Below are the relevant parts of my code, in case it is useful to see.

CRM Function
  1. string standalone.createtradeinvoicesa(String orderId,String userId,String invType)
  2. {
  3. // earlier code creates invMap with invoice items
  4. // CREATE NEW INVOICE IN ZOHO BOOKS
  5. resp = zoho.books.createRecord("Invoices",orgId,invMap,"zbooksall");
  6. if(resp.get("code") == 0)
  7. {
  8. //for client script
  9. invoiceid = resp.get("invoice").get("id");
  10. invoiceinfo = zoho.books.getRecordsByID("invoices",orgId,invoiceid,"zbooksall");
  11. info "client-script-output=" + invoiceinfo;
  12. invoiceNum = resp.get("invoice").get("invoice_number");
  13. invoiceDate = today.toDate("dd/mm/yyyy");
  14. invoiceDate = invoiceDate.toString("dd/MM/yyyy");
  15. //user id and name for note
  16.    else
  17. {
  18. returnMsg = "Error : an invoice has not been created in Zoho Books.";
  19. }
  20. return invoiceinfo;
  21. }

Client Script

  1. var functionName = "xxx";
  2. // get the order and user ID of this page
  3. var record_id = $Page.record_id;
  4. var user_id = $Crm.user.id;
  5. // get field values
  6. var stage_value = ZDK.Page.getField('Stage').getValue();
  7. var orderNo = ZDK.Page.getField('Deal_Name').getValue();
  8. // other checks go before this in the full script
  9. //If user clicks Proceed button
  10. if (isProceed) {
  11. // Message
  12. var successText = 'You will find your draft invoice in the Zoho Finance section below.';
  13. var errorText = 'There has been a problem, your invoice has not been created.';
  14. // show loader
  15. ZDK.Client.showLoader({ type: 'page', template: 'spinner', message: 'Creating Invoice...' });
  16. // call function in variable
  17. var response = ZDK.Apps.CRM.Functions.execute(functionName, { "orderId": record_id, "userId": user_id });
  18. ZDK.Client.hideLoader();
  19. // show sucess or error messages and execute function
  20. // response from function is the new invoice information, so in theory, the response should be null/undefined if the invoice wasn't created.
  21. if (response) {
  22. var sucessMessage = ZDK.Client.showAlert(successText, 'Invoice Created', 'Close');
  23. return response & successMessage & $Client.refresh();
  24. } else {
  25. errorMessage = ZDK.Client.showMessage(errorText, { type: 'error' });
  26. return errorMessage;
  27. }
  28. }
  29. //If user clicks Cancel button from invoice creation
  30. else {
  31. return false;
  32. }

    • Sticky Posts

    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #226: Using ZRC in Client Script

      Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
    • Kaizen #222 - Client Script Support for Notes Related List

      Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
    • Kaizen #217 - Actions APIs : Tasks

      Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
    • Kaizen #216 - Actions APIs : Email Notifications

      Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
    • Recent Topics

    • Syncing zoho books into zoho crm

      I was wondering how I can use zoho books in crm as I have been using them separately and would like to sync the two. Is this possible and if so, how? Thanks
    • Introducing a smarter, faster, and more flexible charting experience

      Hello Zoho Sheet users, We're delighted to share the latest news about a major update to charts in Zoho Sheet! The new version supports dynamic data ranges, granular styling options, faster loading, and other interesting enhancements that allow you to
    • REFUND REQUEST FOR PLAN SUBSCRIPTION CANCELLED

      I have cancelled my Zoho Books subscription and would like to request a full refund for the subscription. Kindly process the refund at your earliest convenience.
    • Connecting Airwallex in Zoho Books

      I have a question. I’m trying to connect our Airwallex account to Zoho Books, but the integration does not seem to work. Could you please guide me on how to properly connect Airwallex? I need to see the expenses also, since it only shows the profits now
    • purchasing a pagkage

      goodmorning i want to pay for my monthly package but your app is sayinng i have insufficient funds yet i loaded money on my account yesterday though in our currency of ugx
    • Edit Receipt, how?

      Do you notice the big blank space in Receipt? I want to remove that. I know there is a template but that blank space, I can't seem to remove it. Please help. Thank you!
    • Can I export a TXF (TurboTax exchange format) file out of Zoho Books?

      Hello, I'm trying to do my US Small Business Taxes using Intuit's Turbo Tax. Can I export my expenses from Zoho Books to a TXF format file, so that it can then be imported into Turbo Tax? Thanks, Rajnesh
    • Tax inclusive and exclusive for Sales invoices

      Hello, where can I set my tax to be inclusive or exclusive for invoices in Zoho Books? There used to be a button for me to do that right above the products table. Can someone help me please? Thank you!
    • Unable to produce monthly P&L reports for previous years

      My company just migrated to Books this year. We have 5+ years financial data and need to generate a monthly P&L for 2019 and a monthly P&L YTD for 2020. The latter is easy, but I'm VERY surprised to learn that default reports in Zoho Books cannot create
    • ZOHO Reports are taking longer time to get refresh

      Hi Team, Since last few days, I'm facing issues in getting updated reports. For eg: right after making an expense entry or even posting a journal, it is taking longer then expected for the updated reports. Refer below: "You are viewing the report that
    • Dont want to list inactive items.

      If an item is made inactive, there is no point in showing it in the item list. Please provide an option to hide all inactive items in 'Preferences'. 
    • audio and video comments in tasks in zoho projects

      Hi, is it planned to have the ability to post audio and video comments? the whatsapp wechat format of communicating is a reality... tools like zoho project would facilitate a lot teamwork by facilitating the way in which we can give feedback in audio and video rather than only text. thx!
    • Questions Regarding Helpdesk & SalesIQ Customization and Email Setup

      Hello, I hope you’re doing well. I have a few questions regarding Helpdesk and SalesIQ: Can the emails sent to customers via helpdesk tickets be fully customized — including signature, subject line, and other elements? Also, is it possible to send these
    • Looking for Zoho + Twilio Automation Specialist (Duda Website Integration)

      Hi everyone, I’m looking for an experienced Zoho specialist to help build a mostly automated CRM and booking system for my service business. I already have a live website built on Duda.co and need help integrating my existing forms into Zoho CRM (no rebuild
    • Ask the Experts 27: Onboarding and managing support reps

      Hello everyone, We are back with our Ask the Experts (ATE) series for 2026. This year, we bring experts to help you address customer support challenges using Zoho Desk. For our first ATE, we are getting into the human side of customer support. "Every
    • Salesforceに添付ファイルを格納したい

      お世話になっております。 Salesforceに添付ファイルを格納したく、カスタムオブジェクトに連携し、 「ファイルのアップロード」項目を設けました。 実際、エラーもなく送信出来たのですが、実際生成されたカスタムオブジェクトのレコードを見ると、どこにも添付ファイルがありません。仕様として、この添付ファイルはSalesforceのどこに格納されるのでしょうか? 今回作りたいフォームは、複数の書類を添付するため、Zohoformのファイルアップロード項目「本人確認書類」「源泉徴収票」などの項目を、Salesforce側にも設けた「本人確認書類」「源泉徴収票」という各項目にURLリンクとして紐づけたいと思っておりました。
    • Zoho CRM For Everyone UI Rollout Begins for All Users

      Hello Partners, We have started rolling out the new Zoho CRM For Everyone UI as the default experience for all users. This update is being released in three phases based on organization size and account type. We want to keep you informed of the rollout
    • Migrating all workflows to another Zoho account

      We are going to transfer into another company, and we are going to get new emails and new Zoho accounts. Is there a way to migrate (or save in some sort of external file) all presets and settings that we have on this account? That includes primarily workflows,
    • How to retreive the "To be received" value of an Item displayed in Zoho inventory.

      Hi everyone, We have our own Deluge code to generate a PO according to taget quantity and box quantity, pretty usefull and powerful! However, we want to reduce our quantity to order according to "To be received" variable. Seems like this might not even
    • Introducing Explainer Videos for Zoho Desk: Solve everyday challenges with simple configurations

      Dear everyone, We have created a set of short explainer videos that show how common support scenarios can be handled using simple configurations within the product. The solutions often lie in the plain sight, but go unnoticed. Through these videos we
    • Notifications Feeds unread count?

      How do I reset the unread count on feeds notifications?  I've opened every notification in the list.  And the count never goes to zero.
    • Simple reliable solution to convert MSG files for AOL Mail?

      A simple and reliable way to convert MSG files for AOL Mail is by using a professional tool MacGater Mac MSG Converter. This software allows users to quickly convert MSG files into formats compatible with AOL, such as MBOX or direct email migration. It
    • Zoho One Support is non existent...

      I've tried through Email, Chat, this community and finally through Phone. There is no way to receive an answer. Email = over a week and no answer Chat = not available Community = no answer at all Telephone = after clicking myself through the callcenter
    • Disable Zoho Contacts

      We don't want to use this app... How can we disable it?
    • Custom module - change from autonumber to name

      I fear I know the answer to this already, but thought I'd ask the question. I created a custom module and instead of having a name as being the primary field, I changed it to an auto-number. I didn't realise that all searches would only show this reference.
    • Edit a previous reconciliation

      I realized that during my March bank reconciliation, I chose the wrong check to reconcile (they were for the same amount on the same date, I just chose the wrong check to reconcile). So now, the incorrect check is showing as un-reconciled. Is there any way I can edit a previous reconciliation (this is 7 months ago) so I can adjust the check that was reconciled? The amounts are exactly the same and it won't change my ending balance.
    • How to add "All Open AND Overdue" back to the Home Page Task Component?

      Hi everyone, I’m looking for a way to restore the Tasks component dropdown list on the Zoho CRM Home Page. Since the recent update to the Task area in my Home Page Classic View, the dropdown options (e.g., My Next 7 Days + Overdue) are too restrictive
    • Dynamic Questions in Zoho Forms

      Is it possible to add dynamic questions (like displaying a user’s name) in Zoho Forms? I know this is possible in surveys, but can we implement similar functionality in Zoho Forms?
    • Introducing Zoho MCP for Bigin

      Hello Biginners! We're excited to introduce Zoho MCP for Bigin, a completely new way of interacting with Bigin data using AI. With Zoho MCP, you can securely connect your Bigin account with popular AI tools like Claude, Cursor, Windsurf, and VS Code,
    • associating products with accounts

      I have all my accounts and products in zoho now.  I need to generate a sales order for an account.  The product lookup feature on the sales order shows no products...how can I get them to appear. 
    • Three Zoho Billing Limitations Blocking Standard Subscription Operations

      After working through Zoho Billing support for over a year on these three issues without resolution, we wanted to flag them to the broader community. We are curious whether other businesses are running into the same walls. 1. Cannot Prepone (Move Earlier)
    • SAP Business One(B1) integration is now live in Zoho Flow

      We’re excited to share that SAP Business One (B1) is now available in Zoho Flow! This means you can now build workflows that connect SAP B1 with other apps and automate routine processes without relying on custom code. Note: SAP Business One integration
    • Built-in Date Functions in Zoho Analytics Query Tables

      I have a doubt about whether Zoho Analytics Query Tables provide built-in functions for start date, end date, and the current month
    • [Action Required] : Update Shopify Access Scope to fetch complete order history

      Hello Shopify Users! Shopify has updated the access scope for apps under developer portal. With this change, the read_orders scope now provides access only to the last 60 days of order history. To access older historical orders, Shopify requires a separate
    • Enhancements for Currencies in Zoho CRM: Automatic exchange rate updates, options to update record exchange rates, and more

      The multi-currency feature helps you track currencies region-wise. This can apply to Sales, CTC, or any other currency-related data. You can record amounts in a customer’s local currency, while the CRM automatically converts them to your home currency
    • Advance Payment Record Removed When Deleting Applied Credit from Bill

      Hello, So while working with vendor advance payments, I noticed that removing the applied credit from a bill also removes the corresponding entry from the Payments Made section. What I did : Recorded an advance payment to a vendor through Payments Made.
    • How to Connect Zoho Books with e-Way Bill Portal (Step-by-Step Guide)

      Integrating Zoho Books with the e-Way Bill portal helps automate your logistics and compliance process. Follow the steps below to set it up easily: 🚀 How to Connect Zoho Books with e-Way Bill Portal (Step-by-Step Guide) Integrating Zoho Books with the
    • Is there a way to update all the start and end dates of tasks of a project after a calendar change?

      Hi! Here's my situation. I've built a complete project planning. All its tasks have start dates and due dates. After completing the planning, I've realized that the project calendar was not the right one. So I changed the project calendar. I now have
    • Lookup fields can't be used for anything important

      Hi It seems the lookup fields are mostly.... informative, you can at most link stuff between modules... You can't use lookup fields in blueprints, you can't use them in layout rules or anything... It that correct?
    • Sales Allowed Beyond Available Stock and Payment Recorded Without Restriction

      Hi, While testing in Zoho Inventory, I noticed that a sales order can be created with a quantity exceeding the available stock in the selected warehouse. In my case: Available stock: 5 units Ordered quantity: 6 units Despite this: I was able to convert
    • Next Page