From c6404e63eeabdc5dc9a68c7977ede18586f82231 Mon Sep 17 00:00:00 2001
From: daledah <daleda261@outlook.com>
Date: Thu, 16 Oct 2025 23:25:58 +0700
Subject: [PATCH 1/4] fix: correct autosync navigation for QBD and Sage Intacct
 in card reconciliation page

---
 src/ROUTES.ts                                        |  8 ++++----
 .../intacct/advanced/SageIntacctAutoSyncPage.tsx     | 10 ++++++++--
 .../qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx   | 12 +++++++++---
 .../reconciliation/CardReconciliationPage.tsx        |  4 ++--
 4 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index 3576054384f2..ea00e03820ba 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -1439,12 +1439,12 @@ const ROUTES = {
     },
     POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_AUTO_SYNC: {
         route: 'workspaces/:policyID/accounting/quickbooks-desktop/advanced/autosync',
-        getRoute: (policyID?: string) => {
+        getRoute: (policyID?: string, backTo?: string) => {
             if (!policyID) {
                 Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_AUTO_SYNC route');
             }
 
-            return `workspaces/${policyID}/accounting/quickbooks-desktop/advanced/autosync` as const;
+            return getUrlWithBackToParam(`workspaces/${policyID}/accounting/quickbooks-desktop/advanced/autosync` as const, backTo);
         },
     },
     POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_ACCOUNTING_METHOD: {
@@ -3175,11 +3175,11 @@ const ROUTES = {
     },
     POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC: {
         route: 'workspaces/:policyID/accounting/sage-intacct/advanced/autosync',
-        getRoute: (policyID: string | undefined) => {
+        getRoute: (policyID: string | undefined, backTo?: string) => {
             if (!policyID) {
                 Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC route');
             }
-            return `workspaces/${policyID}/accounting/sage-intacct/advanced/autosync` as const;
+            return getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/advanced/autosync` as const, backTo);
         },
     },
     POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD: {
diff --git a/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx b/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx
index 873c2e21420b..bceef0b4f27f 100644
--- a/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx
+++ b/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx
@@ -16,8 +16,13 @@ import {clearSageIntacctErrorField} from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import type {TranslationPaths} from '@src/languages/types';
 import ROUTES from '@src/ROUTES';
+import type {Route} from '@src/ROUTES';
 
-function SageIntacctAutoSyncPage({policy}: WithPolicyConnectionsProps) {
+type SageIntacctAutoSyncPageRouteParams = {
+    backTo?: Route;
+};
+
+function SageIntacctAutoSyncPage({policy, route}: WithPolicyConnectionsProps) {
     const styles = useThemeStyles();
     const {translate} = useLocalize();
     const policyID = policy?.id;
@@ -25,9 +30,10 @@ function SageIntacctAutoSyncPage({policy}: WithPolicyConnectionsProps) {
     const {autoSync, pendingFields} = config ?? {};
     const accountingMethod = config?.export?.accountingMethod ?? COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH;
     const pendingAction = settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC], pendingFields) ?? settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.ACCOUNTING_METHOD], pendingFields);
+    const {backTo} = route.params as SageIntacctAutoSyncPageRouteParams;
 
     const goBack = useCallback(() => {
-        Navigation.goBack(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID));
+        Navigation.goBack(backTo ?? ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID));
     }, [policyID]);
 
     return (
diff --git a/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx b/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx
index ebec7d9869d9..c72082f43b73 100644
--- a/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx
+++ b/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx
@@ -16,8 +16,13 @@ import {clearQBDErrorField} from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import type {TranslationPaths} from '@src/languages/types';
 import ROUTES from '@src/ROUTES';
+import type {Route} from '@src/ROUTES';
 
-function QuickbooksDesktopAutoSyncPage({policy}: WithPolicyConnectionsProps) {
+type QuickbooksDesktopAutoSyncPageRouteParams = {
+    backTo?: Route;
+};
+
+function QuickbooksDesktopAutoSyncPage({policy, route}: WithPolicyConnectionsProps) {
     const styles = useThemeStyles();
     const {translate} = useLocalize();
     const policyID = policy?.id;
@@ -26,10 +31,11 @@ function QuickbooksDesktopAutoSyncPage({policy}: WithPolicyConnectionsProps) {
     const accountingMethod = config?.export?.accountingMethod ?? COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH;
     const pendingAction =
         settingsPendingAction([CONST.QUICKBOOKS_DESKTOP_CONFIG.AUTO_SYNC], pendingFields) ?? settingsPendingAction([CONST.QUICKBOOKS_DESKTOP_CONFIG.ACCOUNTING_METHOD], pendingFields);
+    const {backTo} = route.params as QuickbooksDesktopAutoSyncPageRouteParams;
 
     const goBack = useCallback(() => {
-        Navigation.goBack(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_DESKTOP_ADVANCED.getRoute(policyID));
-    }, [policyID]);
+        Navigation.goBack(backTo ?? ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_DESKTOP_ADVANCED.getRoute(policyID));
+    }, [policyID, backTo]);
 
     return (
         <ConnectionLayout
diff --git a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
index 59bba9ff911c..7d525d2e6e01 100644
--- a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
+++ b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
@@ -101,9 +101,9 @@ function CardReconciliationPage({policy, route}: CardReconciliationPageProps) {
             case CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE:
                 return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_NETSUITE_AUTO_SYNC.getRoute(policyID, backTo)}`;
             case CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT:
-                return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID)}`;
+                return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.getRoute(policyID, backTo)}`;
             case CONST.POLICY.CONNECTIONS.ROUTE.QBD:
-                return `${environmentURL}/${ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_DESKTOP_ADVANCED.getRoute(policyID, backTo)}`;
+                return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_AUTO_SYNC.getRoute(policyID, backTo)}`;
             default:
                 return '';
         }

From 7da6f1c0a996ba1c0b98b5ee6df24579b8327e86 Mon Sep 17 00:00:00 2001
From: daledah <daleda261@outlook.com>
Date: Fri, 17 Oct 2025 00:52:01 +0700
Subject: [PATCH 2/4] fix lint

---
 src/ROUTES.ts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index ea00e03820ba..857b1acd9954 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -1444,6 +1444,7 @@ const ROUTES = {
                 Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_AUTO_SYNC route');
             }
 
+            // eslint-disable-next-line no-restricted-syntax
             return getUrlWithBackToParam(`workspaces/${policyID}/accounting/quickbooks-desktop/advanced/autosync` as const, backTo);
         },
     },
@@ -3179,6 +3180,7 @@ const ROUTES = {
             if (!policyID) {
                 Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC route');
             }
+            // eslint-disable-next-line no-restricted-syntax
             return getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/advanced/autosync` as const, backTo);
         },
     },

