There has been multiple causes for this issue, namely:
(1) Invalid Address as per Vertex - Resolution here would be to find the alias name of the city for the given Zip code (Google, zip-codes.com, etc.) and use that. You should see the result instantly.
(2) Texas or Forida Addresses where there's no Nexus - Often we see that there are multiple records in vertex for the given city, and it throws an error. The safest option here is to obtain the Geography Code from vertex for such combinations and then update the same in Oracle as the GeographyCode Override (Default value = '77000000') to suppress vertex call. Alternatively we can create a AR Txn type with Tax Classification as 'No' and then tie that to a new Order Type. Any order with such order type will not call vertex.
(3) Millitary Addresses - Resolution is same as 2 above.
We are also facing the same problem, but for us not calling the vertex is not a solution, because we have so many customers, if we does not call vertex for all of them then we have to calculate the tax manually for all the customers. We need to find the solution that before running the Autoinvoice program we should know what will be the bad records which are making batch fail? Or we should get the solution to run the batch without any bad records. Can you tell me the solution where exempting of tax or vertex should not be there and still we need to get to the solution. Please help us out..
--- Here's a skeleton structure of the PLSQL that you should use----
-----Use this to find a good address from existing TCA in Oracle, by passing only the zip code:
FROM apps.hz_geographies hg,apps.hz_geography_identifiers hgi
WHERE hgi.geography_id = hg.geography_element4_id
AND hg.geography_name = :pp_zip_code
AND hg.geography_type = 'POSTAL_CODE'
-----The Update the Location
l_location_rec.CITY := rec_get_geo_elements.city;
l_location_rec.COUNTY := rec_get_geo_elements.county;
l_location_rec.STATE := rec_get_geo_elements.state;
hz_location_v2pub.update_location (p_init_msg_list => FND_API.G_TRUE,
p_location_rec => l_location_rec,
p_object_version_number => l_object_version_number,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data);