diff --git a/modules/price/src/Element/Price.php b/modules/price/src/Element/Price.php
index b3b746b8..5e7470c0 100644
--- a/modules/price/src/Element/Price.php
+++ b/modules/price/src/Element/Price.php
@@ -103,6 +103,7 @@ class Price extends FormElement {
     $element['number'] = [
       '#type' => 'commerce_number',
       '#title' => $element['#title'],
+      '#title_display' => $element['#title_display'],
       '#default_value' => $default_value ? $default_value['number'] : NULL,
       '#required' => $element['#required'],
       '#size' => $element['#size'],
diff --git a/modules/price/tests/modules/commerce_price_test/src/Form/PriceTestForm.php b/modules/price/tests/modules/commerce_price_test/src/Form/PriceTestForm.php
index 16f4048d..c08f3440 100644
--- a/modules/price/tests/modules/commerce_price_test/src/Form/PriceTestForm.php
+++ b/modules/price/tests/modules/commerce_price_test/src/Form/PriceTestForm.php
@@ -26,6 +26,14 @@ class PriceTestForm extends FormBase {
       '#required' => TRUE,
       '#available_currencies' => ['USD', 'EUR'],
     ];
+    $form['amount_hidden_title'] = [
+      '#type' => 'commerce_price',
+      '#title' => $this->t('Hidden title amount'),
+      '#title_display' => 'invisible',
+      '#default_value' => ['number' => '99.99', 'currency_code' => 'USD'],
+      '#required' => TRUE,
+      '#available_currencies' => ['USD', 'EUR'],
+    ];
     $form['submit'] = [
       '#type' => 'submit',
       '#value' => $this->t('Submit'),
diff --git a/modules/price/tests/src/Functional/PriceElementTest.php b/modules/price/tests/src/Functional/PriceElementTest.php
index 2d536c9a..09c683a5 100644
--- a/modules/price/tests/src/Functional/PriceElementTest.php
+++ b/modules/price/tests/src/Functional/PriceElementTest.php
@@ -43,6 +43,14 @@ class PriceElementTest extends CommerceBrowserTestBase {
     ];
     $this->submitForm($edit, 'Submit');
     $this->assertSession()->pageTextContains('The number is "10.99" and the currency code is "USD".');
+
+    // Ensure that the form titles are displayed as expected.
+    $elements = $this->xpath('//input[@id="edit-amount-hidden-title-number"]/preceding-sibling::label[@for="edit-amount-hidden-title-number" and contains(@class, "visually-hidden")]');
+    $this->assertTrue(isset($elements[0]), 'Label preceding field and label class is visually-hidden.');
+
+    $elements = $this->xpath('//input[@id="edit-amount-number"]/preceding-sibling::label[@for="edit-amount-number" and not(contains(@class, "visually-hidden"))]');
+    $this->assertTrue(isset($elements[0]), 'Label preceding field and label class is not visually visually-hidden.');
+
   }
 
   /**
