diff --git a/docs/source/translation/building_address.rst b/docs/source/translation/building_address.rst
index 33449491..8fdf52c7 100644
--- a/docs/source/translation/building_address.rst
+++ b/docs/source/translation/building_address.rst
@@ -33,8 +33,10 @@ format for HEScore.
 
 HPXML allows for two lines of address elements. If both are used, the lines will
 be concatenated with a space between for submission to the HEScore
-``building_address.address`` field. All of the HPXML elements shown in the
-above code snippet are required with the exception of ``Address2``
+``building_address.address`` field. All of the HPXML elements shown in the above
+code snippet are required with the exception of ``Address2``. Additionally, if a
+zip plus 4 code is entered in HPXML, it will be trimmed to just the 5 digit zip
+code before being passed to HEScore.
 
 .. _assessment-type-mapping:
 
diff --git a/hescorehpxml/base.py b/hescorehpxml/base.py
index bfb1f4d5..169a39dd 100644
--- a/hescorehpxml/base.py
+++ b/hescorehpxml/base.py
@@ -816,7 +816,8 @@ class HPXMLtoHEScoreTranslatorBase(object):
             raise ElementNotFoundError(hpxmladdress, 'h:Address1/text() | h:Address2/text()', {})
         bldgaddr['city'] = xpath(b, 'h:Site/h:Address/h:CityMunicipality/text()', raise_err=True)
         bldgaddr['state'] = xpath(b, 'h:Site/h:Address/h:StateCode/text()', raise_err=True)
-        bldgaddr['zip_code'] = xpath(b, 'h:Site/h:Address/h:ZipCode/text()', raise_err=True)
+        hpxml_zipcode = xpath(b, 'h:Site/h:Address/h:ZipCode/text()', raise_err=True)
+        bldgaddr['zip_code'] = re.match(r"([0-9]{5})(-[0-9]{4})?", hpxml_zipcode).group(1)
         transaction_type = xpath(self.hpxmldoc, 'h:XMLTransactionHeaderInformation/h:Transaction/text()')
         is_mentor = xpath(b, 'boolean(h:ProjectStatus/h:extension/h:HEScoreMentorAssessment)')
         if is_mentor:

diff --git a/tests/test_translation.py b/tests/test_translation.py
index 117daa04..ff02c0ff 100644
--- a/tests/test_translation.py
+++ b/tests/test_translation.py
@@ -3048,6 +3048,14 @@ class TestHEScore2021Updates(unittest.TestCase, ComparatorBase):
         self.assertEqual(res3['building']['zone']['zone_roof'][1]['zone_skylight']['skylight_code'], 'dtab')
         self.assertFalse(res3['building']['zone']['zone_roof'][1]['zone_skylight']['solar_screen'])
 
+    def test_zip_plus4(self):
+        tr = self._load_xmlfile('hescore_min_v3')
+        el = self.xpath('//h:ZipCode')
+        orig_zipcode = str(el.text)
+        el.text = el.text + '-1234'
+        res = tr.hpxml_to_hescore()
+        self.assertEqual(res['building_address']['zip_code'], orig_zipcode)
+
 
 class TestHEScoreV3(unittest.TestCase, ComparatorBase):
 

Handle ZIP+4 cleanly
HPXML allows for ZIP+4: https://hpxml.nrel.gov/datadictionary/3.0.0/Building/Site/Address/ZipCode