From c8df6230d2331e57bed675561d90c2422f8241b0 Mon Sep 17 00:00:00 2001
From: daledah <daleda261@outlook.com>
Date: Tue, 28 Oct 2025 16:29:13 +0700
Subject: [PATCH 3/4] fix: replace backTo usage

---
 src/ROUTES.ts                                 | 33 ++++++-
 src/SCREENS.ts                                |  2 +
 src/components/ConnectionLayout.tsx           |  2 +-
 .../ModalStackNavigators/index.tsx            |  4 +
 src/libs/Navigation/linkingConfig/config.ts   |  6 ++
 .../advanced/SageIntacctAutoSyncPage.tsx      | 80 +----------------
 .../advanced/SageIntacctAutoSyncPageBase.tsx  | 85 ++++++++++++++++++
 .../QuickbooksDesktopAutoSyncPage.tsx         | 86 +-----------------
 .../QuickbooksDesktopAutoSyncPageBase.tsx     | 90 +++++++++++++++++++
 .../reconciliation/CardReconciliationPage.tsx |  4 +-
 ...ciliationQuickbooksDesktopAutoSyncPage.tsx | 20 +++++
 ...dReconciliationSageIntacctAutoSyncPage.tsx | 20 +++++
 12 files changed, 267 insertions(+), 165 deletions(-)
 create mode 100644 src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPageBase.tsx
 create mode 100644 src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPageBase.tsx
 create mode 100644 src/pages/workspace/accounting/reconciliation/CardReconciliationQuickbooksDesktopAutoSyncPage.tsx
 create mode 100644 src/pages/workspace/accounting/reconciliation/CardReconciliationSageIntacctAutoSyncPage.tsx

diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index b57cc2fa6896..8d609d75e6bf 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -1439,13 +1439,32 @@ const ROUTES = {
     },
     POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_AUTO_SYNC: {
         route: 'workspaces/:policyID/accounting/quickbooks-desktop/advanced/autosync',
-        getRoute: (policyID?: string, backTo?: string) => {
+        getRoute: (policyID?: string) => {
             if (!policyID) {
                 Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_AUTO_SYNC route');
             }
 
-            // eslint-disable-next-line no-restricted-syntax
-            return getUrlWithBackToParam(`workspaces/${policyID}/accounting/quickbooks-desktop/advanced/autosync` as const, backTo);
+            return `workspaces/${policyID}/accounting/quickbooks-desktop/advanced/autosync` as const;
+        },
+    },
+    POLICY_ACCOUNTING_CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC: {
+        route: 'workspaces/:policyID/accounting/quickbooks-desktop/card-reconciliation/autosync',
+        getRoute: (policyID?: string) => {
+            if (!policyID) {
+                Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC route');
+            }
+
+            return `workspaces/${policyID}/accounting/quickbooks-desktop/card-reconciliation/autosync` as const;
+        },
+    },
+    POLICY_ACCOUNTING_CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC: {
+        route: 'workspaces/:policyID/accounting/sage-intacct/card-reconciliation/autosync',
+        getRoute: (policyID?: string) => {
+            if (!policyID) {
+                Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC route');
+            }
+
+            return `workspaces/${policyID}/accounting/sage-intacct/card-reconciliation/autosync` as const;
         },
     },
     POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_ACCOUNTING_METHOD: {
@@ -1736,7 +1755,13 @@ const ROUTES = {
     },
     WORKSPACE_ACCOUNTING_CARD_RECONCILIATION: {
         route: 'workspaces/:policyID/accounting/:connection/card-reconciliation',
-        getRoute: (policyID: string, connection?: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) => `workspaces/${policyID}/accounting/${connection as string}/card-reconciliation` as const,
+        getRoute: (policyID?: string, connection?: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) => {
+            if (!policyID) {
+                Log.warn('Invalid policyID is used to build the WORKSPACE_ACCOUNTING_CARD_RECONCILIATION route');
+            }
+
+            return `workspaces/${policyID}/accounting/${connection as string}/card-reconciliation` as const;
+        },
     },
     WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS: {
         route: 'workspaces/:policyID/accounting/:connection/card-reconciliation/account',
diff --git a/src/SCREENS.ts b/src/SCREENS.ts
index c669b6f24988..e193ada35b73 100644
--- a/src/SCREENS.ts
+++ b/src/SCREENS.ts
@@ -549,6 +549,8 @@ const SCREENS = {
             SAGE_INTACCT_ACCOUNTING_METHOD: 'Policy_Accounting_Sage_Intacct_Accounting_Method',
             SAGE_INTACCT_PAYMENT_ACCOUNT: 'Policy_Accounting_Sage_Intacct_Payment_Account',
             CARD_RECONCILIATION: 'Policy_Accounting_Card_Reconciliation',
+            CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC: 'Policy_Accounting_Card_Reconciliation_Quickbooks_Desktop_Auto_Sync',
+            CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC: 'Policy_Accounting_Card_Reconciliation_Sage_Intacct_Auto_Sync',
             RECONCILIATION_ACCOUNT_SETTINGS: 'Policy_Accounting_Reconciliation_Account_Settings',
         },
         INITIAL: 'Workspace_Initial',
diff --git a/src/components/ConnectionLayout.tsx b/src/components/ConnectionLayout.tsx
index b593caa8d5f8..bb0c3d4e76c5 100644
--- a/src/components/ConnectionLayout.tsx
+++ b/src/components/ConnectionLayout.tsx
@@ -130,7 +130,7 @@ function ConnectionLayout({
             policyID={policyID}
             accessVariants={accessVariants}
             featureName={featureName}
-            shouldBeBlocked={!!shouldBeBlocked || shouldBlockByConnection}
+            shouldBeBlocked={!!shouldBeBlocked && shouldBlockByConnection}
         >
             <ScreenWrapper
                 enableEdgeToEdgeBottomSafeAreaPadding
diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
index ae3fb6eb55b4..ead8f5f06f38 100644
--- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
+++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
@@ -667,6 +667,10 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
     [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PAYMENT_ACCOUNT]: () =>
         require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/advanced/SageIntacctPaymentAccountPage').default,
     [SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/reconciliation/CardReconciliationPage').default,
+    [SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC]: () =>
+        require<ReactComponentModule>('../../../../pages/workspace/accounting/reconciliation/CardReconciliationQuickbooksDesktopAutoSyncPage').default,
+    [SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC]: () =>
+        require<ReactComponentModule>('../../../../pages/workspace/accounting/reconciliation/CardReconciliationSageIntacctAutoSyncPage').default,
     [SCREENS.WORKSPACE.ACCOUNTING.RECONCILIATION_ACCOUNT_SETTINGS]: () =>
         require<ReactComponentModule>('../../../../pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage').default,
     [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_FREQUENCY]: () => require<ReactComponentModule>('../../../../pages/workspace/workflows/WorkspaceAutoReportingFrequencyPage').default,
diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts
index 0cebfcc3783b..c767ea851358 100644
--- a/src/libs/Navigation/linkingConfig/config.ts
+++ b/src/libs/Navigation/linkingConfig/config.ts
@@ -656,6 +656,12 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
                         [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ACCOUNTING_METHOD]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.route},
                         [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PAYMENT_ACCOUNT]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PAYMENT_ACCOUNT.route},
                         [SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION]: {path: ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.route},
+                        [SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC]: {
+                            path: ROUTES.POLICY_ACCOUNTING_CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC.route,
+                        },
+                        [SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC]: {
+                            path: ROUTES.POLICY_ACCOUNTING_CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC.route,
+                        },
                         [SCREENS.WORKSPACE.ACCOUNTING.RECONCILIATION_ACCOUNT_SETTINGS]: {path: ROUTES.WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS.route},
                         [SCREENS.WORKSPACE.DESCRIPTION]: {
                             path: ROUTES.WORKSPACE_OVERVIEW_DESCRIPTION.route,
diff --git a/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx b/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx
index bceef0b4f27f..012222b5b4c1 100644
--- a/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx
+++ b/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage.tsx
@@ -1,82 +1,10 @@
-import {CONST as COMMON_CONST} from 'expensify-common';
-import React, {useCallback} from 'react';
-import ConnectionLayout from '@components/ConnectionLayout';
-import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
-import OfflineWithFeedback from '@components/OfflineWithFeedback';
-import useLocalize from '@hooks/useLocalize';
-import useThemeStyles from '@hooks/useThemeStyles';
-import {updateSageIntacctAutoSync} from '@libs/actions/connections/SageIntacct';
-import {getLatestErrorField} from '@libs/ErrorUtils';
-import Navigation from '@libs/Navigation/Navigation';
-import {settingsPendingAction} from '@libs/PolicyUtils';
+import React from 'react';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
-import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
-import {clearSageIntacctErrorField} from '@userActions/Policy/Policy';
-import CONST from '@src/CONST';
-import type {TranslationPaths} from '@src/languages/types';
-import ROUTES from '@src/ROUTES';
-import type {Route} from '@src/ROUTES';
+import SageIntacctAutoSyncPageBase from './SageIntacctAutoSyncPageBase';
 
-type SageIntacctAutoSyncPageRouteParams = {
-    backTo?: Route;
-};
-
-function SageIntacctAutoSyncPage({policy, route}: WithPolicyConnectionsProps) {
-    const styles = useThemeStyles();
-    const {translate} = useLocalize();
-    const policyID = policy?.id;
-    const config = policy?.connections?.intacct?.config;
-    const {autoSync, pendingFields} = config ?? {};
-    const accountingMethod = config?.export?.accountingMethod ?? COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH;
-    const pendingAction = settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC], pendingFields) ?? settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.ACCOUNTING_METHOD], pendingFields);
-    const {backTo} = route.params as SageIntacctAutoSyncPageRouteParams;
-
-    const goBack = useCallback(() => {
-        Navigation.goBack(backTo ?? ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID));
-    }, [policyID]);
-
-    return (
-        <ConnectionLayout
-            displayName={SageIntacctAutoSyncPage.displayName}
-            headerTitle="common.settings"
-            accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]}
-            policyID={policyID}
-            featureName={CONST.POLICY.MORE_FEATURES.ARE_CATEGORIES_ENABLED}
-            contentContainerStyle={styles.pb2}
-            titleStyle={styles.ph5}
-            connectionName={CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT}
-            onBackButtonPress={goBack}
-        >
-            <ToggleSettingOptionRow
-                key={translate('workspace.sageIntacct.autoSync')}
-                title={translate('workspace.sageIntacct.autoSync')}
-                subtitle={translate('workspace.sageIntacct.autoSyncDescription')}
-                switchAccessibilityLabel={translate('workspace.sageIntacct.autoSyncDescription')}
-                isActive={!!autoSync?.enabled}
-                wrapperStyle={[styles.pv2, styles.mh5]}
-                shouldPlaceSubtitleBelowSwitch
-                onToggle={() => updateSageIntacctAutoSync(policyID, !autoSync?.enabled)}
-                pendingAction={settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED], pendingFields)}
-                errors={getLatestErrorField(config ?? {}, CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED)}
-                onCloseError={() => clearSageIntacctErrorField(policyID, CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED)}
-            />
-            {!!autoSync?.enabled && (
-                <OfflineWithFeedback pendingAction={pendingAction}>
-                    <MenuItemWithTopDescription
-                        title={
-                            accountingMethod === COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL
-                                ? translate(`workspace.sageIntacct.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL}` as TranslationPaths)
-                                : translate(`workspace.sageIntacct.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH}` as TranslationPaths)
-                        }
-                        description={translate('workspace.sageIntacct.accountingMethods.label')}
-                        shouldShowRightIcon
-                        onPress={() => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.getRoute(policyID))}
-                    />
-                </OfflineWithFeedback>
-            )}
-        </ConnectionLayout>
-    );
+function SageIntacctAutoSyncPage({policy}: WithPolicyConnectionsProps) {
+    return <SageIntacctAutoSyncPageBase policy={policy} />;
 }
 
 SageIntacctAutoSyncPage.displayName = 'SageIntacctAutoSyncPage';
