diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts
index 5be6cc08d816..d1538d6ba52a 100644
--- a/src/libs/API/types.ts
+++ b/src/libs/API/types.ts
@@ -366,6 +366,16 @@ const WRITE_COMMANDS = {
     UPDATE_XERO_IMPORT_TAX_RATES: 'UpdateXeroImportTaxRates',
     UPDATE_XERO_TENANT_ID: 'UpdateXeroTenantID',
     UPDATE_XERO_MAPPING: 'UpdateXeroMappings',
+    UPDATE_XERO_IMPORT_CUSTOMERS: 'UpdateXeroImportCustomers',
+    UPDATE_XERO_ENABLE_NEW_CATEGORIES: 'UpdateXeroEnableNewCategories',
+    UPDATE_XERO_AUTO_SYNC: 'UpdateXeroAutoSync',
+    UPDATE_XERO_EXPORT_BILL_STATUS: 'UpdateXeroExportBillStatus',
+    UPDATE_XERO_EXPORT_BILL_DATE: 'UpdateXeroExportBillDate',
+    UPDATE_XERO_EXPORT_EXPORTER: 'UpdateXeroExportExporter',
+    UPDATE_XERO_EXPORT_NON_REIMBURSABLE_ACCOUNT: 'UpdateXeroExportNonReimbursableAccount',
+    UPDATE_XERO_SYNC_INVOICE_COLLECTIONS_ACCOUNT_ID: 'UpdateXeroSyncInvoiceCollectionsAccountID',
+    UPDATE_XERO_SYNC_SYNC_REIMBURSED_REPORTS: 'UpdateXeroSyncSyncReimbursedReports',
+    UPDATE_XERO_SYNC_REIMBURSEMENT_ACCOUNT_ID: 'UpdateXeroSyncReimbursementAccountID',
     SET_COMPANY_CARD_FEED_NAME: 'SetFeedName',
     DELETE_COMPANY_CARD_FEED: 'RemoveFeed',
     SET_COMPANY_CARD_TRANSACTION_LIABILITY: 'SetFeedTransactionLiability',
@@ -746,6 +756,17 @@ type WriteCommandParameters = {
     [WRITE_COMMANDS.UPDATE_XERO_IMPORT_TAX_RATES]: Parameters.UpdateXeroGenericTypeParams;
     [WRITE_COMMANDS.UPDATE_XERO_MAPPING]: Parameters.UpdateXeroGenericTypeParams;
     [WRITE_COMMANDS.UPDATE_XERO_IMPORT_TRACKING_CATEGORIES]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_IMPORT_CUSTOMERS]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_ENABLE_NEW_CATEGORIES]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_AUTO_SYNC]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_AUTO_SYNC]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_EXPORT_BILL_STATUS]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_EXPORT_BILL_DATE]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_EXPORT_EXPORTER]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_EXPORT_NON_REIMBURSABLE_ACCOUNT]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_SYNC_INVOICE_COLLECTIONS_ACCOUNT_ID]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_SYNC_SYNC_REIMBURSED_REPORTS]: Parameters.UpdateXeroGenericTypeParams;
+    [WRITE_COMMANDS.UPDATE_XERO_SYNC_REIMBURSEMENT_ACCOUNT_ID]: Parameters.UpdateXeroGenericTypeParams;
 };
 
 const READ_COMMANDS = {
diff --git a/src/libs/actions/connections/Xero.ts b/src/libs/actions/connections/Xero.ts
index fa08dec2e391..1d16efe56984 100644
--- a/src/libs/actions/connections/Xero.ts
+++ b/src/libs/actions/connections/Xero.ts
@@ -47,6 +47,36 @@ function createXeroPendingFields<TSettingName extends keyof Connections['xero'][
     }, {});
 }
 
