diff --git a/includes/admin/class-wc-stripe-payment-requests-controller.php b/includes/admin/class-wc-stripe-payment-requests-controller.php
new file mode 100644
index 0000000..16198ff
--- /dev/null
+++ b/includes/admin/class-wc-stripe-payment-requests-controller.php
@@ -0,0 +1,63 @@
+<?php
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+/**
+ * Admin page for UPE Customize Express Checkouts.
+ *
+ * @since 5.4.1
+ */
+class WC_Stripe_Payment_Requests_Controller {
+	public function __construct() {
+		add_action( 'admin_enqueue_scripts', [ $this, 'admin_scripts' ] );
+		add_action( 'wc_stripe_gateway_admin_options_wrapper', [ $this, 'admin_options' ] );
+	}
+
+	/**
+	 * Load admin scripts.
+	 */
+	public function admin_scripts() {
+		// Webpack generates an assets file containing a dependencies array for our built JS file.
+		$script_asset_path = WC_STRIPE_PLUGIN_PATH . '/build/payment_requests_settings.asset.php';
+		$asset_metadata    = file_exists( $script_asset_path )
+			? require $script_asset_path
+			: [
+				'dependencies' => [],
+				'version'      => WC_STRIPE_VERSION,
+			];
+		wp_register_script(
+			'wc-stripe-payment-request-settings',
+			plugins_url( 'build/payment_requests_settings.js', WC_STRIPE_MAIN_FILE ),
+			$asset_metadata['dependencies'],
+			$asset_metadata['version'],
+			true
+		);
+		wp_set_script_translations(
+			'wc-stripe-payment-request-settings',
+			'woocommerce-gateway-stripe'
+		);
+		wp_enqueue_script( 'wc-stripe-payment-request-settings' );
+
+		wp_register_style(
+			'wc-stripe-payment-request-settings',
+			plugins_url( 'build/payment_requests_settings.css', WC_STRIPE_MAIN_FILE ),
+			[ 'wc-components' ],
+			$asset_metadata['version']
+		);
+		wp_enqueue_style( 'wc-stripe-payment-request-settings' );
+	}
+
+	/**
+	 * Prints the admin options for the gateway.
+	 * Remove this action once we're fully migrated to UPE and move the wrapper in the `admin_options` method of the UPE gateway.
+	 */
+	public function admin_options() {
+		global $hide_save_button;
+		$hide_save_button = true;
+		echo '<h2>' . __( 'Customize express checkouts', 'woocommerce-gateway-stripe' );
+		wc_back_link( __( 'Return to Stripe', 'woocommerce-gateway-stripe' ), admin_url( 'admin.php?page=wc-settings&tab=checkout&section=stripe' ) );
+		echo '</h2>';
+		echo '<div class="wrap"><div id="wc-stripe-payment-request-settings-container"></div></div>';
+	}
+}