diff --git a/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPageBase.tsx b/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPageBase.tsx
new file mode 100644
index 000000000000..60485d588ce4
--- /dev/null
+++ b/src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPageBase.tsx
@@ -0,0 +1,85 @@
+import {CONST as COMMON_CONST} from 'expensify-common';
+import React, {useCallback} from 'react';
+import type {OnyxEntry} from 'react-native-onyx';
+import ConnectionLayout from '@components/ConnectionLayout';
+import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
+import OfflineWithFeedback from '@components/OfflineWithFeedback';
+import useLocalize from '@hooks/useLocalize';
+import useThemeStyles from '@hooks/useThemeStyles';
+import {updateSageIntacctAutoSync} from '@libs/actions/connections/SageIntacct';
+import {getLatestErrorField} from '@libs/ErrorUtils';
+import Navigation from '@libs/Navigation/Navigation';
+import {settingsPendingAction} from '@libs/PolicyUtils';
+import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
+import {clearSageIntacctErrorField} from '@userActions/Policy/Policy';
+import CONST from '@src/CONST';
+import type {TranslationPaths} from '@src/languages/types';
+import ROUTES from '@src/ROUTES';
+import type {Route} from '@src/ROUTES';
+import type {Policy} from '@src/types/onyx';
+
+type SageIntacctAutoSyncPageBaseParams = {
+    policy: OnyxEntry<Policy>;
+    navigateBackTo?: Route;
+};
+
+function SageIntacctAutoSyncPageBase({policy, navigateBackTo}: SageIntacctAutoSyncPageBaseParams) {
+    const styles = useThemeStyles();
+    const {translate} = useLocalize();
+    const policyID = policy?.id;
+    const config = policy?.connections?.intacct?.config;
+    const {autoSync, pendingFields} = config ?? {};
+    const accountingMethod = config?.export?.accountingMethod ?? COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH;
+    const pendingAction = settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC], pendingFields) ?? settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.ACCOUNTING_METHOD], pendingFields);
+
+    const goBack = useCallback(() => {
+        Navigation.goBack(navigateBackTo ?? ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID));
+    }, [navigateBackTo, policyID]);
+
+    return (
+        <ConnectionLayout
+            displayName={SageIntacctAutoSyncPageBase.displayName}
+            headerTitle="common.settings"
+            accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]}
+            policyID={policyID}
+            featureName={CONST.POLICY.MORE_FEATURES.ARE_CATEGORIES_ENABLED}
+            contentContainerStyle={styles.pb2}
+            titleStyle={styles.ph5}
+            connectionName={CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT}
+            onBackButtonPress={goBack}
+            shouldBeBlocked={false}
+        >
+            <ToggleSettingOptionRow
+                key={translate('workspace.sageIntacct.autoSync')}
+                title={translate('workspace.sageIntacct.autoSync')}
+                subtitle={translate('workspace.sageIntacct.autoSyncDescription')}
+                switchAccessibilityLabel={translate('workspace.sageIntacct.autoSyncDescription')}
+                isActive={!!autoSync?.enabled}
+                wrapperStyle={[styles.pv2, styles.mh5]}
+                shouldPlaceSubtitleBelowSwitch
+                onToggle={() => updateSageIntacctAutoSync(policyID, !autoSync?.enabled)}
+                pendingAction={settingsPendingAction([CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED], pendingFields)}
+                errors={getLatestErrorField(config ?? {}, CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED)}
+                onCloseError={() => clearSageIntacctErrorField(policyID, CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED)}
+            />
+            {!!autoSync?.enabled && (
+                <OfflineWithFeedback pendingAction={pendingAction}>
+                    <MenuItemWithTopDescription
+                        title={
+                            accountingMethod === COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL
+                                ? translate(`workspace.sageIntacct.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL}` as TranslationPaths)
+                                : translate(`workspace.sageIntacct.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH}` as TranslationPaths)
+                        }
+                        description={translate('workspace.sageIntacct.accountingMethods.label')}
+                        shouldShowRightIcon
+                        onPress={() => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.getRoute(policyID))}
+                    />
+                </OfflineWithFeedback>
+            )}
+        </ConnectionLayout>
+    );
+}
+
+SageIntacctAutoSyncPageBase.displayName = 'SageIntacctAutoSyncPageBase';
+
+export default SageIntacctAutoSyncPageBase;
diff --git a/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx b/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx
index c72082f43b73..585b8809d83f 100644
--- a/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx
+++ b/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPage.tsx
@@ -1,88 +1,10 @@
-import {CONST as COMMON_CONST} from 'expensify-common';
-import React, {useCallback} from 'react';
-import ConnectionLayout from '@components/ConnectionLayout';
-import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
-import OfflineWithFeedback from '@components/OfflineWithFeedback';
-import useLocalize from '@hooks/useLocalize';
-import useThemeStyles from '@hooks/useThemeStyles';
-import {updateQuickbooksDesktopAutoSync} from '@libs/actions/connections/QuickbooksDesktop';
-import {getLatestErrorField} from '@libs/ErrorUtils';
-import Navigation from '@libs/Navigation/Navigation';
-import {settingsPendingAction} from '@libs/PolicyUtils';
+import React from 'react';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
-import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
-import {clearQBDErrorField} from '@userActions/Policy/Policy';
-import CONST from '@src/CONST';
-import type {TranslationPaths} from '@src/languages/types';
-import ROUTES from '@src/ROUTES';
-import type {Route} from '@src/ROUTES';
+import QuickbooksDesktopAutoSyncPageBase from './QuickbooksDesktopAutoSyncPageBase';
 
