diff --git a/src/pages/settings/Rules/Fields/AddCategoryPage.tsx b/src/pages/settings/Rules/Fields/AddCategoryPage.tsx
index 47e2cd93fe45..a02c1e55b9f7 100644
--- a/src/pages/settings/Rules/Fields/AddCategoryPage.tsx
+++ b/src/pages/settings/Rules/Fields/AddCategoryPage.tsx
@@ -12,6 +12,7 @@ import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
 import type {PolicyCategories} from '@src/types/onyx';
 import {getEmptyObject} from '@src/types/utils/EmptyObject';
+import CONST from '@src/CONST';
 
 type AddCategoryPageProps = PlatformStackScreenProps<SettingsNavigatorParamList, typeof SCREENS.SETTINGS.RULES.EDIT_CATEGORY>;
 
@@ -34,6 +35,9 @@ function AddCategoryPage({route}: AddCategoryPageProps) {
 
         const categories = Object.values(allPolicyCategories ?? {}).flatMap((policyCategories) => Object.values(policyCategories ?? {}));
         for (const category of categories) {
+            if (!category.enabled || category.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) {
+                continue;
+            }
             uniqueCategoryNames.add(category.name);
         }
 
diff --git a/src/pages/settings/Rules/RulePageBase.tsx b/src/pages/settings/Rules/RulePageBase.tsx
index 41cbc3b16f07..d3b800c5d402 100644
--- a/src/pages/settings/Rules/RulePageBase.tsx
+++ b/src/pages/settings/Rules/RulePageBase.tsx
@@ -29,6 +29,7 @@ import ROUTES from '@src/ROUTES';
 import type {ExpenseRuleForm} from '@src/types/form';
 import type {ExpenseRule, PolicyCategories, PolicyTagLists} from '@src/types/onyx';
 import getEmptyArray from '@src/types/utils/getEmptyArray';
+import {hasEnabledOptions} from '@libs/OptionsListUtils';
 
 type RulePageBaseProps = {
     titleKey: TranslationPaths;
@@ -101,7 +102,11 @@ function RulePageBase({titleKey, testID, hash}: RulePageBaseProps) {
     const categoriesSelector = useCallback(
         (allPolicyCategories: OnyxCollection<PolicyCategories>) => {
             const categories = getAvailableNonPersonalPolicyCategories(allPolicyCategories, personalPolicyID);
-            return Object.values(categories ?? {}).flatMap((policyCategories) => Object.values(policyCategories ?? {})).length > 0;
+            return (
+                Object.values(categories ?? {})
+                    .filter((policyCategories) => hasEnabledOptions(policyCategories ?? {}))
+                    .flatMap((policyCategories) => Object.values(policyCategories ?? {})).length > 0
+            );
         },
         [personalPolicyID],
     );
@@ -165,7 +170,7 @@ function RulePageBase({titleKey, testID, hash}: RulePageBaseProps) {
                     title: form?.merchant,
                     onPress: () => navigateTo(CONST.EXPENSE_RULES.FIELDS.RENAME_MERCHANT, hash),
                 },
-                hasPolicyCategories
+                form?.category || hasPolicyCategories
                     ? {
                           key: 'category',
                           description: translate('common.category'),
diff --git a/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx b/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx
index 8099340ea8f1..ac5802d03af4 100644
--- a/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx
+++ b/src/pages/workspace/rules/MerchantRules/AddCategoryPage.tsx
@@ -9,6 +9,7 @@ import type {SettingsNavigatorParamList} from '@libs/Navigation/types';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
+import CONST from '@src/CONST';
 
 type AddCategoryPageProps = PlatformStackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.RULES_MERCHANT_CATEGORY>;
 
@@ -23,7 +24,7 @@ function AddCategoryPage({route}: AddCategoryPageProps) {
 
     const categoryItems = useMemo(() => {
         return Object.values(policyCategories ?? {})
-            .filter((category) => category.enabled)
+            .filter((category) => category.enabled && category.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE)
             .map((category) => {
                 const decodedCategoryName = getDecodedCategoryName(category.name);
                 return {name: decodedCategoryName, value: category.name};
diff --git a/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx b/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx
index cf620584e013..e458a7116478 100644
--- a/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx
+++ b/src/pages/workspace/rules/MerchantRules/MerchantRulePageBase.tsx
@@ -34,6 +34,7 @@ import type {MerchantRuleForm} from '@src/types/form';
 import type {PolicyTagLists} from '@src/types/onyx';
 import type {CodingRule} from '@src/types/onyx/Policy';
 import getEmptyArray from '@src/types/utils/getEmptyArray';
+import {hasEnabledOptions} from '@libs/OptionsListUtils';
 
 type MerchantRulePageBaseProps = {
     policyID: string;
@@ -136,7 +137,7 @@ function MerchantRulePageBase({policyID, ruleID, titleKey, testID}: MerchantRule
         if (!policy?.areCategoriesEnabled) {
             return false;
         }
-        return Object.keys(policyCategories ?? {}).length > 0;
+        return !!form?.category || hasEnabledOptions(policyCategories ?? {});
     };
 
     const hasTags = () => {
