diff --git a/app/Member/Actions/NamiPutMemberAction.php b/app/Member/Actions/NamiPutMemberAction.php
index d0be6154..2c843cb8 100644
--- a/app/Member/Actions/NamiPutMemberAction.php
+++ b/app/Member/Actions/NamiPutMemberAction.php
@@ -48,7 +48,16 @@ class NamiPutMemberAction
             'id' => $member->nami_id,
             'version' => $member->version,
             'keepdata' => $member->keepdata,
-            'bankAccount' => BankAccount::from([]),
+            'bankAccount' => BankAccount::from([
+                'bankName' => $member->bankAccount->bank_name,
+                'id' => $member->bankAccount->nami_id,
+                'memberId' => $member->mitgliedsnr,
+                'iban' => $member->bankAccount->iban,
+                'bic' => $member->bankAccount->bic,
+                'blz' => $member->bankAccount->blz,
+                'person' => $member->bankAccount->person,
+                'accountNumber' => $member->bankAccount->account_number,
+            ]),
         ]);
         $response = $api->putMember($namiMember, $activity ? $activity->nami_id : null, $subactivity ? $subactivity->nami_id : null);
         Member::withoutEvents(function () use ($response, $member) {
diff --git a/database/factories/Member/BankAccountFactory.php b/database/factories/Member/BankAccountFactory.php
index a9dc6ae7..da46829a 100644
--- a/database/factories/Member/BankAccountFactory.php
+++ b/database/factories/Member/BankAccountFactory.php
@@ -27,7 +27,17 @@ class BankAccountFactory extends Factory
     public function definition(): array
     {
         return [
-            //
+            'bank_name' => $this->faker->name(),
+            'bic' => $this->faker->swiftBicNumber(),
+            'iban' => $this->faker->iban('DE'),
+            'blz' => $this->faker->name(),
+            'person' => $this->faker->name(),
+            'account_number' => $this->faker->name(),
         ];
     }
+
+    public function inNami(int $namiId): self
+    {
+        return $this->state(['nami_id' => $namiId]);
+    }
 }
diff --git a/database/factories/Member/MemberFactory.php b/database/factories/Member/MemberFactory.php
index a5d06419..4b7054c7 100644
--- a/database/factories/Member/MemberFactory.php
+++ b/database/factories/Member/MemberFactory.php
@@ -93,6 +93,13 @@ class MemberFactory extends Factory
         return $this->state(['nami_id' => $namiId]);
     }
 
