diff --git a/homeassistant/components/google_travel_time/config_flow.py b/homeassistant/components/google_travel_time/config_flow.py
index d8ba7643bc93a15076c1cecb21727450678cf8a0..0b493d7eeeb9a97733e2af109a73c55ae69907b5 100644
--- a/homeassistant/components/google_travel_time/config_flow.py
+++ b/homeassistant/components/google_travel_time/config_flow.py
@@ -180,6 +180,28 @@ class GoogleOptionsFlow(OptionsFlow):
         )
 
 
+async def validate_input(
+    hass: HomeAssistant, user_input: dict[str, Any]
+) -> dict[str, str] | None:
+    """Validate the user input allows us to connect."""
+    try:
+        await hass.async_add_executor_job(
+            validate_config_entry,
+            hass,
+            user_input[CONF_API_KEY],
+            user_input[CONF_ORIGIN],
+            user_input[CONF_DESTINATION],
+        )
+    except InvalidApiKeyException:
+        return {"base": "invalid_auth"}
+    except TimeoutError:
+        return {"base": "timeout_connect"}
+    except UnknownException:
+        return {"base": "cannot_connect"}
+
+    return None
+
+
 class GoogleTravelTimeConfigFlow(ConfigFlow, domain=DOMAIN):
     """Handle a config flow for Google Maps Travel Time."""
 
@@ -195,24 +217,11 @@ class GoogleTravelTimeConfigFlow(ConfigFlow, domain=DOMAIN):
 
     async def async_step_user(self, user_input=None) -> ConfigFlowResult:
         """Handle the initial step."""
-        errors = {}
+        errors: dict[str, str] | None = None
         user_input = user_input or {}
         if user_input:
-            try:
-                await self.hass.async_add_executor_job(
-                    validate_config_entry,
-                    self.hass,
-                    user_input[CONF_API_KEY],
-                    user_input[CONF_ORIGIN],
-                    user_input[CONF_DESTINATION],
-                )
-            except InvalidApiKeyException:
-                errors["base"] = "invalid_auth"
-            except TimeoutError:
-                errors["base"] = "timeout_connect"
-            except UnknownException:
-                errors["base"] = "cannot_connect"
-            else:
+            errors = await validate_input(self.hass, user_input)
+            if not errors:
                 return self.async_create_entry(
                     title=user_input.get(CONF_NAME, DEFAULT_NAME),
                     data=user_input,
@@ -233,24 +242,11 @@ class GoogleTravelTimeConfigFlow(ConfigFlow, domain=DOMAIN):
         if TYPE_CHECKING:
             assert entry
 
-        errors = {}
+        errors: dict[str, str] | None = None
         user_input = user_input or {}
         if user_input:
-            try:
-                await self.hass.async_add_executor_job(
-                    validate_config_entry,
-                    self.hass,
-                    user_input[CONF_API_KEY],
-                    user_input[CONF_ORIGIN],
-                    user_input[CONF_DESTINATION],
-                )
-            except InvalidApiKeyException:
-                errors["base"] = "invalid_auth"
-            except TimeoutError:
-                errors["base"] = "timeout_connect"
-            except UnknownException:
-                errors["base"] = "cannot_connect"
-            else:
+            errors = await validate_input(self.hass, user_input)
+            if not errors:
                 return self.async_update_reload_and_abort(
                     entry,
                     data=user_input,
diff --git a/tests/components/google_travel_time/test_config_flow.py b/tests/components/google_travel_time/test_config_flow.py
index e9b383a01204cf09b87d8b83ba560bf3d8b8a7bb..270b82272d81e397dcc9a3b5032f544668539dbb 100644
--- a/tests/components/google_travel_time/test_config_flow.py
+++ b/tests/components/google_travel_time/test_config_flow.py
@@ -88,7 +88,7 @@ async def test_minimum_fields(hass: HomeAssistant) -> None:
         DOMAIN, context={"source": config_entries.SOURCE_USER}
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
 
     await assert_common_create_steps(hass, result)
 
@@ -100,7 +100,7 @@ async def test_invalid_config_entry(hass: HomeAssistant) -> None:
         DOMAIN, context={"source": config_entries.SOURCE_USER}
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         MOCK_CONFIG,
@@ -118,7 +118,7 @@ async def test_invalid_api_key(hass: HomeAssistant) -> None:
         DOMAIN, context={"source": config_entries.SOURCE_USER}
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         MOCK_CONFIG,
@@ -136,7 +136,7 @@ async def test_transport_error(hass: HomeAssistant) -> None:
         DOMAIN, context={"source": config_entries.SOURCE_USER}
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         MOCK_CONFIG,
@@ -154,7 +154,7 @@ async def test_timeout(hass: HomeAssistant) -> None:
         DOMAIN, context={"source": config_entries.SOURCE_USER}
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         MOCK_CONFIG,
@@ -171,7 +171,7 @@ async def test_malformed_api_key(hass: HomeAssistant) -> None:
         DOMAIN, context={"source": config_entries.SOURCE_USER}
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         MOCK_CONFIG,
@@ -234,7 +234,7 @@ async def test_reconfigure_invalid_config_entry(
         },
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         RECONFIGURE_CONFIG,
@@ -269,7 +269,7 @@ async def test_reconfigure_invalid_api_key(hass: HomeAssistant, mock_config) ->
         },
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         RECONFIGURE_CONFIG,
@@ -303,7 +303,7 @@ async def test_reconfigure_transport_error(hass: HomeAssistant, mock_config) ->
         },
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         RECONFIGURE_CONFIG,
@@ -337,7 +337,7 @@ async def test_reconfigure_timeout(hass: HomeAssistant, mock_config) -> None:
         },
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
         RECONFIGURE_CONFIG,
@@ -615,7 +615,7 @@ async def test_dupe(hass: HomeAssistant) -> None:
         DOMAIN, context={"source": config_entries.SOURCE_USER}
     )
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
 
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],
@@ -633,7 +633,7 @@ async def test_dupe(hass: HomeAssistant) -> None:
     )
 
     assert result["type"] is FlowResultType.FORM
-    assert result["errors"] == {}
+    assert result["errors"] is None
 
     result2 = await hass.config_entries.flow.async_configure(
         result["flow_id"],