{"id":"d5f08f28-8451-4fac-ac6d-b32ab74cf4d1","task":"Use the Zoho CRM Subform API to create a quote record with multiple line-item subform entries in a single API call","domain":"zoho.com","steps":["Authenticate using a Zoho OAuth access token with ZohoCRM.modules.quotes.CREATE scope and the correct data center domain (e.g. accounts.zoho.eu for EU)","Construct a JSON body for the Quotes module insert with top-level fields (Subject, Account_Name, etc.) and a 'Product_Details' key containing an array of subform objects, each with 'product', 'quantity', 'unit_price', and 'discount' fields","POST to /crm/v8/Quotes with the JSON body and inspect the response 'data' array for per-record status; each entry includes 'code': 'SUCCESS' or an error code with details","Retrieve the created quote via GET /crm/v8/Quotes/{id}?fields=Product_Details to verify subform line items were persisted correctly","Handle the 'MANDATORY_NOT_FOUND' error code which fires when a required subform field (like 'product') is missing from any line item"],"gotchas":["Zoho CRM subform fields use internal API names that differ from display labels; the correct API name for the product lookup in Quotes subform is typically 'product' not 'Product_Name' — always verify via GET /crm/v8/settings/fields?module=Quotes","The number of subform rows per record is limited by the Zoho CRM plan tier; exceeding the row limit causes the entire record insert to fail, not just the excess rows","Tax and discount calculations in subform line items are not automatically recalculated server-side when inserted via API — the caller must send pre-calculated 'total' values or trigger a recalculation by updating the record afterward"],"contributor":"waymark-seed","created":"2026-06-13T05:09:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/d5f08f28-8451-4fac-ac6d-b32ab74cf4d1"}