-type QuickbooksDesktopAutoSyncPageRouteParams = {
-    backTo?: Route;
-};
-
-function QuickbooksDesktopAutoSyncPage({policy, route}: WithPolicyConnectionsProps) {
-    const styles = useThemeStyles();
-    const {translate} = useLocalize();
-    const policyID = policy?.id;
-    const config = policy?.connections?.quickbooksDesktop?.config;
-    const {autoSync, pendingFields} = config ?? {};
-    const accountingMethod = config?.export?.accountingMethod ?? COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH;
-    const pendingAction =
-        settingsPendingAction([CONST.QUICKBOOKS_DESKTOP_CONFIG.AUTO_SYNC], pendingFields) ?? settingsPendingAction([CONST.QUICKBOOKS_DESKTOP_CONFIG.ACCOUNTING_METHOD], pendingFields);
-    const {backTo} = route.params as QuickbooksDesktopAutoSyncPageRouteParams;
-
-    const goBack = useCallback(() => {
-        Navigation.goBack(backTo ?? ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_DESKTOP_ADVANCED.getRoute(policyID));
-    }, [policyID, backTo]);
-
-    return (
-        <ConnectionLayout
-            displayName={QuickbooksDesktopAutoSyncPage.displayName}
-            headerTitle="common.settings"
-            accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]}
-            policyID={policyID}
-            featureName={CONST.POLICY.MORE_FEATURES.ARE_CATEGORIES_ENABLED}
-            contentContainerStyle={styles.pb2}
-            titleStyle={styles.ph5}
-            connectionName={CONST.POLICY.CONNECTIONS.NAME.QBD}
-            onBackButtonPress={goBack}
-        >
-            <ToggleSettingOptionRow
-                key={translate('workspace.accounting.autoSync')}
-                title={translate('workspace.accounting.autoSync')}
-                subtitle={translate('workspace.qbd.advancedConfig.autoSyncDescription')}
-                switchAccessibilityLabel={translate('workspace.qbd.advancedConfig.autoSyncDescription')}
-                isActive={!!autoSync?.enabled}
-                wrapperStyle={[styles.pv2, styles.mh5]}
-                shouldPlaceSubtitleBelowSwitch
-                onToggle={() => {
-                    if (!policyID) {
-                        return;
-                    }
-                    updateQuickbooksDesktopAutoSync(policyID, !autoSync?.enabled);
-                }}
-                pendingAction={pendingAction}
-                errors={getLatestErrorField(config ?? {}, CONST.QUICKBOOKS_DESKTOP_CONFIG.AUTO_SYNC_ENABLED)}
-                onCloseError={() => clearQBDErrorField(policyID, CONST.QUICKBOOKS_DESKTOP_CONFIG.AUTO_SYNC_ENABLED)}
-            />
-            {!!autoSync?.enabled && (
-                <OfflineWithFeedback pendingAction={pendingAction}>
-                    <MenuItemWithTopDescription
-                        title={
-                            accountingMethod === COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL
-                                ? translate(`workspace.qbd.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL}` as TranslationPaths)
-                                : translate(`workspace.qbd.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH}` as TranslationPaths)
-                        }
-                        description={translate('workspace.qbd.accountingMethods.label')}
-                        shouldShowRightIcon
-                        onPress={() => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_ACCOUNTING_METHOD.getRoute(policyID))}
-                    />
-                </OfflineWithFeedback>
-            )}
-        </ConnectionLayout>
-    );
+function QuickbooksDesktopAutoSyncPage({policy}: WithPolicyConnectionsProps) {
+    return <QuickbooksDesktopAutoSyncPageBase policy={policy} />;
 }
 
 QuickbooksDesktopAutoSyncPage.displayName = 'QuickbooksDesktopAutoSyncPage';
diff --git a/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPageBase.tsx b/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPageBase.tsx
new file mode 100644
index 000000000000..e16723081710
--- /dev/null
+++ b/src/pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPageBase.tsx
@@ -0,0 +1,90 @@
+import {CONST as COMMON_CONST} from 'expensify-common';
+import React, {useCallback} from 'react';
+import type {OnyxEntry} from 'react-native-onyx';
+import ConnectionLayout from '@components/ConnectionLayout';
+import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
+import OfflineWithFeedback from '@components/OfflineWithFeedback';
+import useLocalize from '@hooks/useLocalize';
+import useThemeStyles from '@hooks/useThemeStyles';
+import {updateQuickbooksDesktopAutoSync} from '@libs/actions/connections/QuickbooksDesktop';
+import {getLatestErrorField} from '@libs/ErrorUtils';
+import Navigation from '@libs/Navigation/Navigation';
+import {settingsPendingAction} from '@libs/PolicyUtils';
+import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
+import {clearQBDErrorField} from '@userActions/Policy/Policy';
+import CONST from '@src/CONST';
+import type {TranslationPaths} from '@src/languages/types';
+import ROUTES from '@src/ROUTES';
+import type {Route} from '@src/ROUTES';
+import type {Policy} from '@src/types/onyx';
+
+type QuickbooksDesktopAutoSyncPageBaseParams = {
+    policy: OnyxEntry<Policy>;
+    navigateBackTo?: Route;
+};
+
+function QuickbooksDesktopAutoSyncPageBase({policy, navigateBackTo}: QuickbooksDesktopAutoSyncPageBaseParams) {
+    const styles = useThemeStyles();
+    const {translate} = useLocalize();
+    const policyID = policy?.id;
+    const config = policy?.connections?.quickbooksDesktop?.config;
+    const {autoSync, pendingFields} = config ?? {};
+    const accountingMethod = config?.export?.accountingMethod ?? COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH;
+    const pendingAction =
+        settingsPendingAction([CONST.QUICKBOOKS_DESKTOP_CONFIG.AUTO_SYNC], pendingFields) ?? settingsPendingAction([CONST.QUICKBOOKS_DESKTOP_CONFIG.ACCOUNTING_METHOD], pendingFields);
+
+    const goBack = useCallback(() => {
+        Navigation.goBack(navigateBackTo ?? ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_DESKTOP_ADVANCED.getRoute(policyID));
+    }, [policyID, navigateBackTo]);
+
+    return (
+        <ConnectionLayout
+            displayName={QuickbooksDesktopAutoSyncPageBase.displayName}
+            headerTitle="common.settings"
+            accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.PAID]}
+            policyID={policyID}
+            featureName={CONST.POLICY.MORE_FEATURES.ARE_CATEGORIES_ENABLED}
+            contentContainerStyle={styles.pb2}
+            titleStyle={styles.ph5}
+            connectionName={CONST.POLICY.CONNECTIONS.NAME.QBD}
+            onBackButtonPress={goBack}
+        >
+            <ToggleSettingOptionRow
+                key={translate('workspace.accounting.autoSync')}
+                title={translate('workspace.accounting.autoSync')}
+                subtitle={translate('workspace.qbd.advancedConfig.autoSyncDescription')}
+                switchAccessibilityLabel={translate('workspace.qbd.advancedConfig.autoSyncDescription')}
+                isActive={!!autoSync?.enabled}
+                wrapperStyle={[styles.pv2, styles.mh5]}
+                shouldPlaceSubtitleBelowSwitch
+                onToggle={() => {
+                    if (!policyID) {
+                        return;
+                    }
+                    updateQuickbooksDesktopAutoSync(policyID, !autoSync?.enabled);
+                }}
+                pendingAction={pendingAction}
+                errors={getLatestErrorField(config ?? {}, CONST.QUICKBOOKS_DESKTOP_CONFIG.AUTO_SYNC_ENABLED)}
+                onCloseError={() => clearQBDErrorField(policyID, CONST.QUICKBOOKS_DESKTOP_CONFIG.AUTO_SYNC_ENABLED)}
+            />
+            {!!autoSync?.enabled && (
+                <OfflineWithFeedback pendingAction={pendingAction}>
+                    <MenuItemWithTopDescription
+                        title={
+                            accountingMethod === COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL
+                                ? translate(`workspace.qbd.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.ACCRUAL}` as TranslationPaths)
+                                : translate(`workspace.qbd.accountingMethods.values.${COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH}` as TranslationPaths)
+                        }
+                        description={translate('workspace.qbd.accountingMethods.label')}
+                        shouldShowRightIcon
+                        onPress={() => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_ACCOUNTING_METHOD.getRoute(policyID))}
+                    />
+                </OfflineWithFeedback>
+            )}
+        </ConnectionLayout>
+    );
+}
+
+QuickbooksDesktopAutoSyncPageBase.displayName = 'QuickbooksDesktopAutoSyncPageBase';
+
+export default QuickbooksDesktopAutoSyncPageBase;
diff --git a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
index 7d525d2e6e01..c4ff0a88f29b 100644
--- a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
+++ b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx
@@ -101,9 +101,9 @@ function CardReconciliationPage({policy, route}: CardReconciliationPageProps) {
             case CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE:
                 return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_NETSUITE_AUTO_SYNC.getRoute(policyID, backTo)}`;
             case CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT:
-                return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.getRoute(policyID, backTo)}`;
+                return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC.getRoute(policyID)}`;
             case CONST.POLICY.CONNECTIONS.ROUTE.QBD:
-                return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_DESKTOP_AUTO_SYNC.getRoute(policyID, backTo)}`;
+                return `${environmentURL}/${ROUTES.POLICY_ACCOUNTING_CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC.getRoute(policyID)}`;
             default:
                 return '';
         }