+    public function withBankAccount(BankAccountFactory $factory): self
+    {
+        return $this->afterCreating(function ($member) use ($factory) {
+            $member->bankAccount->update($factory->make()->toArray());
+        });
+    }
+
     public function sameFamilyAs(Member $member): self
     {
         return $this->state([
diff --git a/tests/Feature/Member/NamiPutMemberActionTest.php b/tests/Feature/Member/NamiPutMemberActionTest.php
index bd1d642b..ebb80aa3 100644
--- a/tests/Feature/Member/NamiPutMemberActionTest.php
+++ b/tests/Feature/Member/NamiPutMemberActionTest.php
@@ -7,11 +7,11 @@ use App\Actions\PullMembershipsAction;
 use App\Activity;
 use App\Confession;
 use App\Country;
-use App\Fee;
+use App\Gender;
 use App\Group;
 use App\Member\Actions\NamiPutMemberAction;
+use App\Member\BankAccount;
 use App\Member\Member;
-use App\Nationality;
 use App\Payment\Subscription;
 use App\Region;
 use App\Subactivity;
@@ -20,52 +20,130 @@ use Phake;
 use Zoomyboy\LaravelNami\Fakes\MemberFake;
 
 uses(DatabaseTransactions::class);
+covers(NamiPutMemberAction::class);
 
-it('testItPutsAMember', function (array $memberAttributes, array $storedAttributes) {
-    Fee::factory()->create();
+beforeEach(function () {
     $this->stubIo(PullMemberAction::class, fn ($mock) => $mock);
     $this->stubIo(PullMembershipsAction::class, fn ($mock) => $mock);
+    Group::factory()->inNami(55)->create();
     $this->withoutExceptionHandling()->login()->loginNami();
-    $country = Country::factory()->create();
-    $region = Region::factory()->create();
-    $nationality = Nationality::factory()->inNami(565)->create();
-    $subscription = Subscription::factory()->forFee()->create();
-    $group = Group::factory()->inNami(55)->create();
-    $confession = Confession::factory()->inNami(567)->create(['is_null' => true]);
     app(MemberFake::class)->stores(55, 993);
-    $activity = Activity::factory()->hasAttached(Subactivity::factory()->name('Biber')->inNami(55))->name('Leiter')->inNami(6)->create();
-    $subactivity = $activity->subactivities->first();
+    Confession::factory()->inNami(567)->create(['is_null' => true]);
+    $activity = Activity::factory()->inNami(6)->create();
+    Subactivity::factory()->hasAttached($activity)->inNami(55)->create();
+});
 
-    $member = Member::factory()
-        ->for($country)
-        ->for($subscription)
-        ->for($region)
-        ->for($nationality)
-        ->for($group)
-        ->emailBillKind()
-        ->create($memberAttributes);
+it('pulls member and memberships befre pushing', function () {
+    $member = Member::factory()->defaults()->create();
 
-    NamiPutMemberAction::run($member, $activity, $subactivity);
+    NamiPutMemberAction::run($member, Activity::first(), Subactivity::first());
 
-    app(MemberFake::class)->assertStored(55, [
-        'ersteTaetigkeitId' => 6,
-        'ersteUntergliederungId' => 55,
-        'konfessionId' => 567,
-        ...$storedAttributes,
-    ]);
-    $this->assertDatabaseHas('members', [
-        'nami_id' => 993,
-    ]);
     Phake::verify(app(PullMemberAction::class))->handle(55, 993);
     Phake::verify(app(PullMembershipsAction::class))->handle($member);
+});
+
+it('sets nami id of member', function () {
+    $member = Member::factory()->defaults()->create();
+
+    NamiPutMemberAction::run($member, Activity::first(), Subactivity::first());
+
+    $this->assertDatabaseHas('members', ['nami_id' => 993]);
+});
+
+it('stores member attributes', function (array $memberAttributes, array $storedAttributes) {
+    $member = Member::factory()->defaults()->create($memberAttributes);
+
+    NamiPutMemberAction::run($member, Activity::first(), Subactivity::first());
+
+    app(MemberFake::class)->assertStored(55, $storedAttributes);
 })->with([
-    [
-        ['email_parents' => 'a@b.de'], ['emailVertretungsberechtigter' => 'a@b.de'],
-    ],
-    [
-        ['keepdata' => true], ['wiederverwendenFlag' => true],
-    ],
-    [
-        ['keepdata' => false], ['wiederverwendenFlag' => false],
-    ],
+    [['firstname' => 'Phi'], ['vorname' => 'Phi']],
+    [['lastname' => 'Phi'], ['nachname' => 'Phi']],
+    [['nickname' => 'Nick'], ['spitzname' => 'Nick']],
+    [['email' => 'a@b.de'], ['email' => 'a@b.de']],
+    [['zip' => '5566'], ['plz' => '5566']],
+    [['location' => 'SG'], ['ort' => 'SG']],
+    [['further_address' => 'SG'], ['nameZusatz' => 'SG']],
+    [['other_country' => 'SG'], ['staatsangehoerigkeitText' => 'SG']],
+    [['address' => 'Add'], ['strasse' => 'Add']],
+    [['main_phone' => '+49 212 5566234'], ['telefon1' => '+49 212 5566234']],
+    [['mobile_phone' => '+49 212 5566234'], ['telefon2' => '+49 212 5566234']],
+    [['work_phone' => '+49 212 5566234'], ['telefon3' => '+49 212 5566234']],
+    [['email_parents' => 'a@b.de'], ['emailVertretungsberechtigter' => 'a@b.de']],
+    [['keepdata' => true], ['wiederverwendenFlag' => true]],
+    [['keepdata' => false], ['wiederverwendenFlag' => false]],
+    fn () => [['joined_at' => now()], ['eintrittsdatum' => now()->format('Y-m-d') . ' 00:00:00']],
+    [['fax' => '555'], ['telefax' => '555']],
+    [[], ['konfessionId' => 567]],
+    [[], ['ersteTaetigkeitId' => 6]],
+    [[], ['ersteUntergliederungId' => 55]],
 ]);
+
+it('stores related models', function () {
+    Subscription::factory()->forFee(3)->create();
+    $member = Member::factory()->defaults()
+        ->for(Country::factory()->inNami(1)->create())
+        ->for(Region::factory()->inNami(2)->create())
+        ->for(Gender::factory()->inNami(4)->create())
+        ->create();
+
+    NamiPutMemberAction::run($member, Activity::first(), Subactivity::first());
+
+    app(MemberFake::class)->assertStored(55, ['regionId' => 2, 'landId' => 1, 'beitragsartId' => 3, 'geschlechtId' => 4]);
+});
+
+it('stores bank account with empty values', function () {
+    $member = Member::factory()->defaults()->create(['mitgliedsnr' => 56]);
+
+    NamiPutMemberAction::run($member, Activity::first(), Subactivity::first());
+
+    app(MemberFake::class)->assertStored(55, ['kontoverbindung' => json_encode([
+        'id' => '',
+        'zahlungsKonditionId' => null,
+        'mitgliedsNummer' => 56,
+        'institut' => '',
+        'kontoinhaber' => '',
+        'kontonummer' => '',
+        'bankleitzahl' => '',
+        'iban' => '',
+        'bic' => ''
+    ])]);
+});
+
+it('updates existing member', function () {
+    app(MemberFake::class)->updatesSuccessfully(55, 103)->shows(55, 103);
+    $member = Member::factory()->defaults()->inNami(103)->create(['version' => 50]);
+
+    NamiPutMemberAction::run($member, Activity::first(), Subactivity::first());
+
+    app(MemberFake::class)->assertUpdated(55, 103, ['id' => 103, 'version' => 50]);
+});
+
+it('updates bank account with filled values', function () {
+    app(MemberFake::class)->updatesSuccessfully(55, 103)->shows(55, 103);
+    $member = Member::factory()->defaults()
+        ->withBankAccount(BankAccount::factory()->inNami(30)->state([
+            'bank_name' => 'Stadt',
+            'bic' => 'SOLSDE33',
+            'iban' => 'DE50',
+            'blz' => 'ssss',
+            'person' => 'Pill',
+            'account_number' => 'ddf',
+        ]))
+        ->inNami(103)
+        ->create(['mitgliedsnr' => 56]);
+
+    NamiPutMemberAction::run($member, Activity::first(), Subactivity::first());
+
+    app(MemberFake::class)->assertUpdated(55, 103, ['kontoverbindung' => json_encode([
+        'id' => 30,
+        'zahlungsKonditionId' => null,
+        'mitgliedsNummer' => 56,
+        'institut' => 'Stadt',
+        'kontoinhaber' => 'Pill',
+        'kontonummer' => 'ddf',
+        'bankleitzahl' => 'ssss',
+        'iban' => 'DE50',
+        'bic' => 'SOLSDE33'
+    ])]);
+});