Back to blog
Article

US address verifier using usps API insight

US address verifier using usps API We came across a requirement where one of our customers wanted to verify the address entered. It took a while to get the right API method that would work. Fortunately, USPS offers a...

AorBorC field note / Last reviewed July 9, 2026

4m
Read time
Feb
Published
US address verifier using usps API

US address verifier using usps API

We came across a requirement where one of our customers wanted to verify the address entered. It took a while to get the right API method that would work. Fortunately, USPS offers a good API and documentation on this. We are listing the steps below to achieve the same in your application.

Prerequisites:

  1. A USPS api USER ID, created at https://registration.shippingapis.com/ You will receive an email after the registration with the userid (created automatically by usps)
  2. Knowledge of Zoho Creator’s PostURL and XML parsing and deluge scripting

How It Is Done :

We have created the following fields on the Form

  1. Address fields – Street Address, Apt no, City, State, Zip-
  2. a decision box “Verify Address”, to initiate the address verifier
  3. an Add notes field “address_display”, to display the verified address
  4. a decision box “Update Address”, to update the address fields with the correct address

Script Execution:

On user input of “Verify Address” field triggers the address verifier and updates the address_display notes field and has the following script

if (input.Verify_Address){
xml_string = thisapp.usps.construct_xml(input.Street_Address, input.Apartment_or_Suite_Number, input.City, input.State, input.Zip_Code);
usps_resp = thisapp.usps.verify_address(xml_string);
resp_map = thisapp.usps.beautify_xml(usps_resp);
input.Verified_Address = resp_map.toString();
input.address_display = resp_map.get("address_display_html");
}

1. Construct The XML

string usps.construct_xml(string street_address, string apt_no, string city, string state, string zip)
{
    xml_string = "<AddressValidateRequest USERID=\"your_user_id_from_usps_email\"><IncludeOptionalElements>true<IncludeOptionalElements> <
    ReturnCarrierRoute>true</ReturnCarrierRoute><Address ID=\"0\"><FirmName />";
    xml_string = xml_string + "<Address1>" + ifnull(input.apt_no,"") + "</Address1>";
    xml_string = xml_string + "<Address2>" + ifnull(input.street_address,"") + "</Address2>";
    xml_string = xml_string + "<City>" + ifnull(input.city,"") + "</City>";
    xml_string = xml_string + "<State>" + ifnull(input.state,"") + "</State>";
    xml_string = xml_string + "<Zip5>" + ifnull(input.zip,"") + "</Zip5>";
    xml_string = xml_string + "<Zip4></Zip4>";
    xml_string = xml_string + "</Address></AddressValidateRequest>";
    return xml_string;
}

2. Use The Zoho Creator’s Post Url To Verify Address From USPS Website

string usps.verify_address(string xml_string){
     usps_url = "http://production.shippingapis.com/ShippingAPI.dll";
     params = map();
     params.put("API", "Verify");
     params.put("XML", input.xml_string);
     usps_resp = postUrl(usps_url, params);
     return usps_resp;
}

3. Parse The XML And Store The Response In A Map/Object Variable

map usps.beautify_xml(string xml_string){
    xml_map = map();
    address_display_html =("<style>.list-group-item{list-style: none;color:#fff;}</style><div id='address_display_custom' style='background-color:#5cb85c;border-color:#5cb85c;width:300px;padding:4px;border-radius:4px;border:1px solid rgba(0,0,0,.125);'><ul class='list-group'>");
     street_address_val = input.xml_string.executeXPath("/AddressValidateResponse/Address/Address2/text()");
     xml_map.put("street_address_val", street_address_val);
     address_display_html = address_display_html + "<li class='list-group-item'>" + street_address_val + "</li>";
     apt_no = input.xml_string.executeXPath("/AddressValidateResponse/Address/Address1/text()");
     xml_map.put("apt_no", apt_no);
     address_display_html = address_display_html + "<li class='list-group-item'>" + apt_no + "</li>";
     city_val = input.xml_string.executeXPath("/AddressValidateResponse/Address/City/text()");
     xml_map.put("city_val", city_val);
     address_display_html = address_display_html + "<li class='list-group-item'>" + city_val + "</li>";
     state_val = input.xml_string.executeXPath("/AddressValidateResponse/Address/State/text()");
     xml_map.put("state_val", state_val);
     address_display_html = address_display_html + "<li class='list-group-item'>" + state_val + "</li>";
     zip_val = input.xml_string.executeXPath("/AddressValidateResponse/Address/Zip5/text()");
     xml_map.put("zip_val", zip_val);
     address_display_html = address_display_html + "<li class='list-group-item'>" + zip_val + "</li>";
     address_display_html = address_display_html + "</ul> </div> ";
     xml_map.put("address_display_html", address_display_html);
     return xml_map;
}

To update fields with correct address, the Update Address field’s on user input has the following script

Note: Verified_Address is a hidden multi-line text field to store the map response.

if (input.Update_Address  &&  (input.Verified_Address  !=  "")){
    xml_map = input.Verified_Address.toMap();
    input.Apartment_or_Suite_Number = xml_map.get("apt_no");
    input.Street_Address = xml_map.get("street_address_val");
    input.City = xml_map.get("city_val");
    input.State = xml_map.get("state_val");
    input.Zip_Code = xml_map.get("zip_val");
}

Live Preview

Need Help?

Get in touch to discuss how we can help build, improve, or support your business systems.

Related Articles

July 7, 2026

Custom AI Assistants for Zoho: Audit Before You Automate

A practical guide to reviewing Zoho workflows before adding AI assistants, agents, and automation into live operations.

Read article

May 9, 2026

Why 2025 Is the Year of AI Agents

AI agents are graduating from demos to real business value. Here is what every leader needs to know about deploying autonomous AI in production.

Read article