diff --git a/src/pages/workspace/accounting/reconciliation/CardReconciliationQuickbooksDesktopAutoSyncPage.tsx b/src/pages/workspace/accounting/reconciliation/CardReconciliationQuickbooksDesktopAutoSyncPage.tsx
new file mode 100644
index 000000000000..5d93d144f7a2
--- /dev/null
+++ b/src/pages/workspace/accounting/reconciliation/CardReconciliationQuickbooksDesktopAutoSyncPage.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import QuickbooksDesktopAutoSyncPageBase from '@pages/workspace/accounting/qbd/advanced/QuickbooksDesktopAutoSyncPageBase';
+import withPolicyConnections from '@pages/workspace/withPolicyConnections';
+import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
+import CONST from '@src/CONST';
+import ROUTES from '@src/ROUTES';
+
+function CardReconciliationQuickbooksDesktopAutoSyncPage({policy}: WithPolicyConnectionsProps) {
+    const policyID = policy?.id;
+    return (
+        <QuickbooksDesktopAutoSyncPageBase
+            policy={policy}
+            navigateBackTo={ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.ROUTE.QBD)}
+        />
+    );
+}
+
+CardReconciliationQuickbooksDesktopAutoSyncPage.displayName = 'CardReconciliationQuickbooksDesktopAutoSyncPage';
+
+export default withPolicyConnections(CardReconciliationQuickbooksDesktopAutoSyncPage);
diff --git a/src/pages/workspace/accounting/reconciliation/CardReconciliationSageIntacctAutoSyncPage.tsx b/src/pages/workspace/accounting/reconciliation/CardReconciliationSageIntacctAutoSyncPage.tsx
new file mode 100644
index 000000000000..2893588ec8b1
--- /dev/null
+++ b/src/pages/workspace/accounting/reconciliation/CardReconciliationSageIntacctAutoSyncPage.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import SageIntacctAutoSyncPageBase from '@pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPageBase';
+import withPolicyConnections from '@pages/workspace/withPolicyConnections';
+import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
+import CONST from '@src/CONST';
+import ROUTES from '@src/ROUTES';
+
+function CardReconciliationSageIntacctAutoSyncPage({policy}: WithPolicyConnectionsProps) {
+    const policyID = policy?.id;
+    return (
+        <SageIntacctAutoSyncPageBase
+            policy={policy}
+            navigateBackTo={ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT)}
+        />
+    );
+}
+
+CardReconciliationSageIntacctAutoSyncPage.displayName = 'CardReconciliationSageIntacctAutoSyncPage';
+
+export default withPolicyConnections(CardReconciliationSageIntacctAutoSyncPage);

From 32840190fe322c54715d95b0a92f758e17cef469 Mon Sep 17 00:00:00 2001
From: daledah <daleda261@outlook.com>
Date: Mon, 3 Nov 2025 16:47:00 +0700
Subject: [PATCH 4/4] fix lint

---
 src/components/ConnectionLayout.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/ConnectionLayout.tsx b/src/components/ConnectionLayout.tsx
index bb0c3d4e76c5..08b8509b09e1 100644
--- a/src/components/ConnectionLayout.tsx
+++ b/src/components/ConnectionLayout.tsx
@@ -107,7 +107,7 @@ function ConnectionLayout({
 }: ConnectionLayoutProps) {
     const {translate} = useLocalize();
 
-    const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`);
+    const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, {canBeMissing: true});
     const isConnectionEmpty = isEmpty(policy?.connections?.[connectionName]);
 
     const renderSelectionContent = useMemo(
