Index: src/services/ActivityPubService.js
===================================================================
--- src/services/ActivityPubService.js	(revision 06bae1e8e638673eeb003f2120df40c66abe7a71)
+++ src/services/ActivityPubService.js	(revision 0517013038bcf7b689ccf402c3124ab70115a3ac)
@@ -2523,6 +2523,13 @@
     // rij die nog op pending staat wordt geraakt, dus dit kan niets anders
     // openzetten dan een follow die wij zelf hebben verstuurd.
-    if (!raak && slugParam && actorUri) {
-      try { raak = fwStmts().accByActor.run(slugParam, actorUri).changes; } catch { /* ignore */ }
+    //
+    // En de slug mag NIET van slugParam afhangen: Funkwhale bezorgt op de
+    // GEDEELDE inbox, en dan is die leeg. Wie wij zijn staat in de ingesloten
+    // Follow -- die hebben wij immers zelf verstuurd, dus `object.actor` is
+    // onze eigen actor-URI.
+    let mij = slugParam;
+    if (!mij && act.object && typeof act.object === 'object') mij = slugFromActorUrl(act.object.actor);
+    if (!raak && mij && actorUri) {
+      try { raak = fwStmts().accByActor.run(mij, actorUri).changes; } catch { /* ignore */ }
     }
     // Eerlijk loggen: zonder treffer is er niets geaccepteerd, en dat hoort te
Index: test/follow-accept-match.test.js
===================================================================
--- test/follow-accept-match.test.js	(revision 06bae1e8e638673eeb003f2120df40c66abe7a71)
+++ test/follow-accept-match.test.js	(revision 0517013038bcf7b689ccf402c3124ab70115a3ac)
@@ -64,4 +64,31 @@
 });
 
+test('bezorgd op de GEDEELDE inbox: de slug komt uit de ingesloten Follow', async () => {
+  // Funkwhale levert af op /ap/inbox, niet op /ap/users/<slug>/inbox. Dan is
+  // slugParam null en moeten we uit `object.actor` afleiden wie wij zijn --
+  // die Follow hebben wij immers zelf verstuurd.
+  zetPending();
+  await AP.handleInbox({
+    body: {
+      type: 'Accept', actor: REMOTE,
+      object: {
+        id: 'https://test.example/ap/users/dev#follows/389cf422-7e38-4bad-858e-35def4c3e2e9',
+        type: 'Follow', actor: 'https://test.example/ap/users/dev', object: REMOTE,
+      },
+    },
+    headers: {}, get: () => undefined, socket: {},
+  }, null, { id: REMOTE });
+  assert.equal(status(), 'accepted');
+});
+
+test('op de gedeelde inbox zonder bruikbare Follow blijft het pending', async () => {
+  zetPending();
+  await AP.handleInbox({
+    body: { type: 'Accept', actor: REMOTE, object: { id: 'https://elders.example/x', type: 'Follow' } },
+    headers: {}, get: () => undefined, socket: {},
+  }, null, { id: REMOTE });
+  assert.equal(status(), 'pending', 'zonder te weten wie wij zijn, raden we niet');
+});
+
 test('een Accept van een ANDERE actor raakt onze rij niet', async () => {
   zetPending();
