diff --git a/modules/payment/src/Plugin/Commerce/CheckoutPane/PaymentInformation.php b/modules/payment/src/Plugin/Commerce/CheckoutPane/PaymentInformation.php
index 2b2e1b0..6af43d0 100644
--- a/modules/payment/src/Plugin/Commerce/CheckoutPane/PaymentInformation.php
+++ b/modules/payment/src/Plugin/Commerce/CheckoutPane/PaymentInformation.php
@@ -23,6 +23,49 @@ class PaymentInformation extends CheckoutPaneBase {
   /**
    * {@inheritdoc}
    */
+  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
+    $form = parent::buildConfigurationForm($form, $form_state);
+    $form['needs_billing'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Collect billing information'),
+      '#default_value' => $this->configuration['needs_billing'],
+    ];
+    return $form;
+  }
+
+  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
+    parent::submitConfigurationForm($form, $form_state);
+
+    if (!$form_state->getErrors()) {
+      $values = $form_state->getValue($form['#parents']);
+      $this->configuration['needs_billing'] = !empty($values['needs_billing']);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildConfigurationSummary() {
+    if ($this->configuration['needs_billing']) {
+      return $this->t('Billing information is collected.');
+    }
+    else {
+      return $this->t('Billing information is not collected.');
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function defaultConfiguration() {
+    return [
+      'needs_billing' => TRUE,
+    ] + parent::defaultConfiguration();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function buildPaneSummary() {
     $summary = [];
     /** @var \Drupal\commerce_payment\Entity\PaymentGatewayInterface $payment_gateway */
@@ -38,11 +81,11 @@ class PaymentInformation extends CheckoutPaneBase {
       $summary = $view_builder->view($payment_method, 'default');
     }
     else {
+      $label = $payment_gateway->getPlugin()->getDisplayLabel();
       $billing_profile = $this->order->getBillingProfile();
-      if ($billing_profile) {
+      if ($this->configuration['needs_billing'] && $billing_profile) {
         $profile_view_builder = $this->entityTypeManager->getViewBuilder('profile');
         $profile_view = $profile_view_builder->view($billing_profile, 'default');
-        $label = $payment_gateway->getPlugin()->getDisplayLabel();
         $summary = [
           'label' => [
             '#markup' => $label,
@@ -50,6 +93,13 @@ class PaymentInformation extends CheckoutPaneBase {
           'profile' => $profile_view,
         ];
       }
+      else {
+        $summary = [
+          'label' => [
+            '#markup' => $label,
+          ],
+        ];
+      }
     }
 
     return $summary;
@@ -133,7 +183,7 @@ class PaymentInformation extends CheckoutPaneBase {
         ];
       }
     }
-    else {
+    elseif ($this->configuration['needs_billing']) {
       $store = $this->order->getStore();
       $billing_profile = $this->order->getBillingProfile();
       if (!$billing_profile) {
@@ -342,12 +392,16 @@ class PaymentInformation extends CheckoutPaneBase {
       /** @var \Drupal\commerce_payment\Entity\PaymentMethodInterface $payment_method */
       $this->order->set('payment_gateway', $payment_method->getPaymentGateway());
       $this->order->set('payment_method', $payment_method);
-      $this->order->setBillingProfile($payment_method->getBillingProfile());
+      if ($this->configuration['needs_billing']) {
+        $this->order->setBillingProfile($payment_method->getBillingProfile());
+      }
     }
     else {
       $this->order->set('payment_gateway', $payment_gateway);
       $this->order->set('payment_method', NULL);
-      $this->order->setBillingProfile($pane_form['billing_information']['#profile']);
+      if ($this->configuration['needs_billing']) {
+        $this->order->setBillingProfile($pane_form['billing_information']['#profile']);
+      }
     }
   }
 
