diff --git a/src/CONST.ts b/src/CONST.ts
index c28914541113..ffc325f0cda3 100755
--- a/src/CONST.ts
+++ b/src/CONST.ts
@@ -4564,6 +4564,12 @@ const CONST = {
         ALL: 'all',
         SUBMITTER: 'submitter',
     },
+    DELEGATE: {
+        DENIED_ACCESS_VARIANTS: {
+            DELEGATE: 'delegate',
+            SUBMITTER: 'submitter',
+        },
+    },
     DELEGATE_ROLE_HELPDOT_ARTICLE_LINK: 'https://help.expensify.com/expensify-classic/hubs/copilots-and-delegates/',
     STRIPE_GBP_AUTH_STATUSES: {
         SUCCEEDED: 'succeeded',
diff --git a/src/components/DelegateNoAccessModal.tsx b/src/components/DelegateNoAccessModal.tsx
index 442c3ec9c4e2..088e94041e49 100644
--- a/src/components/DelegateNoAccessModal.tsx
+++ b/src/components/DelegateNoAccessModal.tsx
@@ -1,4 +1,5 @@
 import React from 'react';
+import useDelegateUserDetails from '@hooks/useDelegateUserDetails';
 import useLocalize from '@hooks/useLocalize';
 import CONST from '@src/CONST';
 import ConfirmModal from './ConfirmModal';
@@ -8,18 +9,19 @@ import TextLink from './TextLink';
 type DelegateNoAccessModalProps = {
     isNoDelegateAccessMenuVisible: boolean;
     onClose: () => void;
-    delegatorEmail: string;
 };
 
-export default function DelegateNoAccessModal({isNoDelegateAccessMenuVisible = false, onClose, delegatorEmail = ''}: DelegateNoAccessModalProps) {
+export default function DelegateNoAccessModal({isNoDelegateAccessMenuVisible = false, onClose}: DelegateNoAccessModalProps) {
     const {translate} = useLocalize();
-    const noDelegateAccessPromptStart = translate('delegate.notAllowedMessageStart', {accountOwnerEmail: delegatorEmail});
+    const {delegatorEmail} = useDelegateUserDetails();
+    const noDelegateAccessPromptStart = translate('delegate.notAllowedMessageStart');
     const noDelegateAccessHyperLinked = translate('delegate.notAllowedMessageHyperLinked');
-
+    const noDelegateAccessPromptEnd = translate('delegate.notAllowedMessageEnd', {accountOwnerEmail: delegatorEmail ?? ''});
     const delegateNoAccessPrompt = (
         <Text>
             {noDelegateAccessPromptStart}
-            <TextLink href={CONST.DELEGATE_ROLE_HELPDOT_ARTICLE_LINK}>{noDelegateAccessHyperLinked}</TextLink>.
+            <TextLink href={CONST.DELEGATE_ROLE_HELPDOT_ARTICLE_LINK}>{noDelegateAccessHyperLinked}</TextLink>
+            {noDelegateAccessPromptEnd}
         </Text>
     );
 
diff --git a/src/components/DelegateNoAccessWrapper.tsx b/src/components/DelegateNoAccessWrapper.tsx
new file mode 100644
index 000000000000..c49d15890112
--- /dev/null
+++ b/src/components/DelegateNoAccessWrapper.tsx
@@ -0,0 +1,67 @@
+import React from 'react';
+import {useOnyx} from 'react-native-onyx';
+import type {OnyxEntry} from 'react-native-onyx';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
+import AccountUtils from '@libs/AccountUtils';
+import Navigation from '@libs/Navigation/Navigation';
+import CONST from '@src/CONST';
+import ONYXKEYS from '@src/ONYXKEYS';
+import type {Account} from '@src/types/onyx';
+import callOrReturn from '@src/types/utils/callOrReturn';
+import FullPageNotFoundView from './BlockingViews/FullPageNotFoundView';
+
+const DENIED_ACCESS_VARIANTS = {
+    // To Restrict All Delegates From Accessing The Page.
+    [CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]: (account: OnyxEntry<Account>) => isDelegate(account),
+    // To Restrict Only Limited Access Delegates From Accessing The Page.
+    [CONST.DELEGATE.DENIED_ACCESS_VARIANTS.SUBMITTER]: (account: OnyxEntry<Account>) => isSubmitter(account),
+} as const satisfies Record<string, (account: OnyxEntry<Account>) => boolean>;
+
+type AccessDeniedVariants = keyof typeof DENIED_ACCESS_VARIANTS;
+
+type DelegateNoAccessWrapperProps = {
+    accessDeniedVariants?: AccessDeniedVariants[];
+    shouldForceFullScreen?: boolean;
+    children?: (() => React.ReactNode) | React.ReactNode;
+};
+
+function isDelegate(account: OnyxEntry<Account>) {
+    const isActingAsDelegate = !!account?.delegatedAccess?.delegate;
+    return isActingAsDelegate;
+}
+
+function isSubmitter(account: OnyxEntry<Account>) {
+    const isDelegateOnlySubmitter = AccountUtils.isDelegateOnlySubmitter(account);
+    return isDelegateOnlySubmitter;
+}
+
+function DelegateNoAccessWrapper({accessDeniedVariants = [], shouldForceFullScreen, ...props}: DelegateNoAccessWrapperProps) {
+    const [account] = useOnyx(ONYXKEYS.ACCOUNT);
+    const isPageAccessDenied = accessDeniedVariants.reduce((acc, variant) => {
+        const accessDeniedFunction = DENIED_ACCESS_VARIANTS[variant];
+        return acc || accessDeniedFunction(account);
+    }, false);
+    const {shouldUseNarrowLayout} = useResponsiveLayout();
+
+    if (isPageAccessDenied) {
+        return (
+            <FullPageNotFoundView
+                shouldShow
+                shouldForceFullScreen={shouldForceFullScreen}
+                onBackButtonPress={() => {
+                    if (shouldUseNarrowLayout) {
+                        Navigation.dismissModal();
+                        return;
+                    }
+                    Navigation.goBack();
+                }}
+                titleKey="delegate.notAllowed"
+                subtitleKey="delegate.noAccessMessage"
+                shouldShowLink={false}
+            />
+        );
+    }
+    return callOrReturn(props.children);
+}
+
+export default DelegateNoAccessWrapper;
diff --git a/src/components/MoneyReportHeader.tsx b/src/components/MoneyReportHeader.tsx
index 008c1353cd68..512ccb427de5 100644
--- a/src/components/MoneyReportHeader.tsx
+++ b/src/components/MoneyReportHeader.tsx
@@ -174,7 +174,7 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
     const isAnyTransactionOnHold = ReportUtils.hasHeldExpenses(moneyRequestReport?.reportID);
     const displayedAmount = isAnyTransactionOnHold && canAllowSettlement && hasValidNonHeldAmount ? nonHeldAmount : formattedAmount;
     const isMoreContentShown = shouldShowNextStep || shouldShowStatusBar || (shouldShowAnyButton && shouldUseNarrowLayout);
-    const {isDelegateAccessRestricted, delegatorEmail} = useDelegateUserDetails();
+    const {isDelegateAccessRestricted} = useDelegateUserDetails();
     const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
     const isReportInRHP = route.name === SCREENS.SEARCH.REPORT_RHP;
@@ -494,7 +494,6 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
             <DelegateNoAccessModal
                 isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
                 onClose={() => setIsNoDelegateAccessMenuVisible(false)}
-                delegatorEmail={delegatorEmail ?? ''}
             />
 
             <ConfirmModal
diff --git a/src/components/ReportActionItem/ReportPreview.tsx b/src/components/ReportActionItem/ReportPreview.tsx
index 19ab01a27c57..41acbf5b4f90 100644
--- a/src/components/ReportActionItem/ReportPreview.tsx
+++ b/src/components/ReportActionItem/ReportPreview.tsx
@@ -204,7 +204,7 @@ function ReportPreview({
         [chatReport?.isOwnPolicyExpenseChat, policy?.harvesting?.enabled],
     );
 
-    const {isDelegateAccessRestricted, delegatorEmail} = useDelegateUserDetails();
+    const {isDelegateAccessRestricted} = useDelegateUserDetails();
     const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
     const stopAnimation = useCallback(() => setIsPaidAnimationRunning(false), []);
@@ -590,7 +590,6 @@ function ReportPreview({
             <DelegateNoAccessModal
                 isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
                 onClose={() => setIsNoDelegateAccessMenuVisible(false)}
-                delegatorEmail={delegatorEmail ?? ''}
             />
 
             {isHoldMenuVisible && !!iouReport && requestType !== undefined && (
diff --git a/src/languages/en.ts b/src/languages/en.ts
index d79695ed8b48..edbd72d281d9 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -5341,8 +5341,10 @@ const translations = {
         enterMagicCode: ({contactMethod}: EnterMagicCodeParams) => `Please enter the magic code sent to ${contactMethod} to add a copilot. It should arrive within a minute or two.`,
         enterMagicCodeUpdate: ({contactMethod}: EnterMagicCodeParams) => `Please enter the magic code sent to ${contactMethod} to update your copilot.`,
         notAllowed: 'Not so fast...',
-        notAllowedMessageStart: ({accountOwnerEmail}: AccountOwnerParams) => `You don't have permission to take this action for ${accountOwnerEmail} as a`,
+        noAccessMessage: "As a copilot, you don't have access to \nthis page. Sorry!",
+        notAllowedMessageStart: `As a`,
         notAllowedMessageHyperLinked: ' copilot',
+        notAllowedMessageEnd: ({accountOwnerEmail}: AccountOwnerParams) => ` for ${accountOwnerEmail}, you don't have permission to take this action. Sorry!`,
     },
     debug: {
         debug: 'Debug',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 5ce47db18d35..e0be669fa767 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -5861,8 +5861,10 @@ const translations = {
         enterMagicCodeUpdate: ({contactMethod}: EnterMagicCodeParams) =>
             `Por favor, introduce el código mágico enviado a ${contactMethod} para actualizar el nivel de acceso de tu copiloto.`,
         notAllowed: 'No tan rápido...',
-        notAllowedMessageStart: ({accountOwnerEmail}: AccountOwnerParams) => `No tienes permiso para realizar esta acción para ${accountOwnerEmail}`,
+        noAccessMessage: 'Como copiloto, no tienes acceso a esta página. ¡Lo sentimos!',
+        notAllowedMessageStart: `Como`,
         notAllowedMessageHyperLinked: ' copiloto',
+        notAllowedMessageEnd: ({accountOwnerEmail}: AccountOwnerParams) => ` de ${accountOwnerEmail}, no tienes permiso para realizar esta acción. ¡Lo siento!`,
     },
     debug: {
         debug: 'Depuración',
diff --git a/src/pages/AddPersonalBankAccountPage.tsx b/src/pages/AddPersonalBankAccountPage.tsx
index 7b0a76e59922..d99db40d07ee 100644
--- a/src/pages/AddPersonalBankAccountPage.tsx
+++ b/src/pages/AddPersonalBankAccountPage.tsx
@@ -3,6 +3,7 @@ import {useOnyx} from 'react-native-onyx';
 import AddPlaidBankAccount from '@components/AddPlaidBankAccount';
 import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView';
 import ConfirmationPage from '@components/ConfirmationPage';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
@@ -13,6 +14,7 @@ import getPlaidOAuthReceivedRedirectURI from '@libs/getPlaidOAuthReceivedRedirec
 import Navigation from '@libs/Navigation/Navigation';
 import * as BankAccounts from '@userActions/BankAccounts';
 import * as PaymentMethods from '@userActions/PaymentMethods';
+import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import SCREENS from '@src/SCREENS';
@@ -77,41 +79,43 @@ function AddPersonalBankAccountPage() {
             testID={AddPersonalBankAccountPage.displayName}
         >
             <FullPageNotFoundView shouldShow={!isUserValidated}>
-                <HeaderWithBackButton
-                    title={translate('bankAccount.addBankAccount')}
-                    onBackButtonPress={exitFlow}
-                />
-                {shouldShowSuccess ? (
-                    <ConfirmationPage
-                        heading={translate('addPersonalBankAccountPage.successTitle')}
-                        description={translate('addPersonalBankAccountPage.successMessage')}
-                        shouldShowButton
-                        buttonText={translate('common.continue')}
-                        onButtonPress={() => exitFlow(true)}
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                    <HeaderWithBackButton
+                        title={translate('bankAccount.addBankAccount')}
+                        onBackButtonPress={exitFlow}
                     />
-                ) : (
-                    <FormProvider
-                        formID={ONYXKEYS.FORMS.PERSONAL_BANK_ACCOUNT_FORM}
-                        isSubmitButtonVisible={(plaidData?.bankAccounts ?? []).length > 0}
-                        submitButtonText={translate('common.saveAndContinue')}
-                        scrollContextEnabled
-                        onSubmit={submitBankAccountForm}
-                        validate={BankAccounts.validatePlaidSelection}
-                        style={[styles.mh5, styles.flex1]}
-                    >
-                        <InputWrapper
-                            inputID={INPUT_IDS.BANK_INFO_STEP.SELECTED_PLAID_ACCOUNT_ID}
-                            InputComponent={AddPlaidBankAccount}
-                            onSelect={setSelectedPlaidAccountId}
-                            text={translate('walletPage.chooseAccountBody')}
-                            plaidData={plaidData}
-                            isDisplayedInWalletFlow
-                            onExitPlaid={goBack}
-                            receivedRedirectURI={getPlaidOAuthReceivedRedirectURI()}
-                            selectedPlaidAccountID={selectedPlaidAccountId}
+                    {shouldShowSuccess ? (
+                        <ConfirmationPage
+                            heading={translate('addPersonalBankAccountPage.successTitle')}
+                            description={translate('addPersonalBankAccountPage.successMessage')}
+                            shouldShowButton
+                            buttonText={translate('common.continue')}
+                            onButtonPress={() => exitFlow(true)}
                         />
-                    </FormProvider>
-                )}
+                    ) : (
+                        <FormProvider
+                            formID={ONYXKEYS.FORMS.PERSONAL_BANK_ACCOUNT_FORM}
+                            isSubmitButtonVisible={(plaidData?.bankAccounts ?? []).length > 0}
+                            submitButtonText={translate('common.saveAndContinue')}
+                            scrollContextEnabled
+                            onSubmit={submitBankAccountForm}
+                            validate={BankAccounts.validatePlaidSelection}
+                            style={[styles.mh5, styles.flex1]}
+                        >
+                            <InputWrapper
+                                inputID={INPUT_IDS.BANK_INFO_STEP.SELECTED_PLAID_ACCOUNT_ID}
+                                InputComponent={AddPlaidBankAccount}
+                                onSelect={setSelectedPlaidAccountId}
+                                text={translate('walletPage.chooseAccountBody')}
+                                plaidData={plaidData}
+                                isDisplayedInWalletFlow
+                                onExitPlaid={goBack}
+                                receivedRedirectURI={getPlaidOAuthReceivedRedirectURI()}
+                                selectedPlaidAccountID={selectedPlaidAccountId}
+                            />
+                        </FormProvider>
+                    )}
+                </DelegateNoAccessWrapper>
             </FullPageNotFoundView>
         </ScreenWrapper>
     );
diff --git a/src/pages/AddressPage.tsx b/src/pages/AddressPage.tsx
index 41661f62b6f4..a0793a958f49 100644
--- a/src/pages/AddressPage.tsx
+++ b/src/pages/AddressPage.tsx
@@ -1,6 +1,7 @@
 import React, {useCallback, useEffect, useState} from 'react';
 import type {OnyxEntry} from 'react-native-onyx';
 import AddressForm from '@components/AddressForm';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FullscreenLoadingIndicator from '@components/FullscreenLoadingIndicator';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
@@ -10,6 +11,7 @@ import Navigation from '@libs/Navigation/Navigation';
 import type {BackToParams} from '@libs/Navigation/types';
 import type {FormOnyxValues} from '@src/components/Form/types';
 import type {Country} from '@src/CONST';
+import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import INPUT_IDS from '@src/types/form/HomeAddressForm';
 import type {Address} from '@src/types/onyx/PrivatePersonalDetails';
@@ -81,27 +83,29 @@ function AddressPage({title, address, updateAddress, isLoadingApp = true, backTo
             includeSafeAreaPaddingBottom
             testID={AddressPage.displayName}
         >
-            <HeaderWithBackButton
-                title={title}
-                shouldShowBackButton
-                onBackButtonPress={() => Navigation.goBack(backTo)}
-            />
-            {isLoadingApp ? (
-                <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
-            ) : (
-                <AddressForm
-                    formID={ONYXKEYS.FORMS.HOME_ADDRESS_FORM}
-                    onSubmit={updateAddress}
-                    submitButtonText={translate('common.save')}
-                    city={city}
-                    country={currentCountry}
-                    onAddressChanged={handleAddressChange}
-                    state={state}
-                    street1={street1}
-                    street2={street2}
-                    zip={zipcode}
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={title}
+                    shouldShowBackButton
+                    onBackButtonPress={() => Navigation.goBack(backTo)}
                 />
-            )}
+                {isLoadingApp ? (
+                    <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
+                ) : (
+                    <AddressForm
+                        formID={ONYXKEYS.FORMS.HOME_ADDRESS_FORM}
+                        onSubmit={updateAddress}
+                        submitButtonText={translate('common.save')}
+                        city={city}
+                        country={currentCountry}
+                        onAddressChanged={handleAddressChange}
+                        state={state}
+                        street1={street1}
+                        street2={street2}
+                        zip={zipcode}
+                    />
+                )}
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/EnablePayments/EnablePayments.tsx b/src/pages/EnablePayments/EnablePayments.tsx
index 357a2be9b1e0..b55141fec299 100644
--- a/src/pages/EnablePayments/EnablePayments.tsx
+++ b/src/pages/EnablePayments/EnablePayments.tsx
@@ -1,5 +1,6 @@
 import React, {useEffect} from 'react';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
@@ -22,6 +23,7 @@ function EnablePaymentsPage() {
     const {isOffline} = useNetwork();
     const [userWallet] = useOnyx(ONYXKEYS.USER_WALLET);
     const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST);
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
 
     useEffect(() => {
         if (isOffline) {
@@ -33,6 +35,18 @@ function EnablePaymentsPage() {
         }
     }, [isOffline, userWallet]);
 
+    if (isActingAsDelegate) {
+        return (
+            <ScreenWrapper
+                testID={EnablePaymentsPage.displayName}
+                includeSafeAreaPaddingBottom={false}
+                shouldEnablePickerAvoiding={false}
+            >
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]} />
+            </ScreenWrapper>
+        );
+    }
+
     if (isEmptyObject(userWallet)) {
         return <FullScreenLoadingIndicator />;
     }
@@ -54,7 +68,6 @@ function EnablePaymentsPage() {
     }
 
     const currentStep = isEmptyObject(bankAccountList) ? CONST.WALLET.STEP.ADD_BANK_ACCOUNT : userWallet?.currentStep || CONST.WALLET.STEP.ADDITIONAL_DETAILS;
-
     switch (currentStep) {
         case CONST.WALLET.STEP.ADD_BANK_ACCOUNT:
             return <AddBankAccount />;
diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx
index 3547da8bcc97..f42cfe790fdc 100644
--- a/src/pages/ReportDetailsPage.tsx
+++ b/src/pages/ReportDetailsPage.tsx
@@ -256,7 +256,7 @@ function ReportDetailsPage({policies, report, route, reportMetadata}: ReportDeta
 
     const [moneyRequestReportActions] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${moneyRequestReport?.reportID}`);
     const isMoneyRequestExported = ReportUtils.isExported(moneyRequestReportActions);
-    const {isDelegateAccessRestricted, delegatorEmail} = useDelegateUserDetails();
+    const {isDelegateAccessRestricted} = useDelegateUserDetails();
     const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
     const unapproveExpenseReportOrShowModal = useCallback(() => {
@@ -942,7 +942,6 @@ function ReportDetailsPage({policies, report, route, reportMetadata}: ReportDeta
                 <DelegateNoAccessModal
                     isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
                     onClose={() => setIsNoDelegateAccessMenuVisible(false)}
-                    delegatorEmail={delegatorEmail ?? ''}
                 />
                 <ConfirmModal
                     title={translate('iou.unapproveReport')}
diff --git a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
index 6aab07e18ee0..b182bf43a52b 100644
--- a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
+++ b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
@@ -118,7 +118,7 @@ function AttachmentPickerWithMenuItems({
     const {translate} = useLocalize();
     const {windowHeight, windowWidth} = useWindowDimensions();
     const {shouldUseNarrowLayout} = useResponsiveLayout();
-    const {isDelegateAccessRestricted, delegatorEmail} = useDelegateUserDetails();
+    const {isDelegateAccessRestricted} = useDelegateUserDetails();
     const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
     const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`);
     const {canUseCombinedTrackSubmit} = usePermissions();
@@ -370,7 +370,6 @@ function AttachmentPickerWithMenuItems({
                         <DelegateNoAccessModal
                             isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
                             onClose={() => setIsNoDelegateAccessMenuVisible(false)}
-                            delegatorEmail={delegatorEmail ?? ''}
                         />
                     </>
                 );
diff --git a/src/pages/settings/ExitSurvey/ExitSurveyBookCall.tsx b/src/pages/settings/ExitSurvey/ExitSurveyBookCall.tsx
index 93191b809ee8..10085dd7a569 100644
--- a/src/pages/settings/ExitSurvey/ExitSurveyBookCall.tsx
+++ b/src/pages/settings/ExitSurvey/ExitSurveyBookCall.tsx
@@ -1,6 +1,7 @@
 import React from 'react';
 import {View} from 'react-native';
 import Button from '@components/Button';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FixedFooter from '@components/FixedFooter';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
@@ -22,58 +23,60 @@ function ExitSurveyBookCallPage() {
 
     return (
         <ScreenWrapper testID={ExitSurveyBookCallPage.displayName}>
-            <HeaderWithBackButton
-                title={translate('exitSurvey.header')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            <View style={[styles.flex1, styles.mh5]}>
-                {isOffline && <ExitSurveyOffline />}
-                {!isOffline && (
-                    <>
-                        <Text style={[styles.headerAnonymousFooter, styles.mt3]}>{translate('exitSurvey.bookACallTitle')}</Text>
-                        <Text style={[styles.mt2]}>{translate('exitSurvey.bookACallTextTop')}</Text>
-                        <View style={styles.mv4}>
-                            {Object.values(CONST.EXIT_SURVEY.BENEFIT).map((value) => {
-                                return (
-                                    <View
-                                        key={value}
-                                        style={[styles.flexRow]}
-                                    >
-                                        <View style={styles.liDot} />
-                                        <Text>{translate(`exitSurvey.benefits.${value}`)}</Text>
-                                    </View>
-                                );
-                            })}
-                        </View>
-                        <Text>{translate('exitSurvey.bookACallTextBottom')}</Text>
-                    </>
-                )}
-            </View>
-            <FixedFooter>
-                <Button
-                    style={styles.mb3}
-                    large
-                    text={translate('exitSurvey.noThanks')}
-                    onPress={() => {
-                        Navigation.navigate(ROUTES.SETTINGS_EXIT_SURVEY_REASON.getRoute(ROUTES.SETTINGS_EXIT_SURVERY_BOOK_CALL.route));
-                    }}
-                    isDisabled={isOffline}
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('exitSurvey.header')}
+                    onBackButtonPress={() => Navigation.goBack()}
                 />
-                <Button
-                    success
-                    large
-                    iconRight={Expensicons.NewWindow}
-                    shouldShowRightIcon
-                    isContentCentered
-                    text={translate('exitSurvey.bookACall')}
-                    pressOnEnter
-                    onPress={() => {
-                        Navigation.dismissModal();
-                        Link.openExternalLink(CONST.EXIT_SURVEY.BOOK_MEETING_LINK);
-                    }}
-                    isDisabled={isOffline}
-                />
-            </FixedFooter>
+                <View style={[styles.flex1, styles.mh5]}>
+                    {isOffline && <ExitSurveyOffline />}
+                    {!isOffline && (
+                        <>
+                            <Text style={[styles.headerAnonymousFooter, styles.mt3]}>{translate('exitSurvey.bookACallTitle')}</Text>
+                            <Text style={[styles.mt2]}>{translate('exitSurvey.bookACallTextTop')}</Text>
+                            <View style={styles.mv4}>
+                                {Object.values(CONST.EXIT_SURVEY.BENEFIT).map((value) => {
+                                    return (
+                                        <View
+                                            key={value}
+                                            style={[styles.flexRow]}
+                                        >
+                                            <View style={styles.liDot} />
+                                            <Text>{translate(`exitSurvey.benefits.${value}`)}</Text>
+                                        </View>
+                                    );
+                                })}
+                            </View>
+                            <Text>{translate('exitSurvey.bookACallTextBottom')}</Text>
+                        </>
+                    )}
+                </View>
+                <FixedFooter>
+                    <Button
+                        style={styles.mb3}
+                        large
+                        text={translate('exitSurvey.noThanks')}
+                        onPress={() => {
+                            Navigation.navigate(ROUTES.SETTINGS_EXIT_SURVEY_REASON.getRoute(ROUTES.SETTINGS_EXIT_SURVERY_BOOK_CALL.route));
+                        }}
+                        isDisabled={isOffline}
+                    />
+                    <Button
+                        success
+                        large
+                        iconRight={Expensicons.NewWindow}
+                        shouldShowRightIcon
+                        isContentCentered
+                        text={translate('exitSurvey.bookACall')}
+                        pressOnEnter
+                        onPress={() => {
+                            Navigation.dismissModal();
+                            Link.openExternalLink(CONST.EXIT_SURVEY.BOOK_MEETING_LINK);
+                        }}
+                        isDisabled={isOffline}
+                    />
+                </FixedFooter>
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/ExitSurvey/ExitSurveyConfirmPage.tsx b/src/pages/settings/ExitSurvey/ExitSurveyConfirmPage.tsx
index f97c3f876779..fe4354a2986b 100644
--- a/src/pages/settings/ExitSurvey/ExitSurveyConfirmPage.tsx
+++ b/src/pages/settings/ExitSurvey/ExitSurveyConfirmPage.tsx
@@ -4,6 +4,7 @@ import {useOnyx} from 'react-native-onyx';
 import type {OnyxEntry} from 'react-native-onyx';
 import Icon from '@components//Icon';
 import Button from '@components/Button';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FixedFooter from '@components/FixedFooter';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import {MushroomTopHat} from '@components/Icon/Illustrations';
@@ -60,40 +61,42 @@ function ExitSurveyConfirmPage({route, navigation}: ExitSurveyConfirmPageProps)
 
     return (
         <ScreenWrapper testID={ExitSurveyConfirmPage.displayName}>
-            <HeaderWithBackButton
-                title={translate(shouldShowQuickTips ? 'exitSurvey.goToExpensifyClassic' : 'exitSurvey.header')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            <View style={[styles.flex1, styles.justifyContentCenter, styles.alignItemsCenter, styles.mh5]}>
-                {isOffline && <ExitSurveyOffline />}
-                {!isOffline && (
-                    <>
-                        <Icon
-                            src={MushroomTopHat}
-                            width={variables.mushroomTopHatWidth}
-                            height={variables.mushroomTopHatHeight}
-                        />
-                        <Text style={[styles.headerAnonymousFooter, styles.mt5, styles.textAlignCenter]}>
-                            {translate(shouldShowQuickTips ? 'exitSurvey.quickTip' : 'exitSurvey.thankYou')}
-                        </Text>
-                        <Text style={[styles.mt2, styles.textAlignCenter]}>{translate(shouldShowQuickTips ? 'exitSurvey.quickTipSubTitle' : 'exitSurvey.thankYouSubtitle')}</Text>
-                    </>
-                )}
-            </View>
-            <FixedFooter>
-                <Button
-                    success
-                    large
-                    text={translate(shouldShowQuickTips ? 'exitSurvey.takeMeToExpensifyClassic' : 'exitSurvey.goToExpensifyClassic')}
-                    pressOnEnter
-                    onPress={() => {
-                        ExitSurvey.switchToOldDot();
-                        Navigation.dismissModal();
-                        Link.openOldDotLink(CONST.OLDDOT_URLS.INBOX, true);
-                    }}
-                    isDisabled={isOffline}
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate(shouldShowQuickTips ? 'exitSurvey.goToExpensifyClassic' : 'exitSurvey.header')}
+                    onBackButtonPress={() => Navigation.goBack()}
                 />
-            </FixedFooter>
+                <View style={[styles.flex1, styles.justifyContentCenter, styles.alignItemsCenter, styles.mh5]}>
+                    {isOffline && <ExitSurveyOffline />}
+                    {!isOffline && (
+                        <>
+                            <Icon
+                                src={MushroomTopHat}
+                                width={variables.mushroomTopHatWidth}
+                                height={variables.mushroomTopHatHeight}
+                            />
+                            <Text style={[styles.headerAnonymousFooter, styles.mt5, styles.textAlignCenter]}>
+                                {translate(shouldShowQuickTips ? 'exitSurvey.quickTip' : 'exitSurvey.thankYou')}
+                            </Text>
+                            <Text style={[styles.mt2, styles.textAlignCenter]}>{translate(shouldShowQuickTips ? 'exitSurvey.quickTipSubTitle' : 'exitSurvey.thankYouSubtitle')}</Text>
+                        </>
+                    )}
+                </View>
+                <FixedFooter>
+                    <Button
+                        success
+                        large
+                        text={translate(shouldShowQuickTips ? 'exitSurvey.takeMeToExpensifyClassic' : 'exitSurvey.goToExpensifyClassic')}
+                        pressOnEnter
+                        onPress={() => {
+                            ExitSurvey.switchToOldDot();
+                            Navigation.dismissModal();
+                            Link.openOldDotLink(CONST.OLDDOT_URLS.INBOX, true);
+                        }}
+                        isDisabled={isOffline}
+                    />
+                </FixedFooter>
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/ExitSurvey/ExitSurveyReasonPage.tsx b/src/pages/settings/ExitSurvey/ExitSurveyReasonPage.tsx
index b5bdcf9ac45c..4e34fc47a6ed 100644
--- a/src/pages/settings/ExitSurvey/ExitSurveyReasonPage.tsx
+++ b/src/pages/settings/ExitSurvey/ExitSurveyReasonPage.tsx
@@ -1,6 +1,7 @@
 import React, {useEffect, useMemo, useState} from 'react';
 import type {OnyxEntry} from 'react-native-onyx';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
@@ -48,47 +49,49 @@ function ExitSurveyReasonPage() {
 
     return (
         <ScreenWrapper testID={ExitSurveyReasonPage.displayName}>
-            <HeaderWithBackButton
-                title={translate('exitSurvey.header')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            <FormProvider
-                formID={ONYXKEYS.FORMS.EXIT_SURVEY_REASON_FORM}
-                style={[styles.flex1, styles.mt3, styles.mh5]}
-                validate={() => {
-                    const errors: Errors = {};
-                    if (!reason) {
-                        errors[INPUT_IDS.REASON] = translate('common.error.fieldRequired');
-                    }
-                    return errors;
-                }}
-                onSubmit={() => {
-                    if (!reason) {
-                        return;
-                    }
-                    ExitSurvey.saveExitReason(reason);
-                    Navigation.navigate(ROUTES.SETTINGS_EXIT_SURVEY_RESPONSE.getRoute(reason, ROUTES.SETTINGS_EXIT_SURVEY_REASON.route));
-                }}
-                submitButtonText={translate('common.next')}
-                shouldValidateOnBlur
-                shouldValidateOnChange
-            >
-                {isOffline && <ExitSurveyOffline />}
-                {!isOffline && (
-                    <>
-                        <Text style={styles.headerAnonymousFooter}>{translate('exitSurvey.reasonPage.title')}</Text>
-                        <Text style={styles.mt2}>{translate('exitSurvey.reasonPage.subtitle')}</Text>
-                        <InputWrapper
-                            InputComponent={RadioButtons}
-                            inputID={INPUT_IDS.REASON}
-                            value={reason as string}
-                            items={reasons}
-                            onPress={setReason as (value: string) => void}
-                            shouldSaveDraft
-                        />
-                    </>
-                )}
-            </FormProvider>
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('exitSurvey.header')}
+                    onBackButtonPress={() => Navigation.goBack()}
+                />
+                <FormProvider
+                    formID={ONYXKEYS.FORMS.EXIT_SURVEY_REASON_FORM}
+                    style={[styles.flex1, styles.mt3, styles.mh5]}
+                    validate={() => {
+                        const errors: Errors = {};
+                        if (!reason) {
+                            errors[INPUT_IDS.REASON] = translate('common.error.fieldRequired');
+                        }
+                        return errors;
+                    }}
+                    onSubmit={() => {
+                        if (!reason) {
+                            return;
+                        }
+                        ExitSurvey.saveExitReason(reason);
+                        Navigation.navigate(ROUTES.SETTINGS_EXIT_SURVEY_RESPONSE.getRoute(reason, ROUTES.SETTINGS_EXIT_SURVEY_REASON.route));
+                    }}
+                    submitButtonText={translate('common.next')}
+                    shouldValidateOnBlur
+                    shouldValidateOnChange
+                >
+                    {isOffline && <ExitSurveyOffline />}
+                    {!isOffline && (
+                        <>
+                            <Text style={styles.headerAnonymousFooter}>{translate('exitSurvey.reasonPage.title')}</Text>
+                            <Text style={styles.mt2}>{translate('exitSurvey.reasonPage.subtitle')}</Text>
+                            <InputWrapper
+                                InputComponent={RadioButtons}
+                                inputID={INPUT_IDS.REASON}
+                                value={reason as string}
+                                items={reasons}
+                                onPress={setReason as (value: string) => void}
+                                shouldSaveDraft
+                            />
+                        </>
+                    )}
+                </FormProvider>
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/ExitSurvey/ExitSurveyResponsePage.tsx b/src/pages/settings/ExitSurvey/ExitSurveyResponsePage.tsx
index c32d94d2da68..5f207b6ad222 100644
--- a/src/pages/settings/ExitSurvey/ExitSurveyResponsePage.tsx
+++ b/src/pages/settings/ExitSurvey/ExitSurveyResponsePage.tsx
@@ -1,5 +1,6 @@
 import React, {useCallback, useEffect} from 'react';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
@@ -86,46 +87,48 @@ function ExitSurveyResponsePage({route, navigation}: ExitSurveyResponsePageProps
             testID={ExitSurveyResponsePage.displayName}
             shouldEnableMaxHeight
         >
-            <HeaderWithBackButton
-                title={translate('exitSurvey.header')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            <FormProvider
-                formID={ONYXKEYS.FORMS.EXIT_SURVEY_RESPONSE_FORM}
-                style={[styles.flex1, styles.mh5, formTopMarginsStyle, StyleUtils.getMaximumHeight(formMaxHeight)]}
-                onSubmit={submitForm}
-                submitButtonText={translate('common.next')}
-                validate={() => {
-                    const errors: Errors = {};
-                    if (!draftResponse?.trim()) {
-                        errors[INPUT_IDS.RESPONSE] = translate('common.error.fieldRequired');
-                    }
-                    return errors;
-                }}
-                shouldValidateOnBlur
-                shouldValidateOnChange
-            >
-                {isOffline && <ExitSurveyOffline />}
-                {!isOffline && (
-                    <>
-                        <Text style={textStyle}>{translate(`exitSurvey.prompts.${reason}`)}</Text>
-                        <InputWrapper
-                            InputComponent={TextInput}
-                            inputID={INPUT_IDS.RESPONSE}
-                            label={translate(`exitSurvey.responsePlaceholder`)}
-                            accessibilityLabel={translate(`exitSurvey.responsePlaceholder`)}
-                            role={CONST.ROLE.PRESENTATION}
-                            autoGrowHeight
-                            maxAutoGrowHeight={variables.textInputAutoGrowMaxHeight}
-                            maxLength={CONST.MAX_COMMENT_LENGTH}
-                            ref={inputCallbackRef}
-                            containerStyles={[baseResponseInputContainerStyle]}
-                            shouldSaveDraft
-                            shouldSubmitForm
-                        />
-                    </>
-                )}
-            </FormProvider>
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('exitSurvey.header')}
+                    onBackButtonPress={() => Navigation.goBack()}
+                />
+                <FormProvider
+                    formID={ONYXKEYS.FORMS.EXIT_SURVEY_RESPONSE_FORM}
+                    style={[styles.flex1, styles.mh5, formTopMarginsStyle, StyleUtils.getMaximumHeight(formMaxHeight)]}
+                    onSubmit={submitForm}
+                    submitButtonText={translate('common.next')}
+                    validate={() => {
+                        const errors: Errors = {};
+                        if (!draftResponse?.trim()) {
+                            errors[INPUT_IDS.RESPONSE] = translate('common.error.fieldRequired');
+                        }
+                        return errors;
+                    }}
+                    shouldValidateOnBlur
+                    shouldValidateOnChange
+                >
+                    {isOffline && <ExitSurveyOffline />}
+                    {!isOffline && (
+                        <>
+                            <Text style={textStyle}>{translate(`exitSurvey.prompts.${reason}`)}</Text>
+                            <InputWrapper
+                                InputComponent={TextInput}
+                                inputID={INPUT_IDS.RESPONSE}
+                                label={translate(`exitSurvey.responsePlaceholder`)}
+                                accessibilityLabel={translate(`exitSurvey.responsePlaceholder`)}
+                                role={CONST.ROLE.PRESENTATION}
+                                autoGrowHeight
+                                maxAutoGrowHeight={variables.textInputAutoGrowMaxHeight}
+                                maxLength={CONST.MAX_COMMENT_LENGTH}
+                                ref={inputCallbackRef}
+                                containerStyles={[baseResponseInputContainerStyle]}
+                                shouldSaveDraft
+                                shouldSubmitForm
+                            />
+                        </>
+                    )}
+                </FormProvider>
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/InitialSettingsPage.tsx b/src/pages/settings/InitialSettingsPage.tsx
index 660021036bff..a40b14eae4c9 100755
--- a/src/pages/settings/InitialSettingsPage.tsx
+++ b/src/pages/settings/InitialSettingsPage.tsx
@@ -8,6 +8,7 @@ import type {ValueOf} from 'type-fest';
 import AccountSwitcher from '@components/AccountSwitcher';
 import AccountSwitcherSkeletonView from '@components/AccountSwitcherSkeletonView';
 import ConfirmModal from '@components/ConfirmModal';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import Icon from '@components/Icon';
 import * as Expensicons from '@components/Icon/Expensicons';
 import {InitialURLContext} from '@components/InitialURLContextProvider';
@@ -84,6 +85,10 @@ function InitialSettingsPage({currentUserPersonalDetails}: InitialSettingsPagePr
     const [privatePersonalDetails] = useOnyx(ONYXKEYS.PRIVATE_PERSONAL_DETAILS);
     const [tryNewDot] = useOnyx(ONYXKEYS.NVP_TRYNEWDOT);
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
+
     const network = useNetwork();
     const theme = useTheme();
     const styles = useThemeStyles();
@@ -244,6 +249,10 @@ function InitialSettingsPage({currentUserPersonalDetails}: InitialSettingsPagePr
                           }
                         : {
                               action() {
+                                  if (isActingAsDelegate) {
+                                      setIsNoDelegateAccessMenuVisible(true);
+                                      return;
+                                  }
                                   resetExitSurveyForm(() => {
                                       if (shouldOpenBookACall) {
                                           Navigation.navigate(ROUTES.SETTINGS_EXIT_SURVERY_BOOK_CALL.route);
@@ -278,7 +287,7 @@ function InitialSettingsPage({currentUserPersonalDetails}: InitialSettingsPagePr
                 },
             ],
         };
-    }, [styles.pt4, signOut, setInitialURL, shouldOpenBookACall]);
+    }, [styles.pt4, signOut, setInitialURL, shouldOpenBookACall, isActingAsDelegate]);
 
     /**
      * Retuns JSX.Element with menu items
@@ -444,6 +453,10 @@ function InitialSettingsPage({currentUserPersonalDetails}: InitialSettingsPagePr
                     onCancel={() => toggleSignoutConfirmModal(false)}
                 />
             </ScrollView>
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Profile/Contacts/ContactMethodsPage.tsx b/src/pages/settings/Profile/Contacts/ContactMethodsPage.tsx
index eab0fe293cbd..7c604ee8cf71 100644
--- a/src/pages/settings/Profile/Contacts/ContactMethodsPage.tsx
+++ b/src/pages/settings/Profile/Contacts/ContactMethodsPage.tsx
@@ -12,7 +12,6 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback';
 import ScreenWrapper from '@components/ScreenWrapper';
 import ScrollView from '@components/ScrollView';
 import Text from '@components/Text';
-import useDelegateUserDetails from '@hooks/useDelegateUserDetails';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@libs/Navigation/Navigation';
@@ -33,10 +32,9 @@ function ContactMethodsPage({route}: ContactMethodsPageProps) {
     const [session] = useOnyx(ONYXKEYS.SESSION);
     const loginNames = Object.keys(loginList ?? {});
     const navigateBackTo = route?.params?.backTo;
-    const [account] = useOnyx(ONYXKEYS.ACCOUNT);
-    const isActingAsDelegate = !!account?.delegatedAccess?.delegate;
+
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
     const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
-    const {delegatorEmail} = useDelegateUserDetails();
 
     // Sort the login names by placing the one corresponding to the default contact method as the first item before displaying the contact methods.
     // The default contact method is determined by checking against the session email (the current login).
@@ -132,7 +130,6 @@ function ContactMethodsPage({route}: ContactMethodsPageProps) {
             <DelegateNoAccessModal
                 isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
                 onClose={() => setIsNoDelegateAccessMenuVisible(false)}
-                delegatorEmail={delegatorEmail ?? ''}
             />
         </ScreenWrapper>
     );
diff --git a/src/pages/settings/Profile/Contacts/NewContactMethodPage.tsx b/src/pages/settings/Profile/Contacts/NewContactMethodPage.tsx
index 5fc218582205..f662e7e4406b 100644
--- a/src/pages/settings/Profile/Contacts/NewContactMethodPage.tsx
+++ b/src/pages/settings/Profile/Contacts/NewContactMethodPage.tsx
@@ -2,6 +2,7 @@ import {Str} from 'expensify-common';
 import React, {useCallback, useEffect, useRef, useState} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import DotIndicatorMessage from '@components/DotIndicatorMessage';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
@@ -22,7 +23,6 @@ import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavig
 import type {SettingsNavigatorParamList} from '@libs/Navigation/types';
 import {addSMSDomainIfPhoneNumber} from '@libs/PhoneNumber';
 import * as UserUtils from '@libs/UserUtils';
-import NotFoundPage from '@pages/ErrorPage/NotFoundPage';
 import * as User from '@userActions/User';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
@@ -43,8 +43,6 @@ function NewContactMethodPage({route}: NewContactMethodPageProps) {
     const [loginList] = useOnyx(ONYXKEYS.LOGIN_LIST);
     const loginData = loginList?.[pendingContactAction?.contactMethod ?? contactMethod];
     const validateLoginError = ErrorUtils.getLatestErrorField(loginData, 'addedLogin');
-    const [account] = useOnyx(ONYXKEYS.ACCOUNT);
-    const isActingAsDelegate = !!account?.delegatedAccess?.delegate;
 
     const navigateBackTo = route?.params?.backTo ?? ROUTES.SETTINGS_PROFILE;
 
@@ -112,10 +110,6 @@ function NewContactMethodPage({route}: NewContactMethodPageProps) {
         Navigation.goBack(ROUTES.SETTINGS_CONTACT_METHODS.getRoute(navigateBackTo));
     }, [navigateBackTo]);
 
-    if (isActingAsDelegate) {
-        return <NotFoundPage onBackButtonPress={onBackButtonPress} />;
-    }
-
     return (
         <ScreenWrapper
             onEntryTransitionEnd={() => loginInputRef.current?.focus()}
@@ -123,62 +117,64 @@ function NewContactMethodPage({route}: NewContactMethodPageProps) {
             shouldEnableMaxHeight
             testID={NewContactMethodPage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('contacts.newContactMethod')}
-                onBackButtonPress={onBackButtonPress}
-            />
-            <FormProvider
-                formID={ONYXKEYS.FORMS.NEW_CONTACT_METHOD_FORM}
-                validate={validate}
-                onSubmit={handleValidateMagicCode}
-                submitButtonText={translate('common.add')}
-                style={[styles.flexGrow1, styles.mh5]}
-            >
-                <Text style={styles.mb5}>{translate('common.pleaseEnterEmailOrPhoneNumber')}</Text>
-                <View style={styles.mb6}>
-                    <InputWrapper
-                        InputComponent={TextInput}
-                        label={`${translate('common.email')}/${translate('common.phoneNumber')}`}
-                        aria-label={`${translate('common.email')}/${translate('common.phoneNumber')}`}
-                        role={CONST.ROLE.PRESENTATION}
-                        inputMode={CONST.INPUT_MODE.EMAIL}
-                        ref={loginInputRef}
-                        inputID={INPUT_IDS.PHONE_OR_EMAIL}
-                        autoCapitalize="none"
-                        enterKeyHint="done"
-                        maxLength={CONST.LOGIN_CHARACTER_LIMIT}
-                    />
-                </View>
-                {hasFailedToSendVerificationCode && (
-                    <DotIndicatorMessage
-                        messages={ErrorUtils.getLatestErrorField(pendingContactAction, 'actionVerified')}
-                        type="error"
-                    />
-                )}
-            </FormProvider>
-            <ValidateCodeActionModal
-                validatePendingAction={pendingContactAction?.pendingFields?.actionVerified}
-                validateError={validateLoginError}
-                handleSubmitForm={addNewContactMethod}
-                clearError={() => {
-                    if (!loginData) {
-                        return;
-                    }
-                    User.clearContactMethodErrors(addSMSDomainIfPhoneNumber(pendingContactAction?.contactMethod ?? contactMethod), 'addedLogin');
-                }}
-                onClose={() => {
-                    if (loginData?.errorFields && pendingContactAction?.contactMethod) {
-                        User.clearContactMethod(pendingContactAction?.contactMethod);
-                        User.clearUnvalidatedNewContactMethodAction();
-                    }
-                    setIsValidateCodeActionModalVisible(false);
-                }}
-                isVisible={isValidateCodeActionModalVisible}
-                hasMagicCodeBeenSent={!!loginData?.validateCodeSent}
-                title={translate('delegate.makeSureItIsYou')}
-                sendValidateCode={() => User.requestValidateCodeAction()}
-                descriptionPrimary={translate('contacts.enterMagicCode', {contactMethod})}
-            />
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('contacts.newContactMethod')}
+                    onBackButtonPress={onBackButtonPress}
+                />
+                <FormProvider
+                    formID={ONYXKEYS.FORMS.NEW_CONTACT_METHOD_FORM}
+                    validate={validate}
+                    onSubmit={handleValidateMagicCode}
+                    submitButtonText={translate('common.add')}
+                    style={[styles.flexGrow1, styles.mh5]}
+                >
+                    <Text style={styles.mb5}>{translate('common.pleaseEnterEmailOrPhoneNumber')}</Text>
+                    <View style={styles.mb6}>
+                        <InputWrapper
+                            InputComponent={TextInput}
+                            label={`${translate('common.email')}/${translate('common.phoneNumber')}`}
+                            aria-label={`${translate('common.email')}/${translate('common.phoneNumber')}`}
+                            role={CONST.ROLE.PRESENTATION}
+                            inputMode={CONST.INPUT_MODE.EMAIL}
+                            ref={loginInputRef}
+                            inputID={INPUT_IDS.PHONE_OR_EMAIL}
+                            autoCapitalize="none"
+                            enterKeyHint="done"
+                            maxLength={CONST.LOGIN_CHARACTER_LIMIT}
+                        />
+                    </View>
+                    {hasFailedToSendVerificationCode && (
+                        <DotIndicatorMessage
+                            messages={ErrorUtils.getLatestErrorField(pendingContactAction, 'actionVerified')}
+                            type="error"
+                        />
+                    )}
+                </FormProvider>
+                <ValidateCodeActionModal
+                    validatePendingAction={pendingContactAction?.pendingFields?.actionVerified}
+                    validateError={validateLoginError}
+                    handleSubmitForm={addNewContactMethod}
+                    clearError={() => {
+                        if (!loginData) {
+                            return;
+                        }
+                        User.clearContactMethodErrors(addSMSDomainIfPhoneNumber(pendingContactAction?.contactMethod ?? contactMethod), 'addedLogin');
+                    }}
+                    onClose={() => {
+                        if (loginData?.errorFields && pendingContactAction?.contactMethod) {
+                            User.clearContactMethod(pendingContactAction?.contactMethod);
+                            User.clearUnvalidatedNewContactMethodAction();
+                        }
+                        setIsValidateCodeActionModalVisible(false);
+                    }}
+                    isVisible={isValidateCodeActionModalVisible}
+                    hasMagicCodeBeenSent={!!loginData?.validateCodeSent}
+                    title={translate('delegate.makeSureItIsYou')}
+                    sendValidateCode={() => User.requestValidateCodeAction()}
+                    descriptionPrimary={translate('contacts.enterMagicCode', {contactMethod})}
+                />
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Profile/PersonalDetails/DateOfBirthPage.tsx b/src/pages/settings/Profile/PersonalDetails/DateOfBirthPage.tsx
index 8a9e6c0a7d02..0d400211cc4c 100644
--- a/src/pages/settings/Profile/PersonalDetails/DateOfBirthPage.tsx
+++ b/src/pages/settings/Profile/PersonalDetails/DateOfBirthPage.tsx
@@ -2,6 +2,7 @@ import {subYears} from 'date-fns';
 import React, {useCallback} from 'react';
 import {useOnyx} from 'react-native-onyx';
 import DatePicker from '@components/DatePicker';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
 import type {FormOnyxValues} from '@components/Form/types';
@@ -22,7 +23,6 @@ function DateOfBirthPage() {
     const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP, {initialValue: true});
     const {translate} = useLocalize();
     const styles = useThemeStyles();
-
     /**
      * @returns An object containing the errors for each inputID
      */
@@ -46,31 +46,33 @@ function DateOfBirthPage() {
             includeSafeAreaPaddingBottom
             testID={DateOfBirthPage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('common.dob')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            {isLoadingApp ? (
-                <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
-            ) : (
-                <FormProvider
-                    style={[styles.flexGrow1, styles.ph5]}
-                    formID={ONYXKEYS.FORMS.DATE_OF_BIRTH_FORM}
-                    validate={validate}
-                    onSubmit={PersonalDetails.updateDateOfBirth}
-                    submitButtonText={translate('common.save')}
-                    enabledWhenOffline
-                >
-                    <InputWrapper
-                        InputComponent={DatePicker}
-                        inputID={INPUT_IDS.DOB}
-                        label={translate('common.date')}
-                        defaultValue={privatePersonalDetails?.dob ?? ''}
-                        minDate={subYears(new Date(), CONST.DATE_BIRTH.MAX_AGE)}
-                        maxDate={subYears(new Date(), CONST.DATE_BIRTH.MIN_AGE)}
-                    />
-                </FormProvider>
-            )}
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('common.dob')}
+                    onBackButtonPress={() => Navigation.goBack()}
+                />
+                {isLoadingApp ? (
+                    <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
+                ) : (
+                    <FormProvider
+                        style={[styles.flexGrow1, styles.ph5]}
+                        formID={ONYXKEYS.FORMS.DATE_OF_BIRTH_FORM}
+                        validate={validate}
+                        onSubmit={PersonalDetails.updateDateOfBirth}
+                        submitButtonText={translate('common.save')}
+                        enabledWhenOffline
+                    >
+                        <InputWrapper
+                            InputComponent={DatePicker}
+                            inputID={INPUT_IDS.DOB}
+                            label={translate('common.date')}
+                            defaultValue={privatePersonalDetails?.dob ?? ''}
+                            minDate={subYears(new Date(), CONST.DATE_BIRTH.MAX_AGE)}
+                            maxDate={subYears(new Date(), CONST.DATE_BIRTH.MIN_AGE)}
+                        />
+                    </FormProvider>
+                )}
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx b/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx
index 74c7624c6725..bb7d3024a0c2 100644
--- a/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx
+++ b/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx
@@ -1,6 +1,7 @@
 import React, {useCallback} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
 import type {FormOnyxValues} from '@components/Form/types';
@@ -82,47 +83,49 @@ function LegalNamePage() {
             shouldEnableMaxHeight
             testID={LegalNamePage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('privatePersonalDetails.legalName')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            {isLoadingApp ? (
-                <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
-            ) : (
-                <FormProvider
-                    style={[styles.flexGrow1, styles.ph5]}
-                    formID={ONYXKEYS.FORMS.LEGAL_NAME_FORM}
-                    validate={validate}
-                    onSubmit={updateLegalName}
-                    submitButtonText={translate('common.save')}
-                    enabledWhenOffline
-                >
-                    <View style={[styles.mb4]}>
-                        <InputWrapper
-                            InputComponent={TextInput}
-                            inputID={INPUT_IDS.LEGAL_FIRST_NAME}
-                            name="lfname"
-                            label={translate('privatePersonalDetails.legalFirstName')}
-                            aria-label={translate('privatePersonalDetails.legalFirstName')}
-                            role={CONST.ROLE.PRESENTATION}
-                            defaultValue={legalFirstName}
-                            spellCheck={false}
-                        />
-                    </View>
-                    <View>
-                        <InputWrapper
-                            InputComponent={TextInput}
-                            inputID={INPUT_IDS.LEGAL_LAST_NAME}
-                            name="llname"
-                            label={translate('privatePersonalDetails.legalLastName')}
-                            aria-label={translate('privatePersonalDetails.legalLastName')}
-                            role={CONST.ROLE.PRESENTATION}
-                            defaultValue={legalLastName}
-                            spellCheck={false}
-                        />
-                    </View>
-                </FormProvider>
-            )}
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('privatePersonalDetails.legalName')}
+                    onBackButtonPress={() => Navigation.goBack()}
+                />
+                {isLoadingApp ? (
+                    <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
+                ) : (
+                    <FormProvider
+                        style={[styles.flexGrow1, styles.ph5]}
+                        formID={ONYXKEYS.FORMS.LEGAL_NAME_FORM}
+                        validate={validate}
+                        onSubmit={updateLegalName}
+                        submitButtonText={translate('common.save')}
+                        enabledWhenOffline
+                    >
+                        <View style={[styles.mb4]}>
+                            <InputWrapper
+                                InputComponent={TextInput}
+                                inputID={INPUT_IDS.LEGAL_FIRST_NAME}
+                                name="lfname"
+                                label={translate('privatePersonalDetails.legalFirstName')}
+                                aria-label={translate('privatePersonalDetails.legalFirstName')}
+                                role={CONST.ROLE.PRESENTATION}
+                                defaultValue={legalFirstName}
+                                spellCheck={false}
+                            />
+                        </View>
+                        <View>
+                            <InputWrapper
+                                InputComponent={TextInput}
+                                inputID={INPUT_IDS.LEGAL_LAST_NAME}
+                                name="llname"
+                                label={translate('privatePersonalDetails.legalLastName')}
+                                aria-label={translate('privatePersonalDetails.legalLastName')}
+                                role={CONST.ROLE.PRESENTATION}
+                                defaultValue={legalLastName}
+                                spellCheck={false}
+                            />
+                        </View>
+                    </FormProvider>
+                )}
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Profile/PersonalDetails/PhoneNumberPage.tsx b/src/pages/settings/Profile/PersonalDetails/PhoneNumberPage.tsx
index a4718e87d90b..d8d664479203 100644
--- a/src/pages/settings/Profile/PersonalDetails/PhoneNumberPage.tsx
+++ b/src/pages/settings/Profile/PersonalDetails/PhoneNumberPage.tsx
@@ -1,6 +1,7 @@
 import {Str} from 'expensify-common';
 import React, {useCallback} from 'react';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
 import type {FormInputErrors, FormOnyxValues} from '@components/Form/types';
@@ -73,45 +74,47 @@ function PhoneNumberPage() {
             shouldEnableMaxHeight
             testID={PhoneNumberPage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('common.phoneNumber')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            {isLoadingApp ? (
-                <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
-            ) : (
-                <FormProvider
-                    style={[styles.flexGrow1, styles.ph5]}
-                    formID={ONYXKEYS.FORMS.PERSONAL_DETAILS_FORM}
-                    validate={validate}
-                    onSubmit={updatePhoneNumber}
-                    submitButtonText={translate('common.save')}
-                    enabledWhenOffline
-                >
-                    <OfflineWithFeedback
-                        errors={validateLoginError}
-                        errorRowStyles={styles.mt2}
-                        onClose={() => PersonalDetails.clearPhoneNumberError()}
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('common.phoneNumber')}
+                    onBackButtonPress={() => Navigation.goBack()}
+                />
+                {isLoadingApp ? (
+                    <FullscreenLoadingIndicator style={[styles.flex1, styles.pRelative]} />
+                ) : (
+                    <FormProvider
+                        style={[styles.flexGrow1, styles.ph5]}
+                        formID={ONYXKEYS.FORMS.PERSONAL_DETAILS_FORM}
+                        validate={validate}
+                        onSubmit={updatePhoneNumber}
+                        submitButtonText={translate('common.save')}
+                        enabledWhenOffline
                     >
-                        <InputWrapper
-                            InputComponent={TextInput}
-                            inputID={INPUT_IDS.PHONE_NUMBER}
-                            name="lfname"
-                            label={translate('common.phoneNumber')}
-                            aria-label={translate('common.phoneNumber')}
-                            role={CONST.ROLE.PRESENTATION}
-                            defaultValue={phoneNumber}
-                            spellCheck={false}
-                            onBlur={() => {
-                                if (!validateLoginError) {
-                                    return;
-                                }
-                                PersonalDetails.clearPhoneNumberError();
-                            }}
-                        />
-                    </OfflineWithFeedback>
-                </FormProvider>
-            )}
+                        <OfflineWithFeedback
+                            errors={validateLoginError}
+                            errorRowStyles={styles.mt2}
+                            onClose={() => PersonalDetails.clearPhoneNumberError()}
+                        >
+                            <InputWrapper
+                                InputComponent={TextInput}
+                                inputID={INPUT_IDS.PHONE_NUMBER}
+                                name="lfname"
+                                label={translate('common.phoneNumber')}
+                                aria-label={translate('common.phoneNumber')}
+                                role={CONST.ROLE.PRESENTATION}
+                                defaultValue={phoneNumber}
+                                spellCheck={false}
+                                onBlur={() => {
+                                    if (!validateLoginError) {
+                                        return;
+                                    }
+                                    PersonalDetails.clearPhoneNumberError();
+                                }}
+                            />
+                        </OfflineWithFeedback>
+                    </FormProvider>
+                )}
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Profile/ProfilePage.tsx b/src/pages/settings/Profile/ProfilePage.tsx
index 1ea20a448820..0b12b63a4067 100755
--- a/src/pages/settings/Profile/ProfilePage.tsx
+++ b/src/pages/settings/Profile/ProfilePage.tsx
@@ -1,9 +1,10 @@
-import React from 'react';
+import React, {useState} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import AvatarSkeleton from '@components/AvatarSkeleton';
 import AvatarWithImagePicker from '@components/AvatarWithImagePicker';
 import Button from '@components/Button';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import * as Expensicons from '@components/Icon/Expensicons';
@@ -58,6 +59,9 @@ function ProfilePage() {
     const privateDetails = privatePersonalDetails ?? {};
     const legalName = `${privateDetails.legalFirstName ?? ''} ${privateDetails.legalLastName ?? ''}`.trim();
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
+
     const publicOptions = [
         {
             description: translate('displayNamePage.headerTitle'),
@@ -91,23 +95,47 @@ function ProfilePage() {
         {
             description: translate('privatePersonalDetails.legalName'),
             title: legalName,
-            pageRoute: ROUTES.SETTINGS_LEGAL_NAME,
+            action: () => {
+                if (isActingAsDelegate) {
+                    setIsNoDelegateAccessMenuVisible(true);
+                    return;
+                }
+                Navigation.navigate(ROUTES.SETTINGS_LEGAL_NAME);
+            },
         },
         {
             description: translate('common.dob'),
             title: privateDetails.dob ?? '',
-            pageRoute: ROUTES.SETTINGS_DATE_OF_BIRTH,
+            action: () => {
+                if (isActingAsDelegate) {
+                    setIsNoDelegateAccessMenuVisible(true);
+                    return;
+                }
+                Navigation.navigate(ROUTES.SETTINGS_DATE_OF_BIRTH);
+            },
         },
         {
             description: translate('common.phoneNumber'),
             title: privateDetails.phoneNumber ?? '',
-            pageRoute: ROUTES.SETTINGS_PHONE_NUMBER,
+            action: () => {
+                if (isActingAsDelegate) {
+                    setIsNoDelegateAccessMenuVisible(true);
+                    return;
+                }
+                Navigation.navigate(ROUTES.SETTINGS_PHONE_NUMBER);
+            },
             brickRoadIndicator: privatePersonalDetails?.errorFields?.phoneNumber ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined,
         },
         {
             description: translate('privatePersonalDetails.address'),
             title: PersonalDetailsUtils.getFormattedAddress(privateDetails),
-            pageRoute: ROUTES.SETTINGS_ADDRESS,
+            action: () => {
+                if (isActingAsDelegate) {
+                    setIsNoDelegateAccessMenuVisible(true);
+                    return;
+                }
+                Navigation.navigate(ROUTES.SETTINGS_ADDRESS);
+            },
         },
     ];
 
@@ -196,7 +224,7 @@ function ProfilePage() {
                             {isLoadingApp ? (
                                 <FullScreenLoadingIndicator style={[styles.flex1, styles.pRelative, StyleUtils.getBackgroundColorStyle(theme.cardBG)]} />
                             ) : (
-                                <>
+                                <MenuItemGroup shouldUseSingleExecution={!isActingAsDelegate}>
                                     {privateOptions.map((detail, index) => (
                                         <MenuItemWithTopDescription
                                             // eslint-disable-next-line react/no-array-index-key
@@ -205,16 +233,20 @@ function ProfilePage() {
                                             title={detail.title}
                                             description={detail.description}
                                             wrapperStyle={styles.sectionMenuItemTopDescription}
-                                            onPress={() => Navigation.navigate(detail.pageRoute)}
+                                            onPress={detail.action}
                                             brickRoadIndicator={detail.brickRoadIndicator}
                                         />
                                     ))}
-                                </>
+                                </MenuItemGroup>
                             )}
                         </Section>
                     </View>
                 </MenuItemGroup>
             </ScrollView>
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Security/AddDelegate/AddDelegatePage.tsx b/src/pages/settings/Security/AddDelegate/AddDelegatePage.tsx
index efaf6d5e8480..45efa45e4e3d 100644
--- a/src/pages/settings/Security/AddDelegate/AddDelegatePage.tsx
+++ b/src/pages/settings/Security/AddDelegate/AddDelegatePage.tsx
@@ -1,6 +1,7 @@
 import React, {useCallback, useEffect, useMemo, useState} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import {useBetas} from '@components/OnyxProvider';
 import {useOptionsList} from '@components/OptionListContextProvider';
@@ -130,24 +131,26 @@ function AddDelegatePage() {
             includeSafeAreaPaddingBottom={false}
             testID={AddDelegatePage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('delegate.addCopilot')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            <View style={[styles.flex1, styles.w100, styles.pRelative]}>
-                <SelectionList
-                    sections={areOptionsInitialized ? sections : []}
-                    ListItem={UserListItem}
-                    onSelectRow={onSelectRow}
-                    shouldSingleExecuteRowSelect
-                    onChangeText={setSearchValue}
-                    textInputValue={searchValue}
-                    headerMessage={headerMessage}
-                    textInputLabel={translate('selectionList.nameEmailOrPhoneNumber')}
-                    showLoadingPlaceholder={!areOptionsInitialized}
-                    isLoadingNewOptions={!!isSearchingForReports}
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('delegate.addCopilot')}
+                    onBackButtonPress={() => Navigation.goBack()}
                 />
-            </View>
+                <View style={[styles.flex1, styles.w100, styles.pRelative]}>
+                    <SelectionList
+                        sections={areOptionsInitialized ? sections : []}
+                        ListItem={UserListItem}
+                        onSelectRow={onSelectRow}
+                        shouldSingleExecuteRowSelect
+                        onChangeText={setSearchValue}
+                        textInputValue={searchValue}
+                        headerMessage={headerMessage}
+                        textInputLabel={translate('selectionList.nameEmailOrPhoneNumber')}
+                        showLoadingPlaceholder={!areOptionsInitialized}
+                        isLoadingNewOptions={!!isSearchingForReports}
+                    />
+                </View>
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Security/AddDelegate/ConfirmDelegatePage.tsx b/src/pages/settings/Security/AddDelegate/ConfirmDelegatePage.tsx
index 57d50400863e..77865a313d5d 100644
--- a/src/pages/settings/Security/AddDelegate/ConfirmDelegatePage.tsx
+++ b/src/pages/settings/Security/AddDelegate/ConfirmDelegatePage.tsx
@@ -1,6 +1,7 @@
 import React, {useState} from 'react';
 import type {ValueOf} from 'type-fest';
 import Button from '@components/Button';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import HeaderPageLayout from '@components/HeaderPageLayout';
 import {FallbackAvatar} from '@components/Icon/Expensicons';
 import MenuItem from '@components/MenuItem';
@@ -60,34 +61,36 @@ function ConfirmDelegatePage({route}: ConfirmDelegatePageProps) {
             footer={submitButton}
             childrenContainerStyles={[styles.pt3, styles.gap6]}
         >
-            <Text style={[styles.ph5]}>{translate('delegate.confirmCopilot')}</Text>
-            <MenuItem
-                avatarID={personalDetails?.accountID ?? -1}
-                iconType={CONST.ICON_TYPE_AVATAR}
-                icon={avatarIcon}
-                title={displayName}
-                description={formattedLogin}
-                interactive={false}
-            />
-            <MenuItemWithTopDescription
-                title={translate('delegate.role', {role})}
-                description={translate('delegate.accessLevel')}
-                helperText={translate('delegate.roleDescription', {role})}
-                onPress={() => Navigation.navigate(ROUTES.SETTINGS_DELEGATE_ROLE.getRoute(login, role))}
-                shouldShowRightIcon
-            />
-            <DelegateMagicCodeModal
-                login={login}
-                role={role}
-                onClose={() => {
-                    if (!showValidateActionModal) {
-                        setIsValidateCodeActionModalVisible(false);
-                        return;
-                    }
-                    Navigation.navigate(ROUTES.SETTINGS_SECURITY);
-                }}
-                isValidateCodeActionModalVisible={isValidateCodeActionModalVisible}
-            />
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <Text style={[styles.ph5]}>{translate('delegate.confirmCopilot')}</Text>
+                <MenuItem
+                    avatarID={personalDetails?.accountID ?? -1}
+                    iconType={CONST.ICON_TYPE_AVATAR}
+                    icon={avatarIcon}
+                    title={displayName}
+                    description={formattedLogin}
+                    interactive={false}
+                />
+                <MenuItemWithTopDescription
+                    title={translate('delegate.role', {role})}
+                    description={translate('delegate.accessLevel')}
+                    helperText={translate('delegate.roleDescription', {role})}
+                    onPress={() => Navigation.navigate(ROUTES.SETTINGS_DELEGATE_ROLE.getRoute(login, role))}
+                    shouldShowRightIcon
+                />
+                <DelegateMagicCodeModal
+                    login={login}
+                    role={role}
+                    onClose={() => {
+                        if (!showValidateActionModal) {
+                            setIsValidateCodeActionModalVisible(false);
+                            return;
+                        }
+                        Navigation.navigate(ROUTES.SETTINGS_SECURITY);
+                    }}
+                    isValidateCodeActionModalVisible={isValidateCodeActionModalVisible}
+                />
+            </DelegateNoAccessWrapper>
         </HeaderPageLayout>
     );
 }
diff --git a/src/pages/settings/Security/AddDelegate/SelectDelegateRolePage.tsx b/src/pages/settings/Security/AddDelegate/SelectDelegateRolePage.tsx
index 7a52efb6cfd8..e80a9d3153a3 100644
--- a/src/pages/settings/Security/AddDelegate/SelectDelegateRolePage.tsx
+++ b/src/pages/settings/Security/AddDelegate/SelectDelegateRolePage.tsx
@@ -1,4 +1,5 @@
 import React from 'react';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
 import SelectionList from '@components/SelectionList';
@@ -34,34 +35,36 @@ function SelectDelegateRolePage({route}: SelectDelegateRolePageProps) {
             includeSafeAreaPaddingBottom={false}
             testID={SelectDelegateRolePage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('delegate.accessLevel')}
-                onBackButtonPress={() => Navigation.goBack(ROUTES.SETTINGS_ADD_DELEGATE)}
-            />
-            <SelectionList
-                isAlternateTextMultilineSupported
-                alternateTextNumberOfLines={4}
-                initiallyFocusedOptionKey={roleOptions.find((role) => role.isSelected)?.keyForList}
-                shouldUpdateFocusedIndex
-                headerContent={
-                    <Text style={[styles.ph5, styles.pb5, styles.pt3]}>
-                        <>
-                            {translate('delegate.accessLevelDescription')}{' '}
-                            <TextLink
-                                style={[styles.link]}
-                                href={CONST.COPILOT_HELP_URL}
-                            >
-                                {translate('common.learnMore')}
-                            </TextLink>
-                        </>
-                    </Text>
-                }
-                onSelectRow={(option) => {
-                    Navigation.navigate(ROUTES.SETTINGS_DELEGATE_CONFIRM.getRoute(login, option.value));
-                }}
-                sections={[{data: roleOptions}]}
-                ListItem={RadioListItem}
-            />
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('delegate.accessLevel')}
+                    onBackButtonPress={() => Navigation.goBack(ROUTES.SETTINGS_ADD_DELEGATE)}
+                />
+                <SelectionList
+                    isAlternateTextMultilineSupported
+                    alternateTextNumberOfLines={4}
+                    initiallyFocusedOptionKey={roleOptions.find((role) => role.isSelected)?.keyForList}
+                    shouldUpdateFocusedIndex
+                    headerContent={
+                        <Text style={[styles.ph5, styles.pb5, styles.pt3]}>
+                            <>
+                                {translate('delegate.accessLevelDescription')}{' '}
+                                <TextLink
+                                    style={[styles.link]}
+                                    href={CONST.COPILOT_HELP_URL}
+                                >
+                                    {translate('common.learnMore')}
+                                </TextLink>
+                            </>
+                        </Text>
+                    }
+                    onSelectRow={(option) => {
+                        Navigation.navigate(ROUTES.SETTINGS_DELEGATE_CONFIRM.getRoute(login, option.value));
+                    }}
+                    sections={[{data: roleOptions}]}
+                    ListItem={RadioListItem}
+                />
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateMagicCodePage.tsx b/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateMagicCodePage.tsx
index 54d5ab79c579..38663d0f93e0 100644
--- a/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateMagicCodePage.tsx
+++ b/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateMagicCodePage.tsx
@@ -1,6 +1,7 @@
 import React, {useEffect, useRef} from 'react';
 import {useOnyx} from 'react-native-onyx';
 import type {ValueOf} from 'type-fest';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
 import Text from '@components/Text';
@@ -9,7 +10,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@libs/Navigation/Navigation';
 import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
 import type {SettingsNavigatorParamList} from '@libs/Navigation/types';
-import type CONST from '@src/CONST';
+import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 import type SCREENS from '@src/SCREENS';
@@ -51,7 +52,7 @@ function UpdateDelegateMagicCodePage({route}: UpdateDelegateMagicCodePageProps)
             offlineIndicatorStyle={styles.mtAuto}
         >
             {({safeAreaPaddingBottomStyle}) => (
-                <>
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
                     <HeaderWithBackButton
                         title={translate('delegate.makeSureItIsYou')}
                         onBackButtonPress={onBackButtonPress}
@@ -63,7 +64,7 @@ function UpdateDelegateMagicCodePage({route}: UpdateDelegateMagicCodePageProps)
                         role={role}
                         wrapperStyle={safeAreaPaddingBottomStyle}
                     />
-                </>
+                </DelegateNoAccessWrapper>
             )}
         </ScreenWrapper>
     );
diff --git a/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateRolePage.tsx b/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateRolePage.tsx
index 13e0adfc17bf..b43c970ef5ff 100644
--- a/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateRolePage.tsx
+++ b/src/pages/settings/Security/AddDelegate/UpdateDelegateRole/UpdateDelegateRolePage.tsx
@@ -1,4 +1,5 @@
 import React, {useEffect, useState} from 'react';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
 import SelectionList from '@components/SelectionList';
@@ -43,41 +44,43 @@ function UpdateDelegateRolePage({route}: UpdateDelegateRolePageProps) {
             includeSafeAreaPaddingBottom={false}
             testID={UpdateDelegateRolePage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('delegate.accessLevel')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            <SelectionList
-                isAlternateTextMultilineSupported
-                alternateTextNumberOfLines={4}
-                initiallyFocusedOptionKey={currentRole}
-                shouldUpdateFocusedIndex
-                headerContent={
-                    <Text style={[styles.ph5, styles.pb5, styles.pt3]}>
-                        <>
-                            {translate('delegate.accessLevelDescription')}{' '}
-                            <TextLink
-                                style={[styles.link]}
-                                href={CONST.COPILOT_HELP_URL}
-                            >
-                                {translate('common.learnMore')}
-                            </TextLink>
-                        </>
-                    </Text>
-                }
-                onSelectRow={(option) => {
-                    if (option.isSelected) {
-                        Navigation.dismissModal();
-                        return;
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('delegate.accessLevel')}
+                    onBackButtonPress={() => Navigation.goBack()}
+                />
+                <SelectionList
+                    isAlternateTextMultilineSupported
+                    alternateTextNumberOfLines={4}
+                    initiallyFocusedOptionKey={currentRole}
+                    shouldUpdateFocusedIndex
+                    headerContent={
+                        <Text style={[styles.ph5, styles.pb5, styles.pt3]}>
+                            <>
+                                {translate('delegate.accessLevelDescription')}{' '}
+                                <TextLink
+                                    style={[styles.link]}
+                                    href={CONST.COPILOT_HELP_URL}
+                                >
+                                    {translate('common.learnMore')}
+                                </TextLink>
+                            </>
+                        </Text>
                     }
+                    onSelectRow={(option) => {
+                        if (option.isSelected) {
+                            Navigation.dismissModal();
+                            return;
+                        }
 
-                    requestValidationCode();
-                    setCurrentRole(option.value);
-                    Navigation.navigate(ROUTES.SETTINGS_UPDATE_DELEGATE_ROLE_MAGIC_CODE.getRoute(login, option.value));
-                }}
-                sections={[{data: roleOptions}]}
-                ListItem={RadioListItem}
-            />
+                        requestValidationCode();
+                        setCurrentRole(option.value);
+                        Navigation.navigate(ROUTES.SETTINGS_UPDATE_DELEGATE_ROLE_MAGIC_CODE.getRoute(login, option.value));
+                    }}
+                    sections={[{data: roleOptions}]}
+                    ListItem={RadioListItem}
+                />
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Security/CloseAccountPage.tsx b/src/pages/settings/Security/CloseAccountPage.tsx
index 9f4a0858ece6..e5fd7dd36ebf 100644
--- a/src/pages/settings/Security/CloseAccountPage.tsx
+++ b/src/pages/settings/Security/CloseAccountPage.tsx
@@ -3,6 +3,7 @@ import React, {useEffect, useState} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import ConfirmModal from '@components/ConfirmModal';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FormProvider from '@components/Form/FormProvider';
 import InputWrapper from '@components/Form/InputWrapper';
 import type {FormInputErrors, FormOnyxValues} from '@components/Form/types';
@@ -74,58 +75,60 @@ function CloseAccountPage() {
             includeSafeAreaPaddingBottom
             testID={CloseAccountPage.displayName}
         >
-            <HeaderWithBackButton
-                title={translate('closeAccountPage.closeAccount')}
-                onBackButtonPress={() => Navigation.goBack()}
-            />
-            <FormProvider
-                formID={ONYXKEYS.FORMS.CLOSE_ACCOUNT_FORM}
-                validate={validate}
-                onSubmit={showConfirmModal}
-                submitButtonText={translate('closeAccountPage.closeAccount')}
-                style={[styles.flexGrow1, styles.mh5]}
-                isSubmitActionDangerous
-            >
-                <View style={[styles.flexGrow1]}>
-                    <Text>{translate('closeAccountPage.reasonForLeavingPrompt')}</Text>
-                    <InputWrapper
-                        InputComponent={TextInput}
-                        inputID={INPUT_IDS.REASON_FOR_LEAVING}
-                        autoGrowHeight
-                        maxAutoGrowHeight={variables.textInputAutoGrowMaxHeight}
-                        label={translate('closeAccountPage.enterMessageHere')}
-                        aria-label={translate('closeAccountPage.enterMessageHere')}
-                        role={CONST.ROLE.PRESENTATION}
-                        containerStyles={[styles.mt5]}
-                    />
-                    <Text style={[styles.mt5]}>
-                        {translate('closeAccountPage.enterDefaultContactToConfirm')} <Text style={[styles.textStrong]}>{userEmailOrPhone}</Text>
-                    </Text>
-                    <InputWrapper
-                        InputComponent={TextInput}
-                        inputID={INPUT_IDS.PHONE_OR_EMAIL}
-                        autoCapitalize="none"
-                        label={translate('closeAccountPage.enterDefaultContact')}
-                        aria-label={translate('closeAccountPage.enterDefaultContact')}
-                        role={CONST.ROLE.PRESENTATION}
-                        containerStyles={[styles.mt5]}
-                        autoCorrect={false}
-                        inputMode={userEmailOrPhone && Str.isValidEmail(userEmailOrPhone) ? CONST.INPUT_MODE.EMAIL : CONST.INPUT_MODE.TEXT}
-                    />
-                    <ConfirmModal
-                        danger
-                        title={translate('closeAccountPage.closeAccountWarning')}
-                        onConfirm={onConfirm}
-                        onCancel={hideConfirmModal}
-                        isVisible={isConfirmModalVisible}
-                        prompt={translate('closeAccountPage.closeAccountPermanentlyDeleteData')}
-                        confirmText={translate('common.yesContinue')}
-                        cancelText={translate('common.cancel')}
-                        shouldDisableConfirmButtonWhenOffline
-                        shouldShowCancelButton
-                    />
-                </View>
-            </FormProvider>
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('closeAccountPage.closeAccount')}
+                    onBackButtonPress={() => Navigation.goBack()}
+                />
+                <FormProvider
+                    formID={ONYXKEYS.FORMS.CLOSE_ACCOUNT_FORM}
+                    validate={validate}
+                    onSubmit={showConfirmModal}
+                    submitButtonText={translate('closeAccountPage.closeAccount')}
+                    style={[styles.flexGrow1, styles.mh5]}
+                    isSubmitActionDangerous
+                >
+                    <View style={[styles.flexGrow1]}>
+                        <Text>{translate('closeAccountPage.reasonForLeavingPrompt')}</Text>
+                        <InputWrapper
+                            InputComponent={TextInput}
+                            inputID={INPUT_IDS.REASON_FOR_LEAVING}
+                            autoGrowHeight
+                            maxAutoGrowHeight={variables.textInputAutoGrowMaxHeight}
+                            label={translate('closeAccountPage.enterMessageHere')}
+                            aria-label={translate('closeAccountPage.enterMessageHere')}
+                            role={CONST.ROLE.PRESENTATION}
+                            containerStyles={[styles.mt5]}
+                        />
+                        <Text style={[styles.mt5]}>
+                            {translate('closeAccountPage.enterDefaultContactToConfirm')} <Text style={[styles.textStrong]}>{userEmailOrPhone}</Text>
+                        </Text>
+                        <InputWrapper
+                            InputComponent={TextInput}
+                            inputID={INPUT_IDS.PHONE_OR_EMAIL}
+                            autoCapitalize="none"
+                            label={translate('closeAccountPage.enterDefaultContact')}
+                            aria-label={translate('closeAccountPage.enterDefaultContact')}
+                            role={CONST.ROLE.PRESENTATION}
+                            containerStyles={[styles.mt5]}
+                            autoCorrect={false}
+                            inputMode={userEmailOrPhone && Str.isValidEmail(userEmailOrPhone) ? CONST.INPUT_MODE.EMAIL : CONST.INPUT_MODE.TEXT}
+                        />
+                        <ConfirmModal
+                            danger
+                            title={translate('closeAccountPage.closeAccountWarning')}
+                            onConfirm={onConfirm}
+                            onCancel={hideConfirmModal}
+                            isVisible={isConfirmModalVisible}
+                            prompt={translate('closeAccountPage.closeAccountPermanentlyDeleteData')}
+                            confirmText={translate('common.yesContinue')}
+                            cancelText={translate('common.cancel')}
+                            shouldDisableConfirmButtonWhenOffline
+                            shouldShowCancelButton
+                        />
+                    </View>
+                </FormProvider>
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Security/SecuritySettingsPage.tsx b/src/pages/settings/Security/SecuritySettingsPage.tsx
index a93a9f154276..5762f557d343 100644
--- a/src/pages/settings/Security/SecuritySettingsPage.tsx
+++ b/src/pages/settings/Security/SecuritySettingsPage.tsx
@@ -5,6 +5,7 @@ import {Dimensions, View} from 'react-native';
 import type {GestureResponderEvent} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import ConfirmModal from '@components/ConfirmModal';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import * as Expensicons from '@components/Icon/Expensicons';
 import {FallbackAvatar} from '@components/Icon/Expensicons';
@@ -65,6 +66,7 @@ function SecuritySettingsPage() {
     });
 
     const isActingAsDelegate = !!account?.delegatedAccess?.delegate || false;
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
     const delegates = account?.delegatedAccess?.delegates ?? [];
     const delegators = account?.delegatedAccess?.delegators ?? [];
@@ -92,6 +94,9 @@ function SecuritySettingsPage() {
         setSelectedEmail(delegate.email);
     };
 
+    const showDelegateNoAccessMenu = () => {
+        setIsNoDelegateAccessMenuVisible(true);
+    };
     useLayoutEffect(() => {
         const popoverPositionListener = Dimensions.addEventListener('change', () => {
             debounce(setMenuPosition, CONST.TIMING.RESIZE_DEBOUNCE_TIME)();
@@ -110,12 +115,12 @@ function SecuritySettingsPage() {
             {
                 translationKey: 'twoFactorAuth.headerTitle',
                 icon: Expensicons.Shield,
-                action: waitForNavigate(() => Navigation.navigate(ROUTES.SETTINGS_2FA.getRoute())),
+                action: isActingAsDelegate ? showDelegateNoAccessMenu : waitForNavigate(() => Navigation.navigate(ROUTES.SETTINGS_2FA.getRoute())),
             },
             {
                 translationKey: 'closeAccountPage.closeAccount',
                 icon: Expensicons.ClosedSign,
-                action: waitForNavigate(() => Navigation.navigate(ROUTES.SETTINGS_CLOSE)),
+                action: isActingAsDelegate ? showDelegateNoAccessMenu : waitForNavigate(() => Navigation.navigate(ROUTES.SETTINGS_CLOSE)),
             },
         ];
 
@@ -128,7 +133,7 @@ function SecuritySettingsPage() {
             link: '',
             wrapperStyle: [styles.sectionMenuItemTopDescription],
         }));
-    }, [translate, waitForNavigate, styles]);
+    }, [translate, waitForNavigate, styles, isActingAsDelegate]);
 
     const delegateMenuItems: MenuItemProps[] = useMemo(
         () =>
@@ -207,6 +212,10 @@ function SecuritySettingsPage() {
             text: translate('delegate.changeAccessLevel'),
             icon: Expensicons.Pencil,
             onPress: () => {
+                if (isActingAsDelegate) {
+                    Modal.close(() => setIsNoDelegateAccessMenuVisible(true));
+                    return;
+                }
                 Navigation.navigate(ROUTES.SETTINGS_UPDATE_DELEGATE_ROLE.getRoute(selectedDelegate?.email ?? '', selectedDelegate?.role ?? ''));
                 setShouldShowDelegatePopoverMenu(false);
                 setSelectedDelegate(undefined);
@@ -216,12 +225,17 @@ function SecuritySettingsPage() {
         {
             text: translate('delegate.removeCopilot'),
             icon: Expensicons.Trashcan,
-            onPress: () =>
+            onPress: () => {
+                if (isActingAsDelegate) {
+                    Modal.close(() => setIsNoDelegateAccessMenuVisible(true));
+                    return;
+                }
                 Modal.close(() => {
                     setShouldShowDelegatePopoverMenu(false);
                     setShouldShowRemoveDelegateModal(true);
                     setSelectedEmail(undefined);
-                }),
+                });
+            },
         },
     ];
 
@@ -336,6 +350,10 @@ function SecuritySettingsPage() {
                             />
                         </View>
                     </ScrollView>
+                    <DelegateNoAccessModal
+                        isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                        onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+                    />
                 </>
             )}
         </ScreenWrapper>
diff --git a/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthPage.tsx b/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthPage.tsx
index 99f57a5a5a9d..bc3dc588c1b1 100644
--- a/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthPage.tsx
+++ b/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthPage.tsx
@@ -1,8 +1,25 @@
 import React from 'react';
+import {useOnyx} from 'react-native-onyx';
 import AnimatedStepProvider from '@components/AnimatedStep/AnimatedStepProvider';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
+import ScreenWrapper from '@components/ScreenWrapper';
+import CONST from '@src/CONST';
+import ONYXKEYS from '@src/ONYXKEYS';
 import TwoFactorAuthSteps from './TwoFactorAuthSteps';
 
 function TwoFactorAuthPage() {
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+    if (isActingAsDelegate) {
+        return (
+            <ScreenWrapper
+                testID={TwoFactorAuthPage.displayName}
+                includeSafeAreaPaddingBottom={false}
+                shouldEnablePickerAvoiding={false}
+            >
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]} />
+            </ScreenWrapper>
+        );
+    }
     return (
         <AnimatedStepProvider>
             <TwoFactorAuthSteps />
@@ -10,4 +27,6 @@ function TwoFactorAuthPage() {
     );
 }
 
+TwoFactorAuthPage.displayName = 'TwoFactorAuthPage';
+
 export default TwoFactorAuthPage;
diff --git a/src/pages/settings/Subscription/CardSection/CardSectionDataEmpty/index.tsx b/src/pages/settings/Subscription/CardSection/CardSectionDataEmpty/index.tsx
index 627556e7b5bd..79a200c4772c 100644
--- a/src/pages/settings/Subscription/CardSection/CardSectionDataEmpty/index.tsx
+++ b/src/pages/settings/Subscription/CardSection/CardSectionDataEmpty/index.tsx
@@ -1,26 +1,43 @@
-import React, {useCallback} from 'react';
+import React, {useCallback, useState} from 'react';
+import {useOnyx} from 'react-native-onyx';
 import Button from '@components/Button';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@navigation/Navigation';
+import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 
 function CardSectionDataEmpty() {
     const {translate} = useLocalize();
     const styles = useThemeStyles();
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
     const openAddPaymentCardScreen = useCallback(() => {
         Navigation.navigate(ROUTES.SETTINGS_SUBSCRIPTION_ADD_PAYMENT_CARD);
     }, []);
-
+    const handleAddPaymentCardPress = () => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
+        openAddPaymentCardScreen();
+    };
     return (
-        <Button
-            text={translate('subscription.cardSection.addCardButton')}
-            onPress={openAddPaymentCardScreen}
-            style={styles.w100}
-            success
-            large
-        />
+        <>
+            <Button
+                text={translate('subscription.cardSection.addCardButton')}
+                onPress={handleAddPaymentCardPress}
+                style={styles.w100}
+                success
+                large
+            />
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
+        </>
     );
 }
 
diff --git a/src/pages/settings/Subscription/CardSection/RequestEarlyCancellationMenuItem/index.tsx b/src/pages/settings/Subscription/CardSection/RequestEarlyCancellationMenuItem/index.tsx
index 2d1af54b5b20..4ad35dad8c45 100644
--- a/src/pages/settings/Subscription/CardSection/RequestEarlyCancellationMenuItem/index.tsx
+++ b/src/pages/settings/Subscription/CardSection/RequestEarlyCancellationMenuItem/index.tsx
@@ -1,23 +1,41 @@
-import React from 'react';
+import React, {useState} from 'react';
+import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import * as Expensicons from '@components/Icon/Expensicons';
 import MenuItem from '@components/MenuItem';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Navigation from '@libs/Navigation/Navigation';
+import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 
 function RequestEarlyCancellationMenuItem() {
     const {translate} = useLocalize();
     const styles = useThemeStyles();
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
+    const handleRequestEarlyCancellationPress = () => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
+        Navigation.navigate(ROUTES.SETTINGS_SUBSCRIPTION_REQUEST_EARLY_CANCELLATION);
+    };
     return (
-        <MenuItem
-            title={translate('subscription.requestEarlyCancellation.title')}
-            icon={Expensicons.CalendarSolid}
-            shouldShowRightIcon
-            wrapperStyle={styles.sectionMenuItemTopDescription}
-            onPress={() => Navigation.navigate(ROUTES.SETTINGS_SUBSCRIPTION_REQUEST_EARLY_CANCELLATION)}
-        />
+        <>
+            <MenuItem
+                title={translate('subscription.requestEarlyCancellation.title')}
+                icon={Expensicons.CalendarSolid}
+                shouldShowRightIcon
+                wrapperStyle={styles.sectionMenuItemTopDescription}
+                onPress={handleRequestEarlyCancellationPress}
+            />
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
+        </>
     );
 }
 
diff --git a/src/pages/settings/Subscription/PaymentCard/index.tsx b/src/pages/settings/Subscription/PaymentCard/index.tsx
index da977f170a9b..61178d8f5cad 100644
--- a/src/pages/settings/Subscription/PaymentCard/index.tsx
+++ b/src/pages/settings/Subscription/PaymentCard/index.tsx
@@ -2,6 +2,7 @@ import React, {useCallback, useEffect} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import PaymentCardForm from '@components/AddPaymentCard/PaymentCardForm';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import type {FormOnyxValues} from '@components/Form/types';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import * as Illustrations from '@components/Icon/Illustrations';
@@ -73,46 +74,48 @@ function AddPaymentCard() {
 
     return (
         <ScreenWrapper testID={AddPaymentCard.displayName}>
-            <HeaderWithBackButton title={translate('subscription.paymentCard.addPaymentCard')} />
-            <View style={styles.containerWithSpaceBetween}>
-                <PaymentCardForm
-                    shouldShowPaymentCardForm
-                    addPaymentCard={addPaymentCard}
-                    showAcceptTerms
-                    showCurrencyField
-                    currencySelectorRoute={ROUTES.SETTINGS_SUBSCRIPTION_CHANGE_PAYMENT_CURRENCY}
-                    submitButtonText={translate('subscription.paymentCard.addPaymentCard')}
-                    headerContent={<Text style={[styles.textHeadline, styles.mt3, styles.mb2, styles.ph5]}>{translate('subscription.paymentCard.enterPaymentCardDetails')}</Text>}
-                    footerContent={
-                        <>
-                            <Section
-                                icon={Illustrations.ShieldYellow}
-                                cardLayout={CARD_LAYOUT.ICON_ON_LEFT}
-                                iconContainerStyles={styles.mr4}
-                                containerStyles={[styles.mh0, styles.mt5]}
-                                renderTitle={() => (
-                                    <Text style={[styles.mutedTextLabel]}>
-                                        {translate('subscription.paymentCard.security')}{' '}
-                                        <TextLink
-                                            style={[styles.mutedTextLabel, styles.link]}
-                                            href={CONST.TERMS_URL}
-                                        >
-                                            {translate('subscription.paymentCard.learnMoreAboutSecurity')}
-                                        </TextLink>
-                                    </Text>
-                                )}
-                            />
-                            <Text style={[styles.textMicroSupporting, styles.mt3, styles.textAlignCenter, styles.mr5, styles.ml5]}>
-                                {translate(`subscription.yourPlan.${isCollect ? 'collect' : 'control'}.${isAnnual ? 'priceAnnual' : 'pricePayPerUse'}`, {
-                                    lower: convertToShortDisplayString(subscriptionPrice, preferredCurrency),
-                                    upper: convertToShortDisplayString(subscriptionPrice * CONST.SUBSCRIPTION_PRICE_FACTOR, preferredCurrency),
-                                })}
-                            </Text>
-                        </>
-                    }
-                />
-            </View>
-            <CardAuthenticationModal headerTitle={translate('subscription.authenticatePaymentCard')} />
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton title={translate('subscription.paymentCard.addPaymentCard')} />
+                <View style={styles.containerWithSpaceBetween}>
+                    <PaymentCardForm
+                        shouldShowPaymentCardForm
+                        addPaymentCard={addPaymentCard}
+                        showAcceptTerms
+                        showCurrencyField
+                        currencySelectorRoute={ROUTES.SETTINGS_SUBSCRIPTION_CHANGE_PAYMENT_CURRENCY}
+                        submitButtonText={translate('subscription.paymentCard.addPaymentCard')}
+                        headerContent={<Text style={[styles.textHeadline, styles.mt3, styles.mb2, styles.ph5]}>{translate('subscription.paymentCard.enterPaymentCardDetails')}</Text>}
+                        footerContent={
+                            <>
+                                <Section
+                                    icon={Illustrations.ShieldYellow}
+                                    cardLayout={CARD_LAYOUT.ICON_ON_LEFT}
+                                    iconContainerStyles={styles.mr4}
+                                    containerStyles={[styles.mh0, styles.mt5]}
+                                    renderTitle={() => (
+                                        <Text style={[styles.mutedTextLabel]}>
+                                            {translate('subscription.paymentCard.security')}{' '}
+                                            <TextLink
+                                                style={[styles.mutedTextLabel, styles.link]}
+                                                href={CONST.TERMS_URL}
+                                            >
+                                                {translate('subscription.paymentCard.learnMoreAboutSecurity')}
+                                            </TextLink>
+                                        </Text>
+                                    )}
+                                />
+                                <Text style={[styles.textMicroSupporting, styles.mt3, styles.textAlignCenter, styles.mr5, styles.ml5]}>
+                                    {translate(`subscription.yourPlan.${isCollect ? 'collect' : 'control'}.${isAnnual ? 'priceAnnual' : 'pricePayPerUse'}`, {
+                                        lower: convertToShortDisplayString(subscriptionPrice, preferredCurrency),
+                                        upper: convertToShortDisplayString(subscriptionPrice * CONST.SUBSCRIPTION_PRICE_FACTOR, preferredCurrency),
+                                    })}
+                                </Text>
+                            </>
+                        }
+                    />
+                </View>
+                <CardAuthenticationModal headerTitle={translate('subscription.authenticatePaymentCard')} />
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx b/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx
index d74e126ff94e..561f05b5167e 100644
--- a/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx
+++ b/src/pages/settings/Subscription/RequestEarlyCancellationPage/index.tsx
@@ -2,6 +2,7 @@ import type {ReactNode} from 'react';
 import React, {useMemo, useState} from 'react';
 import {View} from 'react-native';
 import Button from '@components/Button';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import FeedbackSurvey from '@components/FeedbackSurvey';
 import FixedFooter from '@components/FixedFooter';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
@@ -127,11 +128,13 @@ function RequestEarlyCancellationPage() {
             shouldEnablePickerAvoiding={false}
             shouldEnableMaxHeight
         >
-            <HeaderWithBackButton
-                title={translate('subscription.requestEarlyCancellation.title')}
-                onBackButtonPress={Navigation.goBack}
-            />
-            <ScrollView contentContainerStyle={[styles.flexGrow1, styles.pt3]}>{screenContent}</ScrollView>
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('subscription.requestEarlyCancellation.title')}
+                    onBackButtonPress={Navigation.goBack}
+                />
+                <ScrollView contentContainerStyle={[styles.flexGrow1, styles.pt3]}>{screenContent}</ScrollView>
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Subscription/SubscriptionDetails/index.tsx b/src/pages/settings/Subscription/SubscriptionDetails/index.tsx
index a1fddd6c430e..126ae459e723 100644
--- a/src/pages/settings/Subscription/SubscriptionDetails/index.tsx
+++ b/src/pages/settings/Subscription/SubscriptionDetails/index.tsx
@@ -1,7 +1,8 @@
-import React from 'react';
+import React, {useState} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import Badge from '@components/Badge';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import Icon from '@components/Icon';
 import * as Illustrations from '@components/Icon/Illustrations';
 import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
@@ -43,8 +44,14 @@ function SubscriptionDetails() {
     const [privateSubscription] = useOnyx(ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION);
     const [privateTaxExempt] = useOnyx(ONYXKEYS.NVP_PRIVATE_TAX_EXEMPT);
     const [account] = useOnyx(ONYXKEYS.ACCOUNT);
+    const isActingAsDelegate = account?.delegatedAccess?.delegate;
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
     const onOptionSelected = (option: SubscriptionType) => {
+        if (privateSubscription?.type !== option && isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         if (privateSubscription?.type === CONST.SUBSCRIPTION.TYPE.ANNUAL && option === CONST.SUBSCRIPTION.TYPE.PAYPERUSE && !account?.canDowngrade) {
             Navigation.navigate(ROUTES.SETTINGS_SUBSCRIPTION_SIZE.getRoute(0));
             return;
@@ -54,6 +61,10 @@ function SubscriptionDetails() {
     };
 
     const onSubscriptionSizePress = () => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         Navigation.navigate(ROUTES.SETTINGS_SUBSCRIPTION_SIZE.getRoute(1));
     };
 
@@ -118,6 +129,10 @@ function SubscriptionDetails() {
                     {subscriptionSizeSection}
                 </OfflineWithFeedback>
             )}
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </Section>
     );
 }
diff --git a/src/pages/settings/Subscription/SubscriptionSettings/index.tsx b/src/pages/settings/Subscription/SubscriptionSettings/index.tsx
index 247d82ef8ca3..3af05e1ef1cd 100644
--- a/src/pages/settings/Subscription/SubscriptionSettings/index.tsx
+++ b/src/pages/settings/Subscription/SubscriptionSettings/index.tsx
@@ -1,7 +1,8 @@
-import React from 'react';
+import React, {useState} from 'react';
 import type {StyleProp, TextStyle} from 'react-native';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import OfflineWithFeedback from '@components/OfflineWithFeedback';
 import Section from '@components/Section';
 import Text from '@components/Text';
@@ -26,10 +27,16 @@ function SubscriptionSettings() {
     const [privateSubscription] = useOnyx(ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION);
     const preferredCurrency = usePreferredCurrency();
     const possibleCostSavings = useSubscriptionPossibleCostSavings();
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
 
     const autoRenewalDate = formatSubscriptionEndDate(privateSubscription?.endDate);
 
     const handleAutoRenewToggle = () => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         if (!privateSubscription?.autoRenew) {
             Subscription.updateSubscriptionAutoRenew(true);
             return;
@@ -38,6 +45,10 @@ function SubscriptionSettings() {
     };
 
     const handleAutoIncreaseToggle = () => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         Subscription.updateSubscriptionAddNewUsersAutomatically(!privateSubscription?.addNewUsersAutomatically);
     };
 
@@ -85,6 +96,10 @@ function SubscriptionSettings() {
                     <Text style={[styles.mutedTextLabel, styles.mt2]}>{translate('subscription.subscriptionSettings.automaticallyIncrease')}</Text>
                 </View>
             </OfflineWithFeedback>
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </Section>
     );
 }
diff --git a/src/pages/settings/Subscription/SubscriptionSize/index.tsx b/src/pages/settings/Subscription/SubscriptionSize/index.tsx
index 94c6fd5dffd8..71febe24ca4c 100644
--- a/src/pages/settings/Subscription/SubscriptionSize/index.tsx
+++ b/src/pages/settings/Subscription/SubscriptionSize/index.tsx
@@ -1,5 +1,6 @@
 import React, {useEffect} from 'react';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import ScreenWrapper from '@components/ScreenWrapper';
 import useLocalize from '@hooks/useLocalize';
@@ -10,6 +11,7 @@ import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavig
 import type {SettingsNavigatorParamList} from '@navigation/types';
 import * as FormActions from '@userActions/FormActions';
 import * as Subscription from '@userActions/Subscription';
+import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
 import type SCREENS from '@src/SCREENS';
 import INPUT_IDS from '@src/types/form/SubscriptionSizeForm';
@@ -58,15 +60,17 @@ function SubscriptionSizePage({route}: SubscriptionSizePageProps) {
             shouldEnableMaxHeight
             shouldShowOfflineIndicatorInWideScreen
         >
-            <HeaderWithBackButton
-                title={translate('subscription.subscriptionSize.title')}
-                onBackButtonPress={onBackButtonPress}
-            />
-            <SubStep
-                isEditing={canChangeSubscriptionSize}
-                onNext={nextScreen}
-                onMove={moveTo}
-            />
+            <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                <HeaderWithBackButton
+                    title={translate('subscription.subscriptionSize.title')}
+                    onBackButtonPress={onBackButtonPress}
+                />
+                <SubStep
+                    isEditing={canChangeSubscriptionSize}
+                    onNext={nextScreen}
+                    onMove={moveTo}
+                />
+            </DelegateNoAccessWrapper>
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/settings/Subscription/SubscriptionSize/substeps/Size.tsx b/src/pages/settings/Subscription/SubscriptionSize/substeps/Size.tsx
index ed42d604181d..ba589e7827bd 100644
--- a/src/pages/settings/Subscription/SubscriptionSize/substeps/Size.tsx
+++ b/src/pages/settings/Subscription/SubscriptionSize/substeps/Size.tsx
@@ -24,7 +24,7 @@ function Size({onNext}: SizeProps) {
     const [privateSubscription] = useOnyx(ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION);
     const {inputCallbackRef} = useAutoFocusInput();
 
-    const handleSubmit = useStepFormSubmit<typeof ONYXKEYS.FORMS.SUBSCRIPTION_SIZE_FORM>({
+    const updateValuesAndNavigateToNextStep = useStepFormSubmit<typeof ONYXKEYS.FORMS.SUBSCRIPTION_SIZE_FORM>({
         formId: ONYXKEYS.FORMS.SUBSCRIPTION_SIZE_FORM,
         fieldIds: [INPUT_IDS.SUBSCRIPTION_SIZE],
         onNext,
@@ -55,7 +55,7 @@ function Size({onNext}: SizeProps) {
         <FormProvider
             formID={ONYXKEYS.FORMS.SUBSCRIPTION_SIZE_FORM}
             submitButtonText={translate('common.next')}
-            onSubmit={handleSubmit}
+            onSubmit={updateValuesAndNavigateToNextStep}
             validate={validate}
             style={[styles.mh5, styles.flexGrow1]}
             enabledWhenOffline
diff --git a/src/pages/settings/Wallet/WalletPage/WalletPage.tsx b/src/pages/settings/Wallet/WalletPage/WalletPage.tsx
index 6b402e562d3a..e2c1cc017d0a 100644
--- a/src/pages/settings/Wallet/WalletPage/WalletPage.tsx
+++ b/src/pages/settings/Wallet/WalletPage/WalletPage.tsx
@@ -7,6 +7,7 @@ import {ActivityIndicator, Dimensions, View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import AddPaymentMethodMenu from '@components/AddPaymentMethodMenu';
 import ConfirmModal from '@components/ConfirmModal';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import Icon from '@components/Icon';
 import * as Expensicons from '@components/Icon/Expensicons';
@@ -59,6 +60,9 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
     const [walletTerms] = useOnyx(ONYXKEYS.WALLET_TERMS, {initialValue: {}});
     const [isUserValidated] = useOnyx(ONYXKEYS.USER, {selector: (user) => !!user?.validated});
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
+
     const theme = useTheme();
     const styles = useThemeStyles();
     const {translate} = useLocalize();
@@ -179,6 +183,10 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
             setMenuPosition();
             return;
         }
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         setShouldShowAddPaymentMenu(true);
         setMenuPosition();
     };
@@ -510,8 +518,15 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
 
                                                     return (
                                                         <MenuItem
+                                                            title={translate('walletPage.enableWallet')}
+                                                            icon={Expensicons.Wallet}
                                                             ref={buttonRef as ForwardedRef<View>}
                                                             onPress={() => {
+                                                                if (isActingAsDelegate) {
+                                                                    setIsNoDelegateAccessMenuVisible(true);
+                                                                    return;
+                                                                }
+
                                                                 if (!isUserValidated) {
                                                                     Navigation.navigate(
                                                                         ROUTES.SETTINGS_WALLET_VERIFY_ACCOUNT.getRoute(ROUTES.SETTINGS_WALLET, ROUTES.SETTINGS_ENABLE_PAYMENTS),
@@ -521,8 +536,6 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
                                                                 Navigation.navigate(ROUTES.SETTINGS_ENABLE_PAYMENTS);
                                                             }}
                                                             disabled={network.isOffline}
-                                                            title={translate('walletPage.enableWallet')}
-                                                            icon={Expensicons.Wallet}
                                                             wrapperStyle={[
                                                                 styles.transferBalance,
                                                                 shouldUseNarrowLayout ? styles.mhn5 : styles.mhn8,
@@ -567,6 +580,12 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
                                         title={translate('walletPage.setDefaultConfirmation')}
                                         icon={Expensicons.Mail}
                                         onPress={() => {
+                                            if (isActingAsDelegate) {
+                                                Modal.close(() => {
+                                                    setIsNoDelegateAccessMenuVisible(true);
+                                                });
+                                                return;
+                                            }
                                             makeDefaultPaymentMethod();
                                             setShouldShowDefaultDeleteMenu(false);
                                         }}
@@ -576,7 +595,15 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
                                 <MenuItem
                                     title={translate('common.delete')}
                                     icon={Expensicons.Trashcan}
-                                    onPress={() => Modal.close(() => setShowConfirmDeleteModal(true))}
+                                    onPress={() => {
+                                        if (isActingAsDelegate) {
+                                            Modal.close(() => {
+                                                setIsNoDelegateAccessMenuVisible(true);
+                                            });
+                                            return;
+                                        }
+                                        Modal.close(() => setShowConfirmDeleteModal(true));
+                                    }}
                                     wrapperStyle={[styles.pv3, styles.ph5, !shouldUseNarrowLayout ? styles.sidebarPopover : {}]}
                                 />
                             </View>
@@ -585,8 +612,8 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
                     <ConfirmModal
                         isVisible={showConfirmDeleteModal}
                         onConfirm={() => {
-                            deletePaymentMethod();
                             hideDefaultDeleteMenu();
+                            deletePaymentMethod();
                         }}
                         onCancel={hideDefaultDeleteMenu}
                         title={translate('walletPage.deleteAccount')}
@@ -610,6 +637,10 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) {
                 anchorRef={addPaymentMethodAnchorRef}
                 shouldShowPersonalBankAccountOption
             />
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </>
     );
 }
diff --git a/src/pages/workspace/companyCards/WorkspaceCompanyCardPageEmptyState.tsx b/src/pages/workspace/companyCards/WorkspaceCompanyCardPageEmptyState.tsx
index cfea0ace8264..bb154411a46d 100644
--- a/src/pages/workspace/companyCards/WorkspaceCompanyCardPageEmptyState.tsx
+++ b/src/pages/workspace/companyCards/WorkspaceCompanyCardPageEmptyState.tsx
@@ -1,5 +1,7 @@
-import React, {useCallback} from 'react';
+import React, {useCallback, useState} from 'react';
 import {View} from 'react-native';
+import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import FeatureList from '@components/FeatureList';
 import type {FeatureListItem} from '@components/FeatureList';
 import * as Illustrations from '@components/Icon/Illustrations';
@@ -11,6 +13,7 @@ import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullsc
 import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPolicyAndFullscreenLoading';
 import colors from '@styles/theme/colors';
 import * as CompanyCards from '@userActions/CompanyCards';
+import ONYXKEYS from '@src/ONYXKEYS';
 import ROUTES from '@src/ROUTES';
 
 const companyCardFeatures: FeatureListItem[] = [
@@ -33,10 +36,17 @@ function WorkspaceCompanyCardPageEmptyState({policy}: WithPolicyAndFullscreenLoa
     const styles = useThemeStyles();
     const {shouldUseNarrowLayout} = useResponsiveLayout();
 
-    const startFlow = useCallback(() => {
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
+
+    const handleCtaPress = useCallback(() => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         CompanyCards.clearAddNewCardFlow();
         Navigation.navigate(ROUTES.WORKSPACE_COMPANY_CARDS_ADD_NEW.getRoute(policy?.id ?? '-1'));
-    }, [policy]);
+    }, [policy, isActingAsDelegate]);
 
     return (
         <View style={[styles.mt3, shouldUseNarrowLayout ? styles.workspaceSectionMobile : styles.workspaceSection]}>
@@ -46,13 +56,17 @@ function WorkspaceCompanyCardPageEmptyState({policy}: WithPolicyAndFullscreenLoa
                 subtitle={translate('workspace.moreFeatures.companyCards.subtitle')}
                 ctaText={translate('workspace.companyCards.addCards')}
                 ctaAccessibilityLabel={translate('workspace.companyCards.addCards')}
-                onCtaPress={startFlow}
+                onCtaPress={handleCtaPress}
                 illustrationBackgroundColor={colors.blue700}
                 illustration={Illustrations.CompanyCardsEmptyState}
                 illustrationStyle={styles.emptyStateCardIllustration}
                 illustrationContainerStyle={[styles.emptyStateCardIllustrationContainer, styles.justifyContentStart]}
                 titleStyles={styles.textHeadlineH1}
             />
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </View>
     );
 }
diff --git a/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx b/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx
index ac0c493244cf..c6bf358567a7 100644
--- a/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx
+++ b/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx
@@ -1,7 +1,8 @@
 import {useFocusEffect} from '@react-navigation/native';
-import React, {useCallback, useEffect} from 'react';
+import React, {useCallback, useEffect, useState} from 'react';
 import {ActivityIndicator} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import * as Illustrations from '@components/Icon/Illustrations';
 import useLocalize from '@hooks/useLocalize';
 import useNetwork from '@hooks/useNetwork';
@@ -41,6 +42,9 @@ function WorkspaceCompanyCardPage({route}: WorkspaceCompanyCardPageProps) {
     const [cardsList] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${selectedFeed}`);
     const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`);
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
+
     const filteredCardList = CardUtils.getFilteredCardList(cardsList, selectedFeed ? cardFeeds?.settings?.oAuthAccountDetails?.[selectedFeed] : undefined);
 
     const companyCards = CardUtils.removeExpensifyCardFromCompanyCards(cardFeeds);
@@ -67,6 +71,10 @@ function WorkspaceCompanyCardPage({route}: WorkspaceCompanyCardPageProps) {
     }, [selectedFeed, isLoading, policyID, isPending]);
 
     const handleAssignCard = () => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         if (!selectedFeed) {
             return;
         }
@@ -139,6 +147,10 @@ function WorkspaceCompanyCardPage({route}: WorkspaceCompanyCardPageProps) {
                     )}
                 </WorkspacePageWithSections>
             )}
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </AccessOrNotFoundWrapper>
     );
 }
diff --git a/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx b/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx
index 2fef7016df97..7a326b56592e 100644
--- a/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx
+++ b/src/pages/workspace/companyCards/addNew/AddNewCardPage.tsx
@@ -1,5 +1,7 @@
 import React from 'react';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
+import ScreenWrapper from '@components/ScreenWrapper';
 import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullscreenLoading';
 import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPolicyAndFullscreenLoading';
 import CONST from '@src/CONST';
@@ -18,6 +20,19 @@ function AddNewCardPage({policy}: WithPolicyAndFullscreenLoadingProps) {
     const [addNewCardFeed] = useOnyx(ONYXKEYS.ADD_NEW_COMPANY_CARD);
     const {currentStep} = addNewCardFeed ?? {};
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+
+    if (isActingAsDelegate) {
+        return (
+            <ScreenWrapper
+                testID={AddNewCardPage.displayName}
+                includeSafeAreaPaddingBottom={false}
+                shouldEnablePickerAvoiding={false}
+            >
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]} />
+            </ScreenWrapper>
+        );
+    }
     switch (currentStep) {
         case CONST.COMPANY_CARDS.STEP.SELECT_BANK:
             return <SelectBankStep />;
diff --git a/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx b/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx
index 9821910cf00c..1aaace9e37fa 100644
--- a/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx
+++ b/src/pages/workspace/companyCards/assignCard/AssignCardFeedPage.tsx
@@ -1,5 +1,7 @@
 import React, {useEffect} from 'react';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
+import ScreenWrapper from '@components/ScreenWrapper';
 import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
 import type {SettingsNavigatorParamList} from '@navigation/types';
 import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPolicyAndFullscreenLoading';
@@ -23,6 +25,7 @@ function AssignCardFeedPage({route, policy}: AssignCardFeedPageProps) {
     const feed = route.params?.feed;
     const backTo = route.params?.backTo;
     const policyID = policy?.id ?? '-1';
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
 
     useEffect(() => {
         return () => {
@@ -30,6 +33,18 @@ function AssignCardFeedPage({route, policy}: AssignCardFeedPageProps) {
         };
     }, []);
 
+    if (isActingAsDelegate) {
+        return (
+            <ScreenWrapper
+                testID={AssignCardFeedPage.displayName}
+                includeSafeAreaPaddingBottom={false}
+                shouldEnablePickerAvoiding={false}
+            >
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]} />
+            </ScreenWrapper>
+        );
+    }
+
     switch (currentStep) {
         case CONST.COMPANY_CARD.STEP.ASSIGNEE:
             return (
@@ -66,4 +81,5 @@ function AssignCardFeedPage({route, policy}: AssignCardFeedPageProps) {
     }
 }
 
+AssignCardFeedPage.displayName = 'AssignCardFeedPage';
 export default withPolicyAndFullscreenLoading(AssignCardFeedPage);
diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardBankAccounts.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardBankAccounts.tsx
index 654d7717158e..5da459be4a16 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardBankAccounts.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardBankAccounts.tsx
@@ -4,6 +4,7 @@ import {useOnyx} from 'react-native-onyx';
 import BlockingView from '@components/BlockingViews/BlockingView';
 import FullPageOfflineBlockingView from '@components/BlockingViews/FullPageOfflineBlockingView';
 import Button from '@components/Button';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import getBankIcon from '@components/Icon/BankIcons';
 import * as Expensicons from '@components/Icon/Expensicons';
@@ -188,25 +189,27 @@ function WorkspaceExpensifyCardBankAccounts({route}: WorkspaceExpensifyCardBankA
                 shouldEnablePickerAvoiding={false}
                 shouldShowOfflineIndicator={false}
             >
-                <HeaderWithBackButton
-                    shouldShowBackButton
-                    onBackButtonPress={() => Navigation.goBack()}
-                    title={getHeaderButtonText()}
-                />
-                {isInVerificationState && renderVerificationStateView()}
-                {!isInVerificationState && (
-                    <FullPageOfflineBlockingView>
-                        <View style={styles.flex1}>
-                            <Text style={[styles.mh5, styles.mb3]}>{translate('workspace.expensifyCard.chooseExistingBank')}</Text>
-                            {renderBankOptions()}
-                            <MenuItem
-                                icon={Expensicons.Plus}
-                                title={translate('workspace.expensifyCard.addNewBankAccount')}
-                                onPress={handleAddBankAccount}
-                            />
-                        </View>
-                    </FullPageOfflineBlockingView>
-                )}
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]}>
+                    <HeaderWithBackButton
+                        shouldShowBackButton
+                        onBackButtonPress={() => Navigation.goBack()}
+                        title={getHeaderButtonText()}
+                    />
+                    {isInVerificationState && renderVerificationStateView()}
+                    {!isInVerificationState && (
+                        <FullPageOfflineBlockingView>
+                            <View style={styles.flex1}>
+                                <Text style={[styles.mh5, styles.mb3]}>{translate('workspace.expensifyCard.chooseExistingBank')}</Text>
+                                {renderBankOptions()}
+                                <MenuItem
+                                    icon={Expensicons.Plus}
+                                    title={translate('workspace.expensifyCard.addNewBankAccount')}
+                                    onPress={handleAddBankAccount}
+                                />
+                            </View>
+                        </FullPageOfflineBlockingView>
+                    )}
+                </DelegateNoAccessWrapper>
             </ScreenWrapper>
         </AccessOrNotFoundWrapper>
     );
diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx
index 200d84724bae..0e4519b578e6 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx
@@ -1,9 +1,10 @@
-import React, {useCallback, useMemo} from 'react';
+import React, {useCallback, useMemo, useState} from 'react';
 import type {ListRenderItemInfo} from 'react-native';
 import {FlatList, View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import type {OnyxEntry} from 'react-native-onyx';
 import Button from '@components/Button';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
 import * as Expensicons from '@components/Icon/Expensicons';
 import * as Illustrations from '@components/Icon/Illustrations';
@@ -49,13 +50,20 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa
     const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
     const [cardOnWaitlist] = useOnyx(`${ONYXKEYS.COLLECTION.NVP_EXPENSIFY_ON_CARD_WAITLIST}${policyID}`);
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
+
     const isBankAccountVerified = !cardOnWaitlist;
 
     const policyCurrency = useMemo(() => policy?.outputCurrency ?? CONST.CURRENCY.USD, [policy]);
 
     const sortedCards = useMemo(() => CardUtils.sortCardsByCardholderName(cardsList, personalDetails), [cardsList, personalDetails]);
 
-    const issueCard = () => {
+    const handleIssueCardPress = () => {
+        if (isActingAsDelegate) {
+            setIsNoDelegateAccessMenuVisible(true);
+            return;
+        }
         const activeRoute = Navigation.getActiveRoute();
         Navigation.navigate(ROUTES.WORKSPACE_EXPENSIFY_CARD_ISSUE_NEW.getRoute(policyID, activeRoute));
     };
@@ -64,7 +72,7 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa
         <View style={[styles.w100, styles.flexRow, styles.gap2, shouldUseNarrowLayout && styles.mb3]}>
             <Button
                 success
-                onPress={issueCard}
+                onPress={handleIssueCardPress}
                 icon={Expensicons.Plus}
                 text={translate('workspace.expensifyCard.issueCard')}
                 style={shouldUseNarrowLayout && styles.flex1}
@@ -135,6 +143,10 @@ function WorkspaceExpensifyCardListPage({route, cardsList}: WorkspaceExpensifyCa
                     ListHeaderComponent={renderListHeader}
                 />
             )}
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </ScreenWrapper>
     );
 }
diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardPageEmptyState.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardPageEmptyState.tsx
index 95491a3196ca..a7dd15d7c9a5 100644
--- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardPageEmptyState.tsx
+++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardPageEmptyState.tsx
@@ -2,6 +2,7 @@ import React, {useCallback, useState} from 'react';
 import {View} from 'react-native';
 import {useOnyx} from 'react-native-onyx';
 import ConfirmModal from '@components/ConfirmModal';
+import DelegateNoAccessModal from '@components/DelegateNoAccessModal';
 import FeatureList from '@components/FeatureList';
 import type {FeatureListItem} from '@components/FeatureList';
 import * as Illustrations from '@components/Icon/Illustrations';
@@ -52,6 +53,9 @@ function WorkspaceExpensifyCardPageEmptyState({route, policy}: WorkspaceExpensif
     const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT);
     const [isCurrencyModalOpen, setIsCurrencyModalOpen] = useState(false);
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+    const [isNoDelegateAccessMenuVisible, setIsNoDelegateAccessMenuVisible] = useState(false);
+
     const eligibleBankAccounts = CardUtils.getEligibleBankAccountsForCard(bankAccountList ?? {});
 
     const reimbursementAccountStatus = reimbursementAccount?.achData?.state ?? '';
@@ -92,6 +96,10 @@ function WorkspaceExpensifyCardPageEmptyState({route, policy}: WorkspaceExpensif
                     ctaText={translate(isSetupUnfinished ? 'workspace.expensifyCard.finishSetup' : 'workspace.expensifyCard.issueNewCard')}
                     ctaAccessibilityLabel={translate('workspace.moreFeatures.expensifyCard.feed.ctaTitle')}
                     onCtaPress={() => {
+                        if (isActingAsDelegate) {
+                            setIsNoDelegateAccessMenuVisible(true);
+                            return;
+                        }
                         if (!Policy.isCurrencySupportedForDirectReimbursement(policy?.outputCurrency ?? '')) {
                             setIsCurrencyModalOpen(true);
                             return;
@@ -115,6 +123,10 @@ function WorkspaceExpensifyCardPageEmptyState({route, policy}: WorkspaceExpensif
                 />
                 <Text style={[styles.textMicroSupporting, styles.m5]}>{translate('workspace.expensifyCard.disclaimer')}</Text>
             </View>
+            <DelegateNoAccessModal
+                isNoDelegateAccessMenuVisible={isNoDelegateAccessMenuVisible}
+                onClose={() => setIsNoDelegateAccessMenuVisible(false)}
+            />
         </WorkspacePageWithSections>
     );
 }
diff --git a/src/pages/workspace/expensifyCard/issueNew/IssueNewCardPage.tsx b/src/pages/workspace/expensifyCard/issueNew/IssueNewCardPage.tsx
index 47849470bca6..2c9fbd1d193e 100644
--- a/src/pages/workspace/expensifyCard/issueNew/IssueNewCardPage.tsx
+++ b/src/pages/workspace/expensifyCard/issueNew/IssueNewCardPage.tsx
@@ -1,5 +1,7 @@
 import React, {useEffect} from 'react';
 import {useOnyx} from 'react-native-onyx';
+import DelegateNoAccessWrapper from '@components/DelegateNoAccessWrapper';
+import ScreenWrapper from '@components/ScreenWrapper';
 import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
 import type {SettingsNavigatorParamList} from '@navigation/types';
 import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
@@ -26,6 +28,8 @@ function IssueNewCardPage({policy, route}: IssueNewCardPageProps) {
     const policyID = policy?.id ?? '-1';
     const backTo = route?.params?.backTo;
 
+    const [isActingAsDelegate] = useOnyx(ONYXKEYS.ACCOUNT, {selector: (account) => !!account?.delegatedAccess?.delegate});
+
     useEffect(() => {
         Card.startIssueNewCardFlow(policyID);
     }, [policyID]);
@@ -60,6 +64,18 @@ function IssueNewCardPage({policy, route}: IssueNewCardPageProps) {
         }
     };
 
+    if (isActingAsDelegate) {
+        return (
+            <ScreenWrapper
+                testID={IssueNewCardPage.displayName}
+                includeSafeAreaPaddingBottom={false}
+                shouldEnablePickerAvoiding={false}
+            >
+                <DelegateNoAccessWrapper accessDeniedVariants={[CONST.DELEGATE.DENIED_ACCESS_VARIANTS.DELEGATE]} />
+            </ScreenWrapper>
+        );
+    }
+
     return (
         <AccessOrNotFoundWrapper
             accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]}
