The Scenario
You're the accountant setting up Zoho Books for a new client. The old billing system export has 150 service items — name, description, rate, tax identifier, and account code — sitting in a Google Sheet. The client needs to start invoicing on Monday. It's Friday morning.
The client asked if you could have the items in by end of today. You told them probably. You're now looking at 150 rows and doing the mental arithmetic on how long it will take to enter them manually.
The bad version:
- Open Zoho Books, navigate to Items, click New Item.
- Enter the name, description, rate, select the tax from the dropdown, select the account from the dropdown.
- Save. Open the sheet, find row 2, check the values, go back to Zoho Books.
- At item 40, realise the tax ID in column D doesn't match the tax name in Zoho Books and you need to build a translation table before you can continue.
One hundred and fifty service items. Five fields each. The dropdown for tax involves scrolling through a list every time. "Probably" is starting to feel optimistic.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads the product list and creates every item in Zoho Books directly — skipping duplicates, writing the returned item ID back to column F.
Create a Zoho Books item for each row in this sheet — name from column A, description from column B, rate from column C, tax ID from column D, and account code from column E; write the returned item ID into column F
What You Get
- 150 service items created in Zoho Books.
- Returned item ID written into column F for each successfully created row.
- Duplicate detection: if an item with the same name already exists in Zoho Books, the existing ID is written to column F and the row is skipped.
- Rows with missing names skipped and flagged in column G.
What If the Data Is Not Quite Ready
The tax column contains tax names, not Zoho Books tax IDs
Create a Zoho Books item for each row; look up the tax name in column D against the Zoho Books tax list to get the tax ID before creating the item; write item ID into column F and the resolved tax ID into column D
Some rows have duplicate names that should be updated rather than skipped
For each row in this sheet, check if a Zoho Books item with the same name already exists; if it does, update the rate and description rather than creating a duplicate; write item ID into column F and CREATED or UPDATED into column G
The account codes in column E are account names, not Zoho Books account codes
Create Zoho Books items for each row; look up each account name in column E in the Zoho Books chart of accounts to resolve the account code before creating; write item ID into column F
Full legacy catalogue migration in one shot
For each row in this sheet, look up the tax name in column D in the Zoho Books tax list to get the tax ID, look up the account name in column E in the chart of accounts to get the account code, then create the item with name from column A, description from column B, and rate from column C; if the item name already exists update it instead; write item ID into column F, CREATED or UPDATED into column G, and flag any rows where tax or account lookup failed in column H
The pattern: ask for both lookups, the upsert logic, and the error flags in one prompt.
Try It
Get the 7-day free trial of SheetXAI and open your product-catalogue Google Sheet, then ask it to seed all 150 service items into Zoho Books before the client starts invoicing Monday. See also how to bulk-create invoices from a billing schedule or return to the Zoho Books integration overview.
