diff --git a/payment/payment.classes.inc b/payment/payment.classes.inc
index a7fefbb..f9b8e69 100644
--- a/payment/payment.classes.inc
+++ b/payment/payment.classes.inc
@@ -48,6 +48,16 @@ class Payment extends PaymentCommon {
   public $currency_code = 'XXX';
 
   /**
+   * The ISO 4217 currency code of the payment amount. Do not set directly, but
+   * use Payment::setStatus() instead.
+   *
+   * @see Payment::setStatus()
+   *
+   * @var PaymentStatusItem
+   */
+  public $current_status = NULL;
+
+  /**
    * The general description of this payment. Not to be confused with line item
    * descriptions.
    *
@@ -266,6 +276,7 @@ class Payment extends PaymentCommon {
     $previous_status_item = $this->getStatus();
     $status_item->pid = $this->pid;
     $this->statuses[] = $status_item;
+    $this->current_status = $status_item;
     foreach (module_implements('payment_status_change') as $module_name) {
       call_user_func($module_name . '_payment_status_change', $this, $previous_status_item);
       // If a hook invocation has added another log item, a new loop with
diff --git a/payment/payment.module b/payment/payment.module
index ee8f7fc..5e641df 100644
--- a/payment/payment.module
+++ b/payment/payment.module
@@ -491,6 +491,34 @@ function payment_entity_property_info() {
     'required' => TRUE,
     'schema field' => 'currency_code',
   );
+  $properties['payment']['properties']['current_status'] = array(
+    'label' => t('Currenct status'),
+    'required' => TRUE,
+    'type' => 'struct',
+    'property info' => array(
+      'created' => array(
+        'label' => t('Created date and time'),
+        'required' => TRUE,
+        'type' => 'date',
+      ),
+      'pid' => array(
+        'label' => t('Payment ID'),
+        'required' => TRUE,
+        'type' => 'integer',
+      ),
+      'psiid' => array(
+        'label' => t('Payment status item ID'),
+        'required' => TRUE,
+        'type' => 'integer',
+      ),
+      'status' => array(
+        'label' => t('Status'),
+        'required' => TRUE,
+        'type' => 'text',
+        'options list' => 'payment_status_options',
+      ),
+    ),
+  );
   $properties['payment']['properties']['description'] = array(
     'label' => t('Description'),
     'schema field' => 'description',
diff --git a/payment/payment.rules.inc b/payment/payment.rules.inc
index c5d8473..f91c3c1 100644
--- a/payment/payment.rules.inc
+++ b/payment/payment.rules.inc
@@ -6,6 +6,20 @@
  */
 
 /**
+ * Implements hook_rules_data_info().
+ */
+function payment_rules_data_info() {
+  $entity_property_info = payment_entity_property_info();
+  $data['payment_status_item'] = array(
+    'label' => t('Payment status item'),
+    'group' => t('Payment'),
+    'property info' => $entity_property_info['payment']['properties']['current_status']['property info'],
+  );
+
+  return $data;
+}
+
+/**
  * Implements hook_rules_event_info().
  */
 function payment_rules_event_info() {
@@ -19,7 +33,7 @@ function payment_rules_event_info() {
         'label' => t('Payment'),
       ),
       'payment_old_status' => array(
-        'type' => 'text',
+        'type' => 'payment_status_item',
         'label' => t("The payment's old status"),
       ),
     ),
