diff --git a/app/Actions/MemberPullAction.php b/app/Actions/MemberPullAction.php
index 3916ebfe..ec56c651 100644
--- a/app/Actions/MemberPullAction.php
+++ b/app/Actions/MemberPullAction.php
@@ -11,6 +11,7 @@ use App\Gender;
 use App\Group;
 use App\Initialize\ActivityCreator;
 use App\Member\Member;
+use App\Member\Membership;
 use App\Nationality;
 use App\Region;
 use App\Subactivity;
@@ -91,7 +92,12 @@ class MemberPullAction
 
             try {
                 foreach ($this->api->membershipsOf($this->member->id) as $membership) {
-                    if (null !== $membership->endsAt) {
+                    $existingMembership = Membership::where('nami_id', $membership->id)->first();
+                    if (null !== $membership->endsAt && !$existingMembership) {
+                        continue;
+                    }
+                    if (null !== $membership->endsAt && $existingMembership) {
+                        $existingMembership->delete();
                         continue;
                     }
                     try {
diff --git a/database/factories/Member/MembershipFactory.php b/database/factories/Member/MembershipFactory.php
index e536c5c2..398a393d 100644
--- a/database/factories/Member/MembershipFactory.php
+++ b/database/factories/Member/MembershipFactory.php
@@ -25,4 +25,9 @@ class MembershipFactory extends Factory
             'from' => now()->subMonths(3),
         ];
     }
+
+    public function inNami(int $namiId): self
+    {
+        return $this->state(['nami_id' => $namiId]);
+    }
 }
diff --git a/tests/Feature/Member/MemberPullActionTest.php b/tests/Feature/Member/MemberPullActionTest.php
new file mode 100644
index 00000000..888fa876
--- /dev/null
+++ b/tests/Feature/Member/MemberPullActionTest.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace Tests\Feature\Member;
+
+use App\Actions\MemberPullAction;
+use App\Activity;
+use App\Member\Member;
+use App\Member\Membership;
+use App\Setting\NamiSettings;
+use Illuminate\Foundation\Testing\DatabaseTransactions;
+use Tests\TestCase;
+use Zoomyboy\LaravelNami\Fakes\CourseFake;
+use Zoomyboy\LaravelNami\Fakes\MemberFake;
+use Zoomyboy\LaravelNami\Fakes\MembershipFake;
+
+class MemberPullActionTest extends TestCase
+{
+    use DatabaseTransactions;
+
+    public function testItUpdatesMemberships(): void
+    {
+        $member = Member::factory()
+            ->defaults()
+            ->has(Membership::factory()->inNami(60)->for(Activity::factory()))
+            ->inNami(123)
+            ->create();
+        app(MemberFake::class)->shows(55, 123, [
+            'vorname' => '::firstname::',
+            'nachname' => '::lastname::',
+            'beitragsartId' => 300,
+            'geburtsDatum' => '2014-07-11 00:00:00',
+            'gruppierungId' => 1000,
+            'id' => 123,
+            'eintrittsdatum' => '2020-11-17 00:00:00',
+            'geschlechtId' => 303,
+            'landId' => 302,
+            'staatsangehoerigkeitId' => $member->nationality->nami_id,
+            'zeitschriftenversand' => true,
+            'strasse' => '::street',
+            'plz' => '12346',
+            'ort' => '::location::',
+            'gruppierung' => 'testgroup',
+            'version' => 40,
+        ]);
+        app(MembershipFake::class)
+            ->fetches(123, [['id' => 60]])
+            ->shows(123, [
+                    'id' => 60,
+                    'untergliederungId' => 2,
+                    'taetigkeitId' => 1,
+                    'gruppierungId' => 1400,
+                    'aktivVon' => '2022-02-03T00:00:00',
+                    'aktivBis' => '2022-02-03T00:00:01',
+            ]);
+        app(CourseFake::class)->fetches(123, []);
+        $this->withoutExceptionHandling()->login()->loginNami();
+
+        app(MemberPullAction::class)
+            ->api(app(NamiSettings::class)->login())
+            ->member(55, $member->nami_id)
+            ->execute();
+
+        $this->assertDatabaseMissing('memberships', [
+            'member_id' => $member->id,
+        ]);
+    }
+}