diff --git a/payment/payment.api.php b/payment/payment.api.php
index 3991a87..5911fa0 100644
--- a/payment/payment.api.php
+++ b/payment/payment.api.php
@@ -197,6 +197,8 @@ function hook_payment_pre_refund(PaymentInterface $payment) {}
 /**
  * Alters the IDs of payments available for referencing through an instance.
  *
+ * @param string $queue_id
+ *   The ID of the queue.
  * @param string $category_id
  *   The ID of the category to load payment IDs for.
  * @param integer $owner_id
@@ -212,7 +214,7 @@ function hook_payment_pre_refund(PaymentInterface $payment) {}
  * \Drupal\payment\Event\PaymentEvents::PAYMENT_QUEUE_PAYMENT_IDS_ALTER Symfony
  * event instead.
  */
-function hook_payment_queue_payment_ids_alter($category_id, $owner_id, array &$payment_ids) {
+function hook_payment_queue_payment_ids_alter($queue_id, $category_id, $owner_id, array &$payment_ids) {
   // Add or remove payment IDs. All IDs MUST be stored in the queue before they
   // can be used.
 }
diff --git a/payment/src/Event/PaymentQueuePaymentIdsAlter.php b/payment/src/Event/PaymentQueuePaymentIdsAlter.php
index 614b940..bc945e8 100644
--- a/payment/src/Event/PaymentQueuePaymentIdsAlter.php
+++ b/payment/src/Event/PaymentQueuePaymentIdsAlter.php
@@ -39,9 +39,18 @@ class PaymentQueuePaymentIdsAlter extends Event implements AccessInterface {
    */
   protected $paymentIds;
 
+  /**
+   * The queue ID.
+   *
+   * @var string
+   */
+  protected $queueId;
+
   /**-
    * Constructs a new class instance.
    *
+   * @param string $queue_id
+   *   The queue ID.
    * @param string $category_id
    *   The queue category ID.
    * @param int $owner_id
@@ -49,10 +58,20 @@ class PaymentQueuePaymentIdsAlter extends Event implements AccessInterface {
    * @param int[] $payment_ids
    *   The IDs of available payments as loaded by the queue.
    */
-  public function __construct($category_id, $owner_id, array &$payment_ids) {
+  public function __construct($queue_id, $category_id, $owner_id, array &$payment_ids) {
     $this->categoryId = $category_id;
     $this->ownerId = $owner_id;
     $this->paymentIds = $payment_ids;
+    $this->queueId = $queue_id;
+  }
+
+  /**
+   * Gets the queue ID.
+   *
+   * @return string
+   */
+  public function getQueueId() {
+    return $this->queueId;
   }
 
   /**
diff --git a/payment/src/Queue.php b/payment/src/Queue.php
index 2f772a5..d004998 100644
--- a/payment/src/Queue.php
+++ b/payment/src/Queue.php
@@ -206,10 +206,10 @@ class Queue implements QueueInterface {
    * @return int[] $payment_ids
    */
   protected function alterLoadedPaymentIds($category_id, $owner_id, array $payment_ids) {
-    $event = new PaymentQueuePaymentIdsAlter($category_id, $owner_id, $payment_ids);
+    $event = new PaymentQueuePaymentIdsAlter($this->queueId, $category_id, $owner_id, $payment_ids);
     $this->eventDispatcher->dispatch(PaymentEvents::PAYMENT_QUEUE_PAYMENT_IDS_ALTER, $event);
     $payment_ids = $event->getPaymentIds();
-    $this->moduleHandler->alter('payment_queue_payment_ids', $category_id, $owner_id, $payment_ids);
+    $this->moduleHandler->alter('payment_queue_payment_ids', $this->queueId, $category_id, $owner_id, $payment_ids);
     // @todo Add a Rules event.
 
     return $payment_ids;
diff --git a/payment/tests/src/Event/PaymentQueuePaymentIdsAlterUnitTest.php b/payment/tests/src/Event/PaymentQueuePaymentIdsAlterUnitTest.php
index cf80942..77f12d1 100644
--- a/payment/tests/src/Event/PaymentQueuePaymentIdsAlterUnitTest.php
+++ b/payment/tests/src/Event/PaymentQueuePaymentIdsAlterUnitTest.php
@@ -46,6 +46,13 @@ class PaymentQueuePaymentIdsAlterUnitTest extends UnitTestCase {
   protected $paymentIds;
 
   /**
+   * The queue ID.
+   *
+   * @var string
+   */
+  protected $queueId;
+
+  /**
    * {@inheritdoc}
    *
    * @covers ::__construct
@@ -57,7 +64,14 @@ class PaymentQueuePaymentIdsAlterUnitTest extends UnitTestCase {
 
     $this->paymentIds = array($this->randomName());
 
-    $this->event = new PaymentQueuePaymentIdsAlter($this->categoryId, $this->ownerId, $this->paymentIds);
+    $this->event = new PaymentQueuePaymentIdsAlter($this->queueId, $this->categoryId, $this->ownerId, $this->paymentIds);
+  }
+
+  /**
+   * @covers ::getQueueId
+   */
+  public function testGetQueueId() {
+    $this->assertSame($this->queueId, $this->event->getQueueId());
   }
 
   /**
diff --git a/payment/tests/src/QueueUnitTest.php b/payment/tests/src/QueueUnitTest.php
index 23a571d..51b2b50 100644
--- a/payment/tests/src/QueueUnitTest.php
+++ b/payment/tests/src/QueueUnitTest.php
@@ -94,11 +94,11 @@ class QueueUnitTest extends UnitTestCase {
 
     $this->moduleHandler->expects($this->once())
       ->method('alter')
-      ->with('payment_queue_payment_ids', $category_id, $owner_id, $payment_ids);
+      ->with('payment_queue_payment_ids', $this->queueId, $category_id, $owner_id, $payment_ids);
 
     $this->eventDispatcher->expects($this->once())
       ->method('dispatch')
-      ->with(PaymentEvents::PAYMENT_QUEUE_PAYMENT_IDS_ALTER);
+      ->with(PaymentEvents::PAYMENT_QUEUE_PAYMENT_IDS_ALTER, $this->isInstanceOf('\Drupal\payment\Event\PaymentQueuePaymentIdsAlter'));
 
     $method = new \ReflectionMethod($this->queue, 'alterLoadedPaymentIds');
     $method->setAccessible(TRUE);
diff --git a/payment_test/payment_test.module b/payment_test/payment_test.module
index 1af772d..0fad9b6 100644
--- a/payment_test/payment_test.module
+++ b/payment_test/payment_test.module
@@ -18,6 +18,6 @@ function payment_test_payment_status_set(PaymentInterface $payment, PaymentStatu
 /**
  * Implements hook_payment_queue_payment_ids_alter().
  */
-function payment_test_payment_queue_payment_ids_alter($field_instance_config_id, $owner_id, array &$payment_ids) {
+function payment_test_payment_queue_payment_ids_alter($queue_id, $category_id, $owner_id, array &$payment_ids) {
   \Drupal::state()->set('payment_test_payment_queue_payment_ids_alter', TRUE);
 }
