diff --git a/includes/admin/class-wc-stripe-payment-gateways-controller.php b/includes/admin/class-wc-stripe-payment-gateways-controller.php
new file mode 100644
index 0000000..e80a827
--- /dev/null
+++ b/includes/admin/class-wc-stripe-payment-gateways-controller.php
@@ -0,0 +1,84 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+
+/**
+ * Class that handles various admin tasks.
+ *
+ * @since 5.6.0
+ */
+class WC_Stripe_Payment_Gateways_Controller {
+	/**
+	 * Constructor
+	 *
+	 * @since 5.6.0
+	 */
+	public function __construct() {
+		// If UPE is enabled and there are enabled payment methods, we need to load the disable Stripe confirmation modal.
+		$stripe_settings              = get_option( 'woocommerce_stripe_settings', [] );
+		$enabled_upe_payment_methods  = isset( $stripe_settings['upe_checkout_experience_accepted_payments'] ) ? $stripe_settings['upe_checkout_experience_accepted_payments'] : [];
+		$upe_payment_requests_enabled = 'yes' === $stripe_settings['payment_request'];
+
+		if ( count( $enabled_upe_payment_methods ) > 0 || $upe_payment_requests_enabled ) {
+			add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_payments_scripts' ] );
+			add_action( 'woocommerce_admin_field_payment_gateways', [ $this, 'wc_stripe_gateway_container' ] );
+		}
+	}
+
+	public function register_payments_scripts() {
+		$payment_gateways_script_asset_path = WC_STRIPE_PLUGIN_PATH . '/build/payment_gateways.asset.php';
+		$payment_gateways_script_asset      = file_exists( $payment_gateways_script_asset_path )
+			? require_once $payment_gateways_script_asset_path
+			: [
+				'dependencies' => [],
+				'version'      => WC_STRIPE_VERSION,
+			];
+
+		wp_register_script(
+			'woocommerce_stripe_payment_gateways_page',
+			plugins_url( 'build/payment_gateways.js', WC_STRIPE_MAIN_FILE ),
+			$payment_gateways_script_asset['dependencies'],
+			$payment_gateways_script_asset['version'],
+			true
+		);
+		wp_set_script_translations(
+			'woocommerce_stripe_payment_gateways_page',
+			'woocommerce-gateway-stripe'
+		);
+		wp_register_style(
+			'woocommerce_stripe_payment_gateways_page',
+			plugins_url( 'build/payment_gateways.css', WC_STRIPE_MAIN_FILE ),
+			[ 'wc-components' ],
+			$payment_gateways_script_asset['version']
+		);
+	}
+
+	public function enqueue_payments_scripts() {
+		global $current_tab, $current_section;
+
+		$this->register_payments_scripts();
+
+		$is_payment_methods_page = (
+			is_admin() &&
+			$current_tab && ! $current_section
+			&& 'checkout' === $current_tab
+		);
+
+		if ( $is_payment_methods_page ) {
+			wp_enqueue_script( 'woocommerce_stripe_payment_gateways_page' );
+			wp_enqueue_style( 'woocommerce_stripe_payment_gateways_page' );
+		}
+	}
+
+	/**
+	 * Adds a container to the "payment gateways" page.
+	 * This is where the "Are you sure you want to disable Stripe?" confirmation dialog is rendered.
+	 */
+	public function wc_stripe_gateway_container() {
+		?><div id="wc-stripe-payment-gateways-container" />
+		<?php
+	}
+
+}
