diff --git a/modules/order/commerce_order.module b/modules/order/commerce_order.module
index 8c8afbea..168eeaa5 100644
--- a/modules/order/commerce_order.module
+++ b/modules/order/commerce_order.module
@@ -41,6 +41,8 @@ function commerce_order_theme($existing, $type, $theme, $path) {
         'billing_information' => NULL,
         'shipping_information' => NULL,
         'payment_method' => NULL,
+        'payment_gateway' => NULL,
+        'payment_instructions' => NULL,
         'totals' => NULL,
       ],
     ],
diff --git a/modules/order/templates/commerce-order-receipt.html.twig b/modules/order/templates/commerce-order-receipt.html.twig
index 97328d89..7a65c941 100644
--- a/modules/order/templates/commerce-order-receipt.html.twig
+++ b/modules/order/templates/commerce-order-receipt.html.twig
@@ -93,6 +93,18 @@
                   </td>
                 {% endif %}
               </tr>
+              {% if payment_gateway %}
+                <tr>
+                  <td style="font-weight: bold; margin-top: 10px;">{{ 'Payment Gateway'|t }}</td>
+                </tr>
+                <tr>
+                  <td>
+                    {% block payment_gateway %}
+                      {{ payment_gateway }}
+                    {% endblock %}
+                  </td>
+                </tr>
+              {% endif %}
               {% if payment_method %}
                 <tr>
                   <td style="font-weight: bold; margin-top: 10px;">{{ 'Payment Method'|t }}</td>
@@ -105,6 +117,18 @@
                   </td>
                 </tr>
               {% endif %}
+              {% if payment_instructions %}
+                <tr>
+                  <td style="font-weight: bold; margin-top: 10px;">{{ 'Payment instructions'|t }}</td>
+                </tr>
+                <tr>
+                  <td>
+                    {% block payment_instructions %}
+                      {{ payment_instructions }}
+                    {% endblock %}
+                  </td>
+                </tr>
+              {% endif %}
               </tbody>
             </table>
             {% endif %}
diff --git a/modules/payment/commerce_payment.module b/modules/payment/commerce_payment.module
index 095c6edb..d56b2539 100644
--- a/modules/payment/commerce_payment.module
+++ b/modules/payment/commerce_payment.module
@@ -167,4 +167,29 @@ function commerce_payment_preprocess_commerce_order_receipt(&$variables) {
       '#markup' => $order->get('payment_method')->first()->entity->label(),
     ];
   }
+
+  // Add payment gateway and payment instruction data if available for the order.
+  if ($order->get('payment_gateway')->isEmpty()) {
+    return;
+  }
+
+  /** @var \Drupal\commerce_payment\Entity\PaymentGatewayInterface $payment_gateway */
+  $payment_gateway = $order->get('payment_gateway')->entity;
+  // Set payment gateway label on template variable:
+  $variables['payment_gateway'] = $payment_gateway->get("label");
+  /** @var \Drupal\commerce_payment\Plugin\Commerce\PaymentGateway\HasPaymentInstructionsInterface $payment_gateway_plugin */
+  $payment_gateway_plugin = $payment_gateway->getPlugin();
+  if ($payment_gateway_plugin instanceof HasPaymentInstructionsInterface) {
+    $payment_storage = \Drupal::entityTypeManager()->getStorage('commerce_payment');
+    $payments = $payment_storage->loadMultipleByOrder($order);
+    $payments = array_filter($payments, function ($payment) use ($payment_gateway) {
+      return $payment->getPaymentGatewayId() == $payment_gateway->id();
+    });
+
+    $payment = reset($payments);
+    if ($payment) {
+      // Set payment payment instruction data on template variable:
+      $variables['payment_instructions'] = $payment_gateway_plugin->buildPaymentInstructions($payment);
+    }
+  }
 }