+function createXeroExportPendingFields<TSettingName extends keyof Connections['xero']['config']['export']>(
+    settingName: TSettingName,
+    settingValue: Partial<Connections['xero']['config']['export'][TSettingName]>,
+    pendingValue: OnyxCommon.PendingAction,
+) {
+    if (!isObject(settingValue)) {
+        return {[settingName]: pendingValue};
+    }
+
+    return Object.keys(settingValue).reduce<Record<string, OnyxCommon.PendingAction>>((acc, setting) => {
+        acc[setting] = pendingValue;
+        return acc;
+    }, {});
+}
+
+function createXeroSyncPendingFields<TSettingName extends keyof Connections['xero']['config']['sync']>(
+    settingName: TSettingName,
+    settingValue: Partial<Connections['xero']['config']['sync'][TSettingName]>,
+    pendingValue: OnyxCommon.PendingAction,
+) {
+    if (!isObject(settingValue)) {
+        return {[settingName]: pendingValue};
+    }
+
+    return Object.keys(settingValue).reduce<Record<string, OnyxCommon.PendingAction>>((acc, setting) => {
+        acc[setting] = pendingValue;
+        return acc;
+    }, {});
+}
+
 function createXeroErrorFields<TSettingName extends keyof Connections['xero']['config']>(
     settingName: TSettingName,
     settingValue: Partial<Connections['xero']['config'][TSettingName]>,
@@ -62,6 +92,36 @@ function createXeroErrorFields<TSettingName extends keyof Connections['xero']['c
     }, {});
 }
 
+function createXeroExportErrorFields<TSettingName extends keyof Connections['xero']['config']['export']>(
+    settingName: TSettingName,
+    settingValue: Partial<Connections['xero']['config']['export'][TSettingName]>,
+    errorValue: OnyxCommon.Errors | null,
+) {
+    if (!isObject(settingValue)) {
+        return {[settingName]: errorValue};
+    }
+
+    return Object.keys(settingValue).reduce<OnyxCommon.ErrorFields>((acc, setting) => {
+        acc[setting] = errorValue;
+        return acc;
+    }, {});
+}
+
+function createXeroSyncErrorFields<TSettingName extends keyof Connections['xero']['config']['sync']>(
+    settingName: TSettingName,
+    settingValue: Partial<Connections['xero']['config']['sync'][TSettingName]>,
+    errorValue: OnyxCommon.Errors | null,
+) {
+    if (!isObject(settingValue)) {
+        return {[settingName]: errorValue};
+    }
+
+    return Object.keys(settingValue).reduce<OnyxCommon.ErrorFields>((acc, setting) => {
+        acc[setting] = errorValue;
+        return acc;
+    }, {});
+}
+
 function prepareXeroOptimisticData<TSettingName extends keyof Connections['xero']['config']>(
     policyID: string,
     settingName: TSettingName,
@@ -124,6 +184,138 @@ function prepareXeroOptimisticData<TSettingName extends keyof Connections['xero'
     return {optimisticData, failureData, successData};
 }
 
+function prepareXeroExportOptimisticData<TSettingName extends keyof Connections['xero']['config']['export']>(
+    policyID: string,
+    settingName: TSettingName,
+    settingValue: Partial<Connections['xero']['config']['export'][TSettingName]>,
+    oldSettingValue?: Partial<Connections['xero']['config']['export'][TSettingName]> | null,
+) {
+    const optimisticData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
+            value: {
+                connections: {
+                    xero: {
+                        config: {
+                            export: {
+                                [settingName]: settingValue ?? null,
+                            },
+                            pendingFields: createXeroExportPendingFields(settingName, settingValue, CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE),
+                            errorFields: createXeroExportErrorFields(settingName, settingValue, null),
+                        },
+                    },
+                },
+            },
+        },
+    ];
+
+    const failureData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
+            value: {
+                connections: {
+                    xero: {
+                        config: {
+                            export: {
+                                [settingName]: oldSettingValue ?? null,
+                            },
+                            pendingFields: createXeroExportPendingFields(settingName, settingValue, null),
+                            errorFields: createXeroExportErrorFields(settingName, settingValue, ErrorUtils.getMicroSecondOnyxErrorWithTranslationKey('common.genericErrorMessage')),
+                        },
+                    },
+                },
+            },
+        },
+    ];
+
+    const successData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
+            value: {
+                connections: {
+                    xero: {
+                        config: {
+                            pendingFields: createXeroExportPendingFields(settingName, settingValue, null),
+                            errorFields: createXeroExportErrorFields(settingName, settingValue, null),
+                        },
+                    },
+                },
+            },
+        },
+    ];
+
+    return {optimisticData, failureData, successData};
+}
+
+function prepareXeroSyncOptimisticData<TSettingName extends keyof Connections['xero']['config']['sync']>(
+    policyID: string,
+    settingName: TSettingName,
+    settingValue: Partial<Connections['xero']['config']['sync'][TSettingName]>,
+    oldSettingValue?: Partial<Connections['xero']['config']['sync'][TSettingName]> | null,
+) {
+    const optimisticData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
+            value: {
+                connections: {
+                    xero: {
+                        config: {
+                            sync: {
+                                [settingName]: settingValue ?? null,
+                            },
+                            pendingFields: createXeroSyncPendingFields(settingName, settingValue, CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE),
+                            errorFields: createXeroSyncErrorFields(settingName, settingValue, null),
+                        },
+                    },
+                },
+            },
+        },
+    ];
+
+    const failureData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
+            value: {
+                connections: {
+                    xero: {
+                        config: {
+                            sync: {
+                                [settingName]: oldSettingValue ?? null,
+                            },
+                            pendingFields: createXeroSyncPendingFields(settingName, settingValue, null),
+                            errorFields: createXeroSyncErrorFields(settingName, settingValue, ErrorUtils.getMicroSecondOnyxErrorWithTranslationKey('common.genericErrorMessage')),
+                        },
+                    },
+                },
+            },
+        },
+    ];
+
+    const successData: OnyxUpdate[] = [
+        {
+            onyxMethod: Onyx.METHOD.MERGE,
+            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
+            value: {
+                connections: {
+                    xero: {
+                        config: {
+                            pendingFields: createXeroSyncPendingFields(settingName, settingValue, null),
+                            errorFields: createXeroSyncErrorFields(settingName, settingValue, null),
+                        },
+                    },
+                },
+            },
+        },
+    ];
+
+    return {optimisticData, failureData, successData};
+}
+
 function updateXeroImportTrackingCategories(
     policyID: string,
     importTrackingCategories: Partial<Connections['xero']['config']['importTrackingCategories']>,
@@ -185,4 +377,187 @@ function updateXeroMappings(policyID: string, mappingValue: Partial<Connections[
     API.write(WRITE_COMMANDS.UPDATE_XERO_MAPPING, parameters, {optimisticData, failureData, successData});
 }
 
-export {getXeroSetupLink, getTrackingCategories, updateXeroImportTrackingCategories, updateXeroImportTaxRates, updateXeroTenantID, updateXeroMappings};
+function updateXeroImportCustomers(
+    policyID: string,
+    importCustomers: Partial<Connections['xero']['config']['importCustomers']>,
+    oldImportCustomers?: Partial<Connections['xero']['config']['importCustomers']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: JSON.stringify(importCustomers),
+        idempotencyKey: String(CONST.XERO_CONFIG.IMPORT_CUSTOMERS),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroOptimisticData(policyID, CONST.XERO_CONFIG.IMPORT_CUSTOMERS, importCustomers, oldImportCustomers);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_IMPORT_CUSTOMERS, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroEnableNewCategories(
+    policyID: string,
+    enableNewCategories: Partial<Connections['xero']['config']['enableNewCategories']>,
+    oldEnableNewCategories?: Partial<Connections['xero']['config']['enableNewCategories']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: JSON.stringify(enableNewCategories),
+        idempotencyKey: String(CONST.XERO_CONFIG.ENABLE_NEW_CATEGORIES),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroOptimisticData(policyID, CONST.XERO_CONFIG.ENABLE_NEW_CATEGORIES, enableNewCategories, oldEnableNewCategories);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_ENABLE_NEW_CATEGORIES, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroAutoSync(policyID: string, autoSync: Partial<Connections['xero']['config']['autoSync']>, oldAutoSync?: Partial<Connections['xero']['config']['autoSync']>) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: JSON.stringify(autoSync),
+        idempotencyKey: String(CONST.XERO_CONFIG.AUTO_SYNC),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroOptimisticData(policyID, CONST.XERO_CONFIG.AUTO_SYNC, autoSync, oldAutoSync);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_AUTO_SYNC, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroExportBillStatus(
+    policyID: string,
+    billStatus: Partial<Connections['xero']['config']['export']['billStatus']>,
+    oldBillStatus?: Partial<Connections['xero']['config']['export']['billStatus']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: JSON.stringify(billStatus),
+        idempotencyKey: String(CONST.XERO_CONFIG.BILL_STATUS),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroExportOptimisticData(policyID, CONST.XERO_CONFIG.BILL_STATUS, billStatus, oldBillStatus);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_EXPORT_BILL_STATUS, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroExportExporter(
+    policyID: string,
+    exporter: Partial<Connections['xero']['config']['export']['exporter']>,
+    oldExporter?: Partial<Connections['xero']['config']['export']['exporter']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: exporter,
+        idempotencyKey: String(CONST.XERO_CONFIG.EXPORTER),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroExportOptimisticData(policyID, CONST.XERO_CONFIG.EXPORTER, exporter, oldExporter);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_EXPORT_EXPORTER, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroExportBillDate(
+    policyID: string,
+    billDate: Partial<Connections['xero']['config']['export']['billDate']>,
+    oldBillDate?: Partial<Connections['xero']['config']['export']['billDate']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: billDate,
+        idempotencyKey: String(CONST.XERO_CONFIG.BILL_DATE),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroExportOptimisticData(policyID, CONST.XERO_CONFIG.BILL_DATE, billDate, oldBillDate);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_EXPORT_BILL_DATE, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroExportNonReimbursableAccount(
+    policyID: string,
+    nonReimbursableAccount: Partial<Connections['xero']['config']['export']['nonReimbursableAccount']>,
+    oldNonReimbursableAccount?: Partial<Connections['xero']['config']['export']['nonReimbursableAccount']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: nonReimbursableAccount,
+        idempotencyKey: String(CONST.XERO_CONFIG.NON_REIMBURSABLE_ACCOUNT),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroExportOptimisticData(
+        policyID,
+        CONST.XERO_CONFIG.NON_REIMBURSABLE_ACCOUNT,
+        nonReimbursableAccount,
+        oldNonReimbursableAccount,
+    );
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_EXPORT_NON_REIMBURSABLE_ACCOUNT, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroSyncInvoiceCollectionsAccountID(
+    policyID: string,
+    invoiceCollectionsAccountID: Partial<Connections['xero']['config']['sync']['invoiceCollectionsAccountID']>,
+    oldInvoiceCollectionsAccountID?: Partial<Connections['xero']['config']['sync']['invoiceCollectionsAccountID']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: invoiceCollectionsAccountID,
+        idempotencyKey: String(CONST.XERO_CONFIG.INVOICE_COLLECTIONS_ACCOUNT_ID),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroSyncOptimisticData(
+        policyID,
+        CONST.XERO_CONFIG.INVOICE_COLLECTIONS_ACCOUNT_ID,
+        invoiceCollectionsAccountID,
+        oldInvoiceCollectionsAccountID,
+    );
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_SYNC_INVOICE_COLLECTIONS_ACCOUNT_ID, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroSyncReimbursementAccountID(
+    policyID: string,
+    reimbursementAccountID: Partial<Connections['xero']['config']['sync']['reimbursementAccountID']>,
+    oldReimbursementAccountID?: Partial<Connections['xero']['config']['sync']['reimbursementAccountID']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: reimbursementAccountID,
+        idempotencyKey: String(CONST.XERO_CONFIG.REIMBURSEMENT_ACCOUNT_ID),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroSyncOptimisticData(policyID, CONST.XERO_CONFIG.REIMBURSEMENT_ACCOUNT_ID, reimbursementAccountID, oldReimbursementAccountID);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_SYNC_REIMBURSEMENT_ACCOUNT_ID, parameters, {optimisticData, failureData, successData});
+}
+
+function updateXeroSyncSyncReimbursedReports(
+    policyID: string,
+    syncReimbursedReports: Partial<Connections['xero']['config']['sync']['syncReimbursedReports']>,
+    oldSyncReimbursedReports?: Partial<Connections['xero']['config']['sync']['syncReimbursedReports']>,
+) {
+    const parameters: UpdateXeroGenericTypeParams = {
+        policyID,
+        settingValue: JSON.stringify(syncReimbursedReports),
+        idempotencyKey: String(CONST.XERO_CONFIG.SYNC_REIMBURSED_REPORTS),
+    };
+
+    const {optimisticData, failureData, successData} = prepareXeroSyncOptimisticData(policyID, CONST.XERO_CONFIG.SYNC_REIMBURSED_REPORTS, syncReimbursedReports, oldSyncReimbursedReports);
+
+    API.write(WRITE_COMMANDS.UPDATE_XERO_SYNC_SYNC_REIMBURSED_REPORTS, parameters, {optimisticData, failureData, successData});
+}
+
+export {
+    getXeroSetupLink,
+    getTrackingCategories,
+    updateXeroImportTrackingCategories,
+    updateXeroImportTaxRates,
+    updateXeroTenantID,
+    updateXeroMappings,
+    updateXeroImportCustomers,
+    updateXeroEnableNewCategories,
+    updateXeroAutoSync,
+    updateXeroExportBillStatus,
+    updateXeroExportExporter,
+    updateXeroExportBillDate,
+    updateXeroExportNonReimbursableAccount,
+    updateXeroSyncInvoiceCollectionsAccountID,
+    updateXeroSyncSyncReimbursedReports,
+    updateXeroSyncReimbursementAccountID,
+};
diff --git a/src/pages/workspace/accounting/xero/advanced/XeroAdvancedPage.tsx b/src/pages/workspace/accounting/xero/advanced/XeroAdvancedPage.tsx
index 0650fce7a935..0bc946c8d149 100644
--- a/src/pages/workspace/accounting/xero/advanced/XeroAdvancedPage.tsx
+++ b/src/pages/workspace/accounting/xero/advanced/XeroAdvancedPage.tsx
@@ -4,7 +4,6 @@ import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
 import OfflineWithFeedback from '@components/OfflineWithFeedback';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import Navigation from '@libs/Navigation/Navigation';
 import {getCurrentXeroOrganizationName, settingsPendingAction} from '@libs/PolicyUtils';
@@ -12,6 +11,7 @@ import * as PolicyUtils from '@libs/PolicyUtils';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
 import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
+import {updateXeroAutoSync, updateXeroSyncSyncReimbursedReports} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ROUTES from '@src/ROUTES';
@@ -59,14 +59,12 @@ function XeroAdvancedPage({policy}: WithPolicyConnectionsProps) {
                 wrapperStyle={styles.mv3}
                 isActive={!!autoSync?.enabled}
                 onToggle={() =>
-                    Connections.updatePolicyConnectionConfig(
+                    updateXeroAutoSync(
                         policyID,
-                        CONST.POLICY.CONNECTIONS.NAME.XERO,
-                        CONST.XERO_CONFIG.AUTO_SYNC,
                         {
                             enabled: !autoSync?.enabled,
                         },
-                        {enabled: autoSync?.enabled ?? null},
+                        {enabled: autoSync?.enabled ?? undefined},
                     )
                 }
                 pendingAction={settingsPendingAction([CONST.XERO_CONFIG.ENABLED], pendingFields)}
@@ -81,17 +79,7 @@ function XeroAdvancedPage({policy}: WithPolicyConnectionsProps) {
                 shouldPlaceSubtitleBelowSwitch
                 wrapperStyle={styles.mv3}
                 isActive={!!sync?.syncReimbursedReports}
-                onToggle={() =>
-                    Connections.updatePolicyConnectionConfig(
-                        policyID,
-                        CONST.POLICY.CONNECTIONS.NAME.XERO,
-                        CONST.XERO_CONFIG.SYNC,
-                        {
-                            syncReimbursedReports: !sync?.syncReimbursedReports,
-                        },
-                        {syncReimbursedReports: sync?.syncReimbursedReports ?? null},
-                    )
-                }
+                onToggle={() => updateXeroSyncSyncReimbursedReports(policyID, !sync?.syncReimbursedReports, sync?.syncReimbursedReports)}
                 pendingAction={settingsPendingAction([CONST.XERO_CONFIG.SYNC_REIMBURSED_REPORTS], pendingFields)}
                 errors={ErrorUtils.getLatestErrorField(xeroConfig ?? {}, CONST.XERO_CONFIG.SYNC_REIMBURSED_REPORTS)}
                 onCloseError={() => Policy.clearXeroErrorField(policyID, CONST.XERO_CONFIG.SYNC_REIMBURSED_REPORTS)}
diff --git a/src/pages/workspace/accounting/xero/advanced/XeroBillPaymentAccountSelectorPage.tsx b/src/pages/workspace/accounting/xero/advanced/XeroBillPaymentAccountSelectorPage.tsx
index 51ef936cd211..df197b15778c 100644
--- a/src/pages/workspace/accounting/xero/advanced/XeroBillPaymentAccountSelectorPage.tsx
+++ b/src/pages/workspace/accounting/xero/advanced/XeroBillPaymentAccountSelectorPage.tsx
@@ -8,13 +8,13 @@ import SelectionScreen from '@components/SelectionScreen';
 import Text from '@components/Text';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import Navigation from '@libs/Navigation/Navigation';
 import {getXeroBankAccounts, settingsPendingAction} from '@libs/PolicyUtils';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
 import variables from '@styles/variables';
+import {updateXeroSyncReimbursementAccountID} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ROUTES from '@src/ROUTES';
@@ -42,15 +42,7 @@ function XeroBillPaymentAccountSelectorPage({policy}: WithPolicyConnectionsProps
 
     const updateAccount = useCallback(
         ({value}: SelectorType) => {
-            Connections.updatePolicyConnectionConfig(
-                policyID,
-                CONST.POLICY.CONNECTIONS.NAME.XERO,
-                CONST.XERO_CONFIG.SYNC,
-                {
-                    reimbursementAccountID: value,
-                },
-                {reimbursementAccountID: reimbursementAccountID ?? null},
-            );
+            updateXeroSyncReimbursementAccountID(policyID, value, reimbursementAccountID);
             Navigation.goBack(ROUTES.POLICY_ACCOUNTING_XERO_ADVANCED.getRoute(policyID));
         },
         [policyID, reimbursementAccountID],
diff --git a/src/pages/workspace/accounting/xero/advanced/XeroInvoiceAccountSelectorPage.tsx b/src/pages/workspace/accounting/xero/advanced/XeroInvoiceAccountSelectorPage.tsx
index 2bd102353e5b..d3bf2c894039 100644
--- a/src/pages/workspace/accounting/xero/advanced/XeroInvoiceAccountSelectorPage.tsx
+++ b/src/pages/workspace/accounting/xero/advanced/XeroInvoiceAccountSelectorPage.tsx
@@ -8,13 +8,13 @@ import SelectionScreen from '@components/SelectionScreen';
 import Text from '@components/Text';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import Navigation from '@libs/Navigation/Navigation';
 import {getXeroBankAccounts, settingsPendingAction} from '@libs/PolicyUtils';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
 import variables from '@styles/variables';
+import {updateXeroSyncInvoiceCollectionsAccountID} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ROUTES from '@src/ROUTES';
@@ -42,15 +42,7 @@ function XeroInvoiceAccountSelectorPage({policy}: WithPolicyConnectionsProps) {
 
     const updateAccount = useCallback(
         ({value}: SelectorType) => {
-            Connections.updatePolicyConnectionConfig(
-                policyID,
-                CONST.POLICY.CONNECTIONS.NAME.XERO,
-                CONST.XERO_CONFIG.SYNC,
-                {
-                    invoiceCollectionsAccountID: value,
-                },
-                {invoiceCollectionsAccountID: invoiceCollectionsAccountID ?? null},
-            );
+            updateXeroSyncInvoiceCollectionsAccountID(policyID, value, invoiceCollectionsAccountID);
             Navigation.goBack(ROUTES.POLICY_ACCOUNTING_XERO_ADVANCED.getRoute(policyID));
         },
         [policyID, invoiceCollectionsAccountID],
diff --git a/src/pages/workspace/accounting/xero/export/XeroBankAccountSelectPage.tsx b/src/pages/workspace/accounting/xero/export/XeroBankAccountSelectPage.tsx
index 9e6efbfc4cda..040b89a436e6 100644
--- a/src/pages/workspace/accounting/xero/export/XeroBankAccountSelectPage.tsx
+++ b/src/pages/workspace/accounting/xero/export/XeroBankAccountSelectPage.tsx
@@ -8,7 +8,6 @@ import SelectionScreen from '@components/SelectionScreen';
 import Text from '@components/Text';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import Navigation from '@libs/Navigation/Navigation';
 import {getXeroBankAccounts} from '@libs/PolicyUtils';
@@ -16,6 +15,7 @@ import * as PolicyUtils from '@libs/PolicyUtils';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
 import variables from '@styles/variables';
+import {updateXeroExportNonReimbursableAccount} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ROUTES from '@src/ROUTES';
@@ -46,15 +46,7 @@ function XeroBankAccountSelectPage({policy}: WithPolicyConnectionsProps) {
     const updateBankAccount = useCallback(
         ({value}: SelectorType) => {
             if (initiallyFocusedOptionKey !== value) {
-                Connections.updatePolicyConnectionConfig(
-                    policyID,
-                    CONST.POLICY.CONNECTIONS.NAME.XERO,
-                    CONST.XERO_CONFIG.EXPORT,
-                    {
-                        nonReimbursableAccount: value,
-                    },
-                    {nonReimbursableAccount: config?.export?.nonReimbursableAccount ?? null},
-                );
+                updateXeroExportNonReimbursableAccount(policyID, value, config?.export?.nonReimbursableAccount);
             }
             Navigation.goBack(ROUTES.POLICY_ACCOUNTING_XERO_EXPORT.getRoute(policyID));
         },
diff --git a/src/pages/workspace/accounting/xero/export/XeroPreferredExporterSelectPage.tsx b/src/pages/workspace/accounting/xero/export/XeroPreferredExporterSelectPage.tsx
index 0dcfa6afbc23..23d178c725fe 100644
--- a/src/pages/workspace/accounting/xero/export/XeroPreferredExporterSelectPage.tsx
+++ b/src/pages/workspace/accounting/xero/export/XeroPreferredExporterSelectPage.tsx
@@ -8,13 +8,13 @@ import Text from '@components/Text';
 import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import {getAdminEmployees, isExpensifyTeam} from '@libs/PolicyUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
 import Navigation from '@navigation/Navigation';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
+import {updateXeroExportExporter} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ROUTES from '@src/ROUTES';
@@ -67,13 +67,7 @@ function XeroPreferredExporterSelectPage({policy}: WithPolicyConnectionsProps) {
     const selectExporter = useCallback(
         (row: CardListItem) => {
             if (row.value !== config?.export?.exporter) {
-                Connections.updatePolicyConnectionConfig(
-                    policyID,
-                    CONST.POLICY.CONNECTIONS.NAME.XERO,
-                    CONST.XERO_CONFIG.EXPORT,
-                    {exporter: row.value},
-                    {exporter: config?.export?.exporter ?? null},
-                );
+                updateXeroExportExporter(policyID, row.value, config?.export?.exporter);
             }
             Navigation.goBack(ROUTES.POLICY_ACCOUNTING_XERO_EXPORT.getRoute(policyID));
         },
diff --git a/src/pages/workspace/accounting/xero/export/XeroPurchaseBillDateSelectPage.tsx b/src/pages/workspace/accounting/xero/export/XeroPurchaseBillDateSelectPage.tsx
index ee6f5171d1b3..b52eab4cfa32 100644
--- a/src/pages/workspace/accounting/xero/export/XeroPurchaseBillDateSelectPage.tsx
+++ b/src/pages/workspace/accounting/xero/export/XeroPurchaseBillDateSelectPage.tsx
@@ -8,12 +8,12 @@ import type {SelectorType} from '@components/SelectionScreen';
 import Text from '@components/Text';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
 import Navigation from '@navigation/Navigation';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
+import {updateXeroExportBillDate} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ROUTES from '@src/ROUTES';
@@ -47,13 +47,7 @@ function XeroPurchaseBillDateSelectPage({policy}: WithPolicyConnectionsProps) {
     const selectExportDate = useCallback(
         (row: MenuListItem) => {
             if (row.value !== config?.export?.billDate) {
-                Connections.updatePolicyConnectionConfig(
-                    policyID,
-                    CONST.POLICY.CONNECTIONS.NAME.XERO,
-                    CONST.XERO_CONFIG.EXPORT,
-                    {billDate: row.value},
-                    {billDate: config?.export?.billDate ?? null},
-                );
+                updateXeroExportBillDate(policyID, row.value, config?.export?.billDate);
             }
             Navigation.goBack(ROUTES.POLICY_ACCOUNTING_XERO_EXPORT_PURCHASE_BILL_DATE_SELECT.getRoute(policyID));
         },
diff --git a/src/pages/workspace/accounting/xero/export/XeroPurchaseBillStatusSelectorPage.tsx b/src/pages/workspace/accounting/xero/export/XeroPurchaseBillStatusSelectorPage.tsx
index 2d124b05894f..bf656da26fda 100644
--- a/src/pages/workspace/accounting/xero/export/XeroPurchaseBillStatusSelectorPage.tsx
+++ b/src/pages/workspace/accounting/xero/export/XeroPurchaseBillStatusSelectorPage.tsx
@@ -9,12 +9,12 @@ import type {SelectorType} from '@components/SelectionScreen';
 import Text from '@components/Text';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
 import Navigation from '@navigation/Navigation';
 import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
+import {updateXeroExportBillStatus} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 import ROUTES from '@src/ROUTES';
@@ -52,14 +52,13 @@ function XeroPurchaseBillStatusSelectorPage({policy}: WithPolicyConnectionsProps
                 return;
             }
             if (row.value !== invoiceStatus) {
-                Connections.updatePolicyConnectionConfig(
+                updateXeroExportBillStatus(
                     policyID,
-                    CONST.POLICY.CONNECTIONS.NAME.XERO,
-                    CONST.XERO_CONFIG.EXPORT,
                     {
-                        billStatus: {...config?.export?.billStatus, purchase: row.value},
+                        ...config?.export?.billStatus,
+                        purchase: row.value,
                     },
-                    {billStatus: config?.export?.billStatus ?? null},
+                    config?.export?.billStatus,
                 );
             }
             Navigation.goBack(ROUTES.POLICY_ACCOUNTING_XERO_BILL_STATUS_SELECTOR.getRoute(policyID));
diff --git a/src/pages/workspace/accounting/xero/import/XeroChartOfAccountsPage.tsx b/src/pages/workspace/accounting/xero/import/XeroChartOfAccountsPage.tsx
index 0712284e254d..692c892e164e 100644
--- a/src/pages/workspace/accounting/xero/import/XeroChartOfAccountsPage.tsx
+++ b/src/pages/workspace/accounting/xero/import/XeroChartOfAccountsPage.tsx
@@ -6,13 +6,13 @@ import Switch from '@components/Switch';
 import Text from '@components/Text';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import {settingsPendingAction} from '@libs/PolicyUtils';
 import type {WithPolicyProps} from '@pages/workspace/withPolicy';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
 import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
 import variables from '@styles/variables';
+import {updateXeroEnableNewCategories} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 
@@ -59,15 +59,7 @@ function XeroChartOfAccountsPage({policy}: WithPolicyProps) {
                 switchAccessibilityLabel={translate('workspace.xero.accountsSwitchDescription')}
                 shouldPlaceSubtitleBelowSwitch
                 isActive={!!xeroConfig?.enableNewCategories}
-                onToggle={() =>
-                    Connections.updatePolicyConnectionConfig(
-                        policyID,
-                        CONST.POLICY.CONNECTIONS.NAME.XERO,
-                        CONST.XERO_CONFIG.ENABLE_NEW_CATEGORIES,
-                        !xeroConfig?.enableNewCategories,
-                        xeroConfig?.enableNewCategories,
-                    )
-                }
+                onToggle={() => updateXeroEnableNewCategories(policyID, !xeroConfig?.enableNewCategories, xeroConfig?.enableNewCategories)}
                 pendingAction={settingsPendingAction([CONST.XERO_CONFIG.ENABLE_NEW_CATEGORIES], xeroConfig?.pendingFields)}
                 errors={ErrorUtils.getLatestErrorField(xeroConfig ?? {}, CONST.XERO_CONFIG.ENABLE_NEW_CATEGORIES)}
                 onCloseError={() => Policy.clearXeroErrorField(policyID, CONST.XERO_CONFIG.ENABLE_NEW_CATEGORIES)}
diff --git a/src/pages/workspace/accounting/xero/import/XeroCustomerConfigurationPage.tsx b/src/pages/workspace/accounting/xero/import/XeroCustomerConfigurationPage.tsx
index 9b17888ee0d6..25e9af97ebba 100644
--- a/src/pages/workspace/accounting/xero/import/XeroCustomerConfigurationPage.tsx
+++ b/src/pages/workspace/accounting/xero/import/XeroCustomerConfigurationPage.tsx
@@ -3,12 +3,12 @@ import ConnectionLayout from '@components/ConnectionLayout';
 import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
 import useLocalize from '@hooks/useLocalize';
 import useThemeStyles from '@hooks/useThemeStyles';
-import * as Connections from '@libs/actions/connections';
 import * as ErrorUtils from '@libs/ErrorUtils';
 import * as PolicyUtils from '@libs/PolicyUtils';
 import type {WithPolicyProps} from '@pages/workspace/withPolicy';
 import withPolicyConnections from '@pages/workspace/withPolicyConnections';
 import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
+import {updateXeroImportCustomers} from '@userActions/connections/Xero';
 import * as Policy from '@userActions/Policy/Policy';
 import CONST from '@src/CONST';
 
@@ -42,15 +42,7 @@ function XeroCustomerConfigurationPage({policy}: WithPolicyProps) {
                     />
                 }
                 isActive={isSwitchOn}
-                onToggle={() =>
-                    Connections.updatePolicyConnectionConfig(
-                        policyID,
-                        CONST.POLICY.CONNECTIONS.NAME.XERO,
-                        CONST.XERO_CONFIG.IMPORT_CUSTOMERS,
-                        !xeroConfig?.importCustomers,
-                        xeroConfig?.importCustomers,
-                    )
-                }
+                onToggle={() => updateXeroImportCustomers(policyID, !xeroConfig?.importCustomers, xeroConfig?.importCustomers)}
                 errors={ErrorUtils.getLatestErrorField(xeroConfig ?? {}, CONST.XERO_CONFIG.IMPORT_CUSTOMERS)}
                 onCloseError={() => Policy.clearXeroErrorField(policyID, CONST.XERO_CONFIG.IMPORT_CUSTOMERS)}
                 pendingAction={PolicyUtils.settingsPendingAction([CONST.XERO_CONFIG.IMPORT_CUSTOMERS], xeroConfig?.pendingFields)}
