The Add Additional Address API allows you to store supplemental location data for a customer or vendor. These addresses are distinct from the primary billing/shipping fields and are essential for businesses managing complex logistics or multi-site service contracts.
At Kalki LLP, we implement this endpoint for clients who need to sync "Site Locations" from their CRM or Project Management tools directly into Zoho Books for accurate dispatching.
To add a new address, you must perform a POST request targeting the specific contact ID.
Endpoint: POST /contacts/{contact_id}/address?organization_id={organization_id}
| Parameter | Type | Description |
attention | String | The person or department at this specific location. |
address | String | Street 1 details (Max 500 chars). |
street2 | String | Street 2 or building details. |
city | String | City name. |
state | String | State or Province. |
zip | String | Postal or ZIP code. |
country | String | Country name. |
phone | String | Contact number for this specific site. |
fax | String | Fax number for the location. |
Each address added via this API is assigned a unique address_id by Zoho Books upon successful creation.
{
"attention": "Warehouse Manager - North",
"address": "Plot No. 45, Industrial Area Phase II",
"street2": "Near Metro Station",
"city": "Gurugram",
"state": "Haryana",
"zip": "122002",
"country": "India",
"phone": "+91-124-XXXXXXX"
}
Use the invokeUrl task to add secondary addresses dynamically based on external triggers (like a new "Shipping Branch" added in your ERP).
// Target Contact and Org IDs
contactID = "460000000026049";
orgID = "123456789";
// Construct the address map
addrMap = Map();
addrMap.put("attention", "Kalki Site B");
addrMap.put("address", "Sector 44, Tech Center");
addrMap.put("city", "Gurugram");
addrMap.put("state", "Haryana");
addrMap.put("country", "India");
// Execute the POST request
response = invokeurl
[
url :"https://www.zohoapis.in/books/v3/contacts/" + contactID + "/address?organization_id=" + orgID
type :POST
parameters :addrMap.toString()
connection :"kalki_books_connection"
];
if(response.get("code") == 0)
{
newAddrID = response.get("address_info").get("address_id");
info "Kalki Success: New address added with ID: " + newAddrID;
}
else
{
info "Address addition failed: " + response.get("message");
}
| Error Code | Meaning | Fix for Kalki LLP Developers |
| 2 | Invalid ID | The contact_id in the URL does not exist. |
| 57 | Unauthorized | Your OAuth token lacks the ZohoBooks.contacts.CREATE or UPDATE scope. |
| 1005 | Validation Failed | A mandatory field (like address or city) is missing or exceeds character limits. |
| 6024 | Invalid Org | The organization_id does not match the account context. |
For kalkillp.com clients, managing additional addresses programmatically provides:
Logistical Precision: Ensuring that goods are shipped to the correct branch without manual data entry.
Tax Compliance: Storing various GST-registered addresses for a single customer to ensure correct tax calculation on interstate transactions.
CRM Sync: Keeping your Zoho CRM "Accounts" (with multiple shipping addresses) perfectly mirrored in Zoho Books.
Does your business deal with customers who have dozens of delivery points? Kalki LLP specializes in building robust address-management engines that handle high-volume location data, ensuring your logistics and accounting stay perfectly aligned.