If an [HPXML file](https://github.com/NREL/hescore-hpxml/files/7171808/zip_plus_4.xml.txt) is submitted with a valid ZIP+4 entry then hpxml2hescore passes it with no changes to the JSON output:
```
  "building_address": {
    "address": "1 API House", 
    "city": "Minden", 
    "state": "NE", 
    "zip_code": "68959-1234", 
    "assessment_type": "initial"
  }, 
```
This results in the following error from submit_hpxml:
```
ZIP code 68959-1234 not found
```

**Expected behavior**
JSON output:
```
  "building_address": {
    "address": "1 API House", 
    "city": "Minden", 
    "state": "NE", 
    "zip_code": "68959", 
    "assessment_type": "initial"
  }, 
```
And no error from submit_hpxml
tests/test_translation.py::TestHEScore2021Updates::test_zip_plus4
tests/test_translation.py::TestAPIHouses::test_house1 tests/test_translation.py::TestAPIHouses::test_house1_v2 tests/test_translation.py::TestAPIHouses::test_house1_v2_1 tests/test_translation.py::TestAPIHouses::test_house2 tests/test_translation.py::TestAPIHouses::test_house3 tests/test_translation.py::TestAPIHouses::test_house4 tests/test_translation.py::TestAPIHouses::test_house5 tests/test_translation.py::TestAPIHouses::test_house6 tests/test_translation.py::TestAPIHouses::test_house7 tests/test_translation.py::TestAPIHouses::test_house8 tests/test_translation.py::TestCLI::test_cli_pass tests/test_translation.py::TestOtherHouses::test_air_source_heat_pump_has_no_ducts tests/test_translation.py::TestOtherHouses::test_attic_knee_wall tests/test_translation.py::TestOtherHouses::test_attic_knee_wall_zero_rvalue tests/test_translation.py::TestOtherHouses::test_attic_roof_assoc tests/test_translation.py::TestOtherHouses::test_bad_duct_location tests/test_translation.py::TestOtherHouses::test_bldgid_not_found tests/test_translation.py::TestOtherHouses::test_clg_sys_has_air_dist tests/test_translation.py::TestOtherHouses::test_cooling_system_wrong_efficiency_type tests/test_translation.py::TestOtherHouses::test_dist_sys_idref tests/test_translation.py::TestOtherHouses::test_evap_cooling_system_type tests/test_translation.py::TestOtherHouses::test_external_id_extension_passthru tests/test_translation.py::TestOtherHouses::test_external_id_passthru tests/test_translation.py::TestOtherHouses::test_extra_roof_sheathing_insulation tests/test_translation.py::TestOtherHouses::test_extra_wall_sheathing_insulation tests/test_translation.py::TestOtherHouses::test_floor_no_area tests/test_translation.py::TestOtherHouses::test_foundation_walls_on_slab tests/test_translation.py::TestOtherHouses::test_frac_duct_area_missing tests/test_translation.py::TestOtherHouses::test_gable_wall_ignore tests/test_translation.py::TestOtherHouses::test_heating_system_no_efficiency tests/test_translation.py::TestOtherHouses::test_heating_system_wrong_efficiency_type tests/test_translation.py::TestOtherHouses::test_heatpump_no_cooling tests/test_translation.py::TestOtherHouses::test_heatpump_no_heating tests/test_translation.py::TestOtherHouses::test_hescore_min tests/test_translation.py::TestOtherHouses::test_htg_sys_has_air_dist tests/test_translation.py::TestOtherHouses::test_hvac_fractions_sum_to_one tests/test_translation.py::TestOtherHouses::test_impossible_cooling_system_type tests/test_translation.py::TestOtherHouses::test_impossible_heating_system_type tests/test_translation.py::TestOtherHouses::test_impossible_triple_pane_window tests/test_translation.py::TestOtherHouses::test_impossible_window tests/test_translation.py::TestOtherHouses::test_indirect_dhw_error tests/test_translation.py::TestOtherHouses::test_invalid_attic_type tests/test_translation.py::TestOtherHouses::test_invalid_residential_faciliy_type tests/test_translation.py::TestOtherHouses::test_invalid_roof_type tests/test_translation.py::TestOtherHouses::test_invalid_surroundings tests/test_translation.py::TestOtherHouses::test_log_wall_fail tests/test_translation.py::TestOtherHouses::test_mentor_extension tests/test_translation.py::TestOtherHouses::test_missing_attached_to_roof tests/test_translation.py::TestOtherHouses::test_missing_cooling_system tests/test_translation.py::TestOtherHouses::test_missing_cooling_weighting_factor tests/test_translation.py::TestOtherHouses::test_missing_heating_system tests/test_translation.py::TestOtherHouses::test_missing_heating_weighting_factor tests/test_translation.py::TestOtherHouses::test_missing_residential_facility_type tests/test_translation.py::TestOtherHouses::test_missing_roof_color tests/test_translation.py::TestOtherHouses::test_missing_roof_type tests/test_translation.py::TestOtherHouses::test_missing_siding tests/test_translation.py::TestOtherHouses::test_missing_skylight_area tests/test_translation.py::TestOtherHouses::test_missing_surroundings tests/test_translation.py::TestOtherHouses::test_missing_water_heater tests/test_translation.py::TestOtherHouses::test_missing_window_area tests/test_translation.py::TestOtherHouses::test_missing_window_orientation tests/test_translation.py::TestOtherHouses::test_only_duct_system_per_heating_sys tests/test_translation.py::TestOtherHouses::test_ove_low_r tests/test_translation.py::TestOtherHouses::test_preconstruction_event_type tests/test_translation.py::TestOtherHouses::test_siding_cmu_fail tests/test_translation.py::TestOtherHouses::test_siding_fail2 tests/test_translation.py::TestOtherHouses::test_slab_missing tests/test_translation.py::TestOtherHouses::test_tankless_coil_dhw_error tests/test_translation.py::TestOtherHouses::test_too_many_duct_systems tests/test_translation.py::TestOtherHouses::test_townhouse_walls tests/test_translation.py::TestOtherHouses::test_townhouse_walls_all_same tests/test_translation.py::TestOtherHouses::test_townhouse_walls_conflict tests/test_translation.py::TestOtherHouses::test_townhouse_window_fail tests/test_translation.py::TestOtherHouses::test_townhouse_window_wall_all_same_fail tests/test_translation.py::TestOtherHouses::test_townhouse_windows_area_wrong tests/test_translation.py::TestOtherHouses::test_wall_construction_ps_low_r tests/test_translation.py::TestOtherHouses::test_wall_insulation_layer_missing_rvalue tests/test_translation.py::TestOtherHouses::test_wall_same_area_same_side_different_construction tests/test_translation.py::TestOtherHouses::test_window_area_sum_on_angled_front_door tests/test_translation.py::TestOtherHouses::test_window_attached_to_wall tests/test_translation.py::TestOtherHouses::test_window_only_attached_to_foundation_wall tests/test_translation.py::TestOtherHouses::test_wood_stove tests/test_translation.py::TestOtherHouses::test_wood_stove_invalid_fuel_type tests/test_translation.py::TestOtherHouses::test_zipcode_missing tests/test_translation.py::TestInputOutOfBounds::test_assessment_date1 tests/test_translation.py::TestInputOutOfBounds::test_assessment_date2 tests/test_translation.py::TestInputOutOfBounds::test_conditioned_floor_area1 tests/test_translation.py::TestInputOutOfBounds::test_conditioned_floor_area2 tests/test_translation.py::TestInputOutOfBounds::test_cooling_efficiency tests/test_translation.py::TestInputOutOfBounds::test_cooling_year tests/test_translation.py::TestInputOutOfBounds::test_dhw_heat_pump_efficiency tests/test_translation.py::TestInputOutOfBounds::test_dhw_storage_efficiency tests/test_translation.py::TestInputOutOfBounds::test_dhw_year tests/test_translation.py::TestInputOutOfBounds::test_envelope_leakage tests/test_translation.py::TestInputOutOfBounds::test_evap_cooler_missing_efficiency tests/test_translation.py::TestInputOutOfBounds::test_floor_to_ceiling_height1 tests/test_translation.py::TestInputOutOfBounds::test_floor_to_ceiling_height2 tests/test_translation.py::TestInputOutOfBounds::test_heating_efficiency_furnace tests/test_translation.py::TestInputOutOfBounds::test_heating_efficiency_gchp tests/test_translation.py::TestInputOutOfBounds::test_heating_efficiency_heat_pump tests/test_translation.py::TestInputOutOfBounds::test_heating_year tests/test_translation.py::TestInputOutOfBounds::test_num_floor_above_grade tests/test_translation.py::TestInputOutOfBounds::test_number_bedrooms tests/test_translation.py::TestInputOutOfBounds::test_skylight_area tests/test_translation.py::TestInputOutOfBounds::test_skylight_u_value tests/test_translation.py::TestInputOutOfBounds::test_window_area tests/test_translation.py::TestInputOutOfBounds::test_window_u_value tests/test_translation.py::TestInputOutOfBounds::test_year_built1 tests/test_translation.py::TestInputOutOfBounds::test_year_built2 tests/test_translation.py::TestHVACFractions::test_allow_5pct_diff tests/test_translation.py::TestHVACFractions::test_boiler_roomac tests/test_translation.py::TestHVACFractions::test_different_weighting_factors tests/test_translation.py::TestHVACFractions::test_furnace_baseboard_centralac tests/test_translation.py::TestHVACFractions::test_furnace_heat_pump tests/test_translation.py::TestHVACFractions::test_wall_furnace_baseboard_centralac tests/test_translation.py::TestPhotovoltaics::test_azimuth_orientation_missing tests/test_translation.py::TestPhotovoltaics::test_capacity_missing tests/test_translation.py::TestPhotovoltaics::test_collector_area tests/test_translation.py::TestPhotovoltaics::test_orientation tests/test_translation.py::TestPhotovoltaics::test_pv tests/test_translation.py::TestPhotovoltaics::test_two_sys_avg tests/test_translation.py::TestPhotovoltaics::test_two_sys_different_capacity_error tests/test_translation.py::TestPhotovoltaics::test_years_missing tests/test_translation.py::TesHPXMLVersion2Point3::test_floor_furnace tests/test_translation.py::TesHPXMLVersion2Point3::test_medium_dark_roof_color tests/test_translation.py::TesHPXMLVersion2Point3::test_roof_absorptance tests/test_translation.py::TestHEScore2019Updates::test_bldg_about_comment tests/test_translation.py::TestHEScore2019Updates::test_conditioned_attic tests/test_translation.py::TestHEScore2019Updates::test_duct_location_validation tests/test_translation.py::TestHEScore2019Updates::test_ducted_hvac_combinations tests/test_translation.py::TestHEScore2019Updates::test_ductless_hvac_combinations tests/test_translation.py::TestHEScore2019Updates::test_hpwes tests/test_translation.py::TestHEScore2019Updates::test_hpwes_fail tests/test_translation.py::TestHEScore2019Updates::test_mini_split_cooling_only tests/test_translation.py::TestHEScore2019Updates::test_skylight_solar_screens_exteriorshading tests/test_translation.py::TestHEScore2019Updates::test_skylight_solar_screens_treatments tests/test_translation.py::TestHEScore2019Updates::test_tankless tests/test_translation.py::TestHEScore2019Updates::test_tankless_energyfactorerror tests/test_translation.py::TestHEScore2019Updates::test_uef_over_ef tests/test_translation.py::TestHEScore2019Updates::test_uef_with_tankless tests/test_translation.py::TestHEScore2019Updates::test_window_code_mappings_aluminum tests/test_translation.py::TestHEScore2019Updates::test_window_solar_screens tests/test_translation.py::TestHEScore2021Updates::test_skylight_assignment tests/test_translation.py::TestHEScoreV3::test_attic_roof_unattached tests/test_translation.py::TestHEScoreV3::test_attic_type tests/test_translation.py::TestHEScoreV3::test_attic_with_multiple_frame_floors tests/test_translation.py::TestHEScoreV3::test_attic_with_multiple_roofs tests/test_translation.py::TestHEScoreV3::test_hescore_min_translation tests/test_translation.py::TestHEScoreV3::test_house1_translation tests/test_translation.py::TestHEScoreV3::test_house2_translation tests/test_translation.py::TestHEScoreV3::test_house3_translation tests/test_translation.py::TestHEScoreV3::test_house4_translation tests/test_translation.py::TestHEScoreV3::test_house5_translation tests/test_translation.py::TestHEScoreV3::test_house6_translation tests/test_translation.py::TestHEScoreV3::test_house7_translation tests/test_translation.py::TestHEScoreV3::test_house8_translation tests/test_translation.py::TestHEScoreV3::test_mini_split_cooling_only tests/test_translation.py::TestHEScoreV3::test_townhouse_walls_translation tests/test_translation.py::TestHEScoreV3::test_v3_duct_insulation tests/test_translation.py::TestHEScoreV3::test_v3_duct_location