diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py
index 4141da795d7bbdcd60308664004a6436450bd3d2..4e6e82369f0cc12b872a570955a7f8b6ab5af734 100644
--- a/api/funkwhale_api/federation/activity.py
+++ b/api/funkwhale_api/federation/activity.py
@@ -388,7 +388,7 @@ def recursive_getattr(obj, key, permissive=False):
 
 def match_route(route, payload):
     for key, value in route.items():
-        payload_value = recursive_getattr(payload, key)
+        payload_value = recursive_getattr(payload, key, permissive=True)
         if payload_value != value:
             return False
 
diff --git a/api/tests/federation/test_activity.py b/api/tests/federation/test_activity.py
index e195a758721a3e42e5fb5b9418f2217a6ecebf56..c69ac5d74aa390e8891cc0c5ed1a7d067c51bc24 100644
--- a/api/tests/federation/test_activity.py
+++ b/api/tests/federation/test_activity.py
@@ -91,6 +91,11 @@ def test_receive_skips_if_no_matching_route(factories, now, mocker):
     assert models.Activity.objects.count() == 0
 
 
+def test_match_route_ignore_payload_issues():
+    payload = {"object": "http://hello"}
+    assert activity.match_route({"object.type": "Test"}, payload) is False
+
+
 @pytest.mark.parametrize(
     "params, policy_kwargs, expected",
     [