diff --git a/modules/payment/src/PaymentStorage.php b/modules/payment/src/PaymentStorage.php
index bf0bb663..9576c49d 100644
--- a/modules/payment/src/PaymentStorage.php
+++ b/modules/payment/src/PaymentStorage.php
@@ -3,6 +3,7 @@
 namespace Drupal\commerce_payment;
 
 use Drupal\commerce\CommerceContentEntityStorage;
+use Drupal\commerce_order\Entity\OrderInterface;
 use Drupal\Core\Entity\EntityStorageException;
 
 /**
@@ -13,6 +14,21 @@ class PaymentStorage extends CommerceContentEntityStorage {
   /**
    * {@inheritdoc}
    */
+  public function loadForOrder(OrderInterface $order) {
+    $query = $this->getQuery()
+      ->condition('order_id', $order->id())
+      ->sort('payment_id', 'DESC');
+    $result = $query->execute();
+    if (empty($result)) {
+      return [];
+    }
+
+    return $this->loadMultiple($result);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   protected function doCreate(array $values) {
     if (!isset($values['payment_gateway'])) {
       throw new EntityStorageException('Missing "payment_gateway" property when creating a payment.');
diff --git a/modules/payment/src/PaymentStorageInterface.php b/modules/payment/src/PaymentStorageInterface.php
new file mode 100644
index 00000000..27b69ba4
--- /dev/null
+++ b/modules/payment/src/PaymentStorageInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\commerce_payment;
+
+use Drupal\Core\Entity\ContentEntityStorageInterface;
+use Drupal\commerce_order\Entity\OrderInterface;
+
+/**
+ * Defines the interface for the payment storage.
+ */
+interface PaymentStorageInterface extends ContentEntityStorageInterface {
+
+  /**
+   * Loads all the payments for the given order.
+   *
+   * @param \Drupal\commerce_order\Entity\OrderInterface $order
+   *   The order.
+   *
+   * @return \Drupal\commerce_payment\Entity\PaymentInterface[]
+   *   The payments.
+   */
+  public function loadForOrder(OrderInterface $order);
+
+}
