diff --git a/src/memberdb/actions.py b/src/memberdb/actions.py
index 82b9b8b336cb9419702d53cd3c5b649d93cde89b..bb9a584c6286cfa3acc2dd6974734506137e5dbe 100644
--- a/src/memberdb/actions.py
+++ b/src/memberdb/actions.py
@@ -129,14 +129,14 @@ def refresh_dispense_payment(modeladmin, request, queryset):
     num_changed = 0
     membership_list = list(queryset)
     for ms in membership_list:
-        if ms.date_paid is not None:
+        if ms.date_paid is not None or ms.username == '' or ms.username is None:
             continue
         if try_update_from_dispense(ms):
             ms.save()
             num_changed += 1
     
     if num_changed > 0:
-        messages.success(request, "Updated %d records" % num_changed)
+        messages.success(request, "Updated %d records of %d total" % (num_changed, len(membership_list)))
     else:
         messages.warning(request, "No records updated")
 
diff --git a/src/memberdb/admin.py b/src/memberdb/admin.py
index ab359115c08b92e25de120b0fdd71d89608137be..5b2910531c8dbe8a8d9b87598d52c65887d13ce8 100644
--- a/src/memberdb/admin.py
+++ b/src/memberdb/admin.py
@@ -110,9 +110,9 @@ class MembershipAdmin(admin.ModelAdmin):
 	"""
 	Define the admin page for viewing normal Member records (all details included) and approving them
 	"""
-	list_display = ['membership_info', 'membership_type', 'payment_method', 'approved', 'date_submitted', 'member_actions', ]
+	list_display = ['membership_info', 'membership_type', 'payment_method', 'approved', 'date_submitted', 'member_actions']
 	list_display_links = None
-	list_filter = ['approved']
+	list_filter = ['approved', 'payment_method', 'membership_type', 'member__is_student', 'member__is_guild']
 	readonly_fields = ['date_submitted']
 	radio_fields = {'payment_method': admin.VERTICAL, 'membership_type': admin.VERTICAL}
 	actions = [refresh_dispense_payment]
diff --git a/src/squarepay/cokelog.py b/src/squarepay/cokelog.py
index e25acf45186e3d5fd3c6ae0c5c567c1324fc11fc..01748af33377b781352d233be6a804a6a1b3649f 100644
--- a/src/squarepay/cokelog.py
+++ b/src/squarepay/cokelog.py
@@ -75,7 +75,7 @@ class CokeLog:
         self.last_offset = self.file.tell()
     
     def get_last_dispense(self, username, item_code=None, dispense_by=None):
-        if self.dispenses is None:
+        if self.dispenses is None or not username in self.dispenses:
             return None
 
         for r in reversed(self.dispenses[username]):
@@ -105,7 +105,6 @@ def try_update_from_dispense(membership):
     ms_disp = member_cokelog.get_last_dispense(
         membership.member.username,
         membership.get_dispense_item(),
-        None,
     )
 
     if ms_disp is not None: