Business relationships are dynamic—addresses change, contact persons move, and tax statuses get updated. The Update a Contact API allows you to programmatically modify any attribute of an existing customer or vendor.
At Kalki LLP, we design update workflows that ensure data integrity, preventing the accidental overwriting of critical financial details like payment terms or GST numbers.
To update a contact, you must perform a PUT request and include the unique contact_id in the URL.
Endpoint: PUT /contacts/{contact_id}?organization_id={organization_id}
Partial Updates: You do not need to send the entire contact object. You only need to send the fields you wish to modify.
Array Overwriting: Be careful with arrays like contact_persons. If you provide this array in your update, it will replace the entire existing list of contact persons for that contact.
In this example, we are updating the company name and adding a new primary billing address.
{
"company_name": "Kalki Tech Global Solutions",
"payment_terms": 45,
"billing_address": {
"attention": "Finance Manager",
"address": "789 Innovation Way",
"city": "Gurugram",
"state": "Haryana",
"zip": "122002",
"country": "India"
}
}
When updating via Deluge, we recommend fetching the existing record first if you are performing logic-based updates (like appending notes).
// Define the Contact ID and Update Data
contactID = "460000000026049";
updateData = Map();
updateData.put("company_name", "Kalki LLP - Updated");
updateData.put("payment_terms", 60);
// Execute the Update in Zoho Books
response = zoho.books.updateRecord("Contacts", "123456789", contactID, updateData, "kalki_connection");
if(response.get("code") == 0)
{
info "Contact updated successfully.";
}
else
{
info "Update failed: " + response.get("message");
}
One of the most common pitfalls developers face is managing Contact Persons during a contact update.
To Edit a Person: You must include their specific contact_person_id within the contact_persons array in your JSON body.
To Remove a Person: Simply omit them from the contact_persons array in your update request.
| Error Code | Meaning | Fix for Kalki LLP Developers |
| 2 | Invalid ID | The contact_id in the URL does not exist or has been deleted. |
| 3000 | Name Conflict | You are trying to update the contact_name to a value that already exists for another contact. |
| 57 | Unauthorized | Your OAuth token lacks the ZohoBooks.contacts.UPDATE scope. |
| 1005 | Validation Failed | A mandatory field (like contact_name) was sent as an empty string. |
While you can update many fields here, if you specifically want to mark a contact as Inactive, it is better to use the specialized /active or /inactive endpoints rather than a general PUT request. This ensures all associated background processes (like stopping payment reminders) are triggered correctly.
Inaccurate contact data leads to missed payments and tax compliance issues. Kalki LLP helps businesses build automated data cleansing tools that keep Zoho Books perfectly in sync with your master CRM or ERP records.