Initial commit
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>';
+	}
+}