diff --git a/packages/desktop-client/src/components/ManageRules.js b/packages/desktop-client/src/components/ManageRules.js
index 76ecda8353c3438e0d4928c1d3842692af582da7..62ea2a204c92f568f10708d923ee1a54436401c6 100644
--- a/packages/desktop-client/src/components/ManageRules.js
+++ b/packages/desktop-client/src/components/ManageRules.js
@@ -110,14 +110,16 @@ export function Value({
       } else if (field === 'year') {
         return value ? formatDate(parseISO(value), 'yyyy') : null;
       } else {
-        let name = value;
-        if (data) {
+        if (data && data.length) {
           let item = data.find(item => item.id === value);
           if (item) {
-            name = describe(item);
+            return describe(item);
+          } else {
+            return '(deleted)';
           }
+        } else {
+          return '…';
         }
-        return name;
       }
     }
   }
@@ -508,15 +510,20 @@ function RulesList({
 function mapValue(field, value, { payees, categories, accounts }) {
   if (!value) return '';
 
+  let object = null;
   if (field === 'payee') {
-    return payees.find(p => p.id === value).name;
+    object = payees.find(p => p.id === value);
   } else if (field === 'category') {
-    return categories.find(c => c.id === value).name;
+    object = categories.find(c => c.id === value);
   } else if (field === 'account') {
-    return accounts.find(a => a.id === value).name;
+    object = accounts.find(a => a.id === value);
   } else {
     return value;
   }
+  if (object) {
+    return object.name;
+  }
+  return '(deleted)';
 }
 
 function ruleToString(rule, data) {