diff --git a/includes/pgapi.forms.inc b/includes/pgapi.forms.inc
new file mode 100644
index 0000000..1cb7809
--- /dev/null
+++ b/includes/pgapi.forms.inc
@@ -0,0 +1,200 @@
+<?php
+
+/**
+ * @file
+ * Forms for creating, editing, and deleting payments.
+ */
+
+/**
+ * Form callback: create or edit a payment.
+ *
+ * @param $payment
+ *   The payment object to edit or for a create form an empty payment object
+ *     with only a payment type defined.
+ * @todo
+ *   Add validation for this form.
+ */
+function pgapi_payment_form($form, &$form_state, $payment) {
+
+  // Add the field related form elements.
+  $form_state['payment'] = $payment;
+
+  $form['txnid'] = array(
+    '#type' => 'hidden',
+    '#title' => t('Payment ID'),
+    '#description' => t('Supply a unique digital identifier for this payment.'),
+    '#default_value' => $payment->txnid,
+    '#weight' => -10,
+  );
+
+  $form['title'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Title'),
+    '#default_value' => $payment->title,
+    '#maxlength' => 255,
+    '#required' => TRUE,
+    '#weight' => 5,
+  );
+
+  // TODO: Autocomplit field by User Name
+  $form['uid'] = array(
+    '#type' => 'textfield',
+    '#title' => t('User ID'),
+    '#description' => t('User name who create this payment.'),
+    '#default_value' => $payment->uid,
+    '#maxlength' => 255,
+    '#required' => TRUE,
+    '#weight' => 10,
+  );
+
+  $form['amount'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Amount'),
+    '#default_value' => $payment->amount,
+    '#maxlength' => 255,
+    '#required' => TRUE,
+    '#weight' => 15,
+  );
+
+  // $form['service'] = array();
+  // $form['gateway'] = array();
+  
+  $form['description'] = array(
+    '#type' => 'textarea',
+    '#title' => t('Description'),
+    '#default_value' => $payment->description,
+    '#weight' => 20,
+  );
+
+  $form['status'] = array(
+    '#type' => 'select',
+    '#title' => t('Status'),
+    '#options' => array(
+      '1' => t('Pending'),
+      '2' => t('Complited'),
+      '3' => t('Failed'),
+      '4' => t('Denied'),
+      '5' => t('Refunded'),
+      '6' => t('Canceled'),
+      '7' => t('Received'),
+    ),
+    '#default_value' => $payment->status,
+    '#required' => TRUE,
+    '#weight' => 25,
+  );
+
+  $form['workflow'] = array(
+    '#type' => 'select',
+    '#title' => t('Workflow'),
+    '#options' => array(
+      '1' => t('Received'),
+      '2' => t('Invoiced'),
+      '3' => t('Shipped'),
+      '4' => t('Awaiting Response'),
+      '5' => t('Canceled'),
+      '6' => t('Complited'),
+      '6' => t('Security Violation'),
+    ),
+    '#default_value' => $payment->workflow,
+    '#required' => TRUE,
+    '#weight' => 25,
+  );
+
+  $form['dates_info'] = array(
+    '#markup' => t('Created Date: ') . format_date($payment->created, 'long') . '<br>' . t('Changed Date: ') . format_date($payment->changed, 'long'),
+    '#weight' => 30,
+  );
+
+  $form['actions'] = array(
+    '#type' => 'container',
+    '#attributes' => array('class' => array('form-actions')),
+    '#weight' => 400,
+  );
+
+  // We add the form's #submit array to this button along with the actual submit
+  // handler to preserve any submit handlers added by a form callback_wrapper.
+  $submit = array();
+
+  if (!empty($form['#submit'])) {
+    $submit += $form['#submit'];
+  }
+
+  $form['actions']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save payment'),
+    '#submit' => array_merge($submit, array('pgapi_payment_form_submit')),
+  );
+
+  // $form['#validate'][] = 'pgapi_payment_form_validate';
+
+  return $form;
+}
+
+/**
+ * Submit callback for pgapi_payment_form().
+ */
+function pgapi_payment_form_submit($form, &$form_state) {
+  $payment = &$form_state['payment'];
+
+  // Save default parameters back into the $payment object.
+  $payment->title = $form_state['values']['title'];
+  $payment->amount = $form_state['values']['amount'];
+  $payment->uid = $form_state['values']['uid'];
+  // payment->service = $form_state['values']['service'];
+  // payment->gateway = $form_state['values']['gateway'];
+  $payment->description = $form_state['values']['description'];
+  $payment->status = $form_state['values']['status'];
+  $payment->workflow = $form_state['values']['workflow'];
+  $payment->changed = time();
+
+  // Save the transaction.
+  pgapi_transaction_save($payment);
+
+  // Redirect based on the button clicked.
+  drupal_set_message(t('Payment ID %payment_id saved.', array('%payment_id' => $payment->txnid)));
+}
+
+/**
+ * Form callback: confirmation form for deleting a payment.
+ *
+ * @param $product
+ *   The payment object to be deleted.
+ *
+ * @see confirm_form()
+ */
+function pgapi_ui_payment_delete_form($form, &$form_state, $payment) {
+  $form_state['payment'] = $payment;
+
+  // Ensure this include file is loaded when the form is rebuilt from the cache.
+  $form_state['build_info']['files']['form'] = drupal_get_path('module', 'pgapi') . '/includes/pgapi.forms.inc';
+
+  $form['#submit'][] = 'pgapi_payment_delete_form_submit';
+
+  // $content = entity_view('payment', array($ppayment->txnid => $payment));
+
+  $form = confirm_form($form,
+    t('Are you sure you want to delete %title?', array('%title' => $product->title)),
+    '',
+    drupal_render($content) . '<p>' . t('Deleting this payment cannot be undone.', array('@payment_id' => $payment->txnid)) . '</p>',
+    t('Delete'),
+    t('Cancel'),
+    'confirm'
+  );
+
+  return $form;
+}
+
+/**
+ * Submit callback for pgapi_payment_delete_form().
+ */
+function pgapi_payment_delete_form_submit($form, &$form_state) {
+  $payment = $form_state['payment'];
+
+  if (pgapi_transaction_delete($payment->txnid)) {
+    drupal_set_message(t('Payment ID %payment_id has been deleted.', array('%payment_id' => $payment->txnid)));
+    watchdog('commerce_product', 'Deleted payment %title (ID: @txnid).', array('%title' => $payment->title, '@txnid' => $paymeny->txnid), WATCHDOG_NOTICE);
+  }
+  else {
+    drupal_set_message(t('Payment ID %payment_id could not be deleted.', array('%payment_id' => $payment->txnid)), 'error');
+  }
+}
\ No newline at end of file
diff --git a/includes/pgapi_ui.payments.inc b/includes/pgapi_ui.payments.inc
new file mode 100644
index 0000000..1da5be3
--- /dev/null
+++ b/includes/pgapi_ui.payments.inc
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @file
+ *  Page callbacks and form builder functions for administering payments.
+ */
+
+/**
+ * Menu item title callback.
+ *
+ * @param $payment
+ *   The payment object as loaded via the URL wildcard.
+ * @return
+ *   A page title of the format "Payment: [ID]".
+ */
+function pgapi_ui_payment_title($payment) {
+  return t('Payment: @id', array('@id' => $payment->txnid));
+}
+
+/**
+ * Form callback wrapper: create or edit a payment.
+ *
+ * @param $payment
+ *   The payment object being edited by this form.
+ *
+ * @see pgapi_payment_form()
+ */
+function pgapi_ui_payment_form_wrapper($payment) {
+  // Include the forms file from the PGAPI module.
+  module_load_include('inc', 'pgapi', 'includes/pgapi.forms');
+  return drupal_get_form('payment_ui_payment_form', $payment);
+}
+
+/**
+ * Form callback wrapper: confirmation form for deleting a payment.
+ *
+ * @param $payment
+ *   The payment object being deleted by this form.
+ *
+ * @see pgapi_payment_delete_form()
+ */
+function pgapi_ui_payment_delete_form_wrapper($payment) {
+  // Include the forms file from the PGAPI module.
+  module_load_include('inc', 'pgapi', 'includes/pgapi.forms');
+  return drupal_get_form('pgapi_ui_payment_delete_form', $payment);
+}
\ No newline at end of file
diff --git a/includes/views/handlers/pgapi_handler_field_payment_status.inc b/includes/views/handlers/pgapi_handler_field_payment_status.inc
new file mode 100644
index 0000000..18af0fa
--- /dev/null
+++ b/includes/views/handlers/pgapi_handler_field_payment_status.inc
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * Field handler to translate an order status into its readable form.
+ */
+class pgapi_handler_field_payment_status extends pgapi_handler_field_transaction {
+  function render($values) {
+    $id = $this->get_value($values);
+    $value = pgapi_get_status($id);
+
+    // Only attempt to render a valid order status.
+    if (!is_array($value)) {
+      return $this->render_link($this->sanitize_value($value), $values);
+    }
+  }
+}
\ No newline at end of file
diff --git a/includes/views/handlers/pgapi_handler_field_transaction.inc b/includes/views/handlers/pgapi_handler_field_transaction.inc
new file mode 100644
index 0000000..e695c4d
--- /dev/null
+++ b/includes/views/handlers/pgapi_handler_field_transaction.inc
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @file
+ *   Contains the basic transaction field handler.
+ */
+
+/**
+ * Field handler to provide simple renderer that allows linking to a transaction.
+ */
+class pgapi_handler_field_transaction extends views_handler_field {
+  function init(&$view, &$options) {
+    parent::init($view, $options);
+
+    if (!empty($this->options['link_to_transaction'])) {
+      $this->additional_fields['txnid'] = 'txnid';
+    }
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['link_to_transaction'] = array('default' => FALSE);
+
+    return $options;
+  }
+
+  /**
+   * Provide the link to transaction option.
+   */
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['link_to_transaction'] = array(
+      '#title' => t("Link this field to the transaction's administrative view page"),
+      '#description' => t('This will override any other link you have set.'),
+      '#type' => 'checkbox',
+      '#default_value' => !empty($this->options['link_to_transaction']),
+    );
+  }
+
+  /**
+   * Render whatever the data is as a link to the transaction.
+   *
+   * Data should be made XSS safe prior to calling this function.
+   */
+  function render_link($data, $values) {
+    if (!empty($this->options['link_to_transaction']) && $data !== NULL && $data !== '') {
+      $transaction_id = $this->get_value($values, 'txnid');
+      $this->options['alter']['make_link'] = TRUE;
+      $this->options['alter']['path'] = 'admin/pgapi/payments/' . $transaction_id;
+    }
+
+    return $data;
+  }
+
+  function render($values) {
+    $value = $this->get_value($values);
+    return $this->render_link($this->sanitize_value($value), $values);
+  }
+}
\ No newline at end of file
diff --git a/includes/views/handlers/pgapi_handler_field_transaction_link.inc b/includes/views/handlers/pgapi_handler_field_transaction_link.inc
new file mode 100644
index 0000000..d44d1a6
--- /dev/null
+++ b/includes/views/handlers/pgapi_handler_field_transaction_link.inc
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * Field handler to present a link to a payment.
+ */
+class pgapi_handler_field_transaction_link extends views_handler_field {
+  function construct() {
+    parent::construct();
+
+    $this->additional_fields['txnid'] = 'txnid';
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['text'] = array('default' => '', 'translatable' => TRUE);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['text'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text to display'),
+      '#default_value' => $this->options['text'],
+    );
+  }
+
+  function query() {
+    $this->ensure_my_table();
+    $this->add_additional_fields();
+  }
+
+  function render($values) {
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('view');
+    $payment_id = $this->get_value($values, 'txnid');
+
+    return l($text, 'admin/pgapi/payments/' . $payment_id);
+  }
+}
\ No newline at end of file
diff --git a/includes/views/handlers/pgapi_handler_field_transaction_link_delete.inc b/includes/views/handlers/pgapi_handler_field_transaction_link_delete.inc
new file mode 100644
index 0000000..f183a4f
--- /dev/null
+++ b/includes/views/handlers/pgapi_handler_field_transaction_link_delete.inc
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * Field handler to present a link to delete a product.
+ */
+class pgapi_handler_field_transaction_link_delete extends pgapi_handler_field_transaction_link {
+  function construct() {
+    parent::construct();
+
+    // $this->additional_fields['type'] = 'type';
+    $this->additional_fields['uid'] = 'uid';
+  }
+
+  function render($values) {
+    // Ensure the user has access to delete this product.
+    $payment_id = $this->get_value($values, 'txnid');
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('delete');
+
+    return l($text, 'admin/pgapi/payments/' . $payment_id . '/delete', array('query' => drupal_get_destination()));
+  }
+}
\ No newline at end of file
diff --git a/includes/views/handlers/pgapi_handler_field_transaction_link_edit.inc b/includes/views/handlers/pgapi_handler_field_transaction_link_edit.inc
new file mode 100644
index 0000000..b0f227b
--- /dev/null
+++ b/includes/views/handlers/pgapi_handler_field_transaction_link_edit.inc
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * Field handler to present a payment edit link.
+ */
+class pgapi_handler_field_transaction_link_edit extends pgapi_handler_field_transaction_link {
+  function construct() {
+    parent::construct();
+
+    // $this->additional_fields['type'] = 'type';
+    $this->additional_fields['uid'] = 'uid';
+  }
+
+  function render($values) {
+    // Ensure the user has access to edit this payment.
+    $payment_id = $this->get_value($values, 'txnid');
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('edit');
+
+    return l($text, 'admin/pgapi/payments/' . $payment_id . '/edit', array('query' => drupal_get_destination()));
+  }
+}
\ No newline at end of file
diff --git a/includes/views/handlers/pgapi_handler_field_transaction_operations.inc b/includes/views/handlers/pgapi_handler_field_transaction_operations.inc
new file mode 100644
index 0000000..0fd2b00
--- /dev/null
+++ b/includes/views/handlers/pgapi_handler_field_transaction_operations.inc
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * Field handler to present a payment's operations links.
+ */
+class pgapi_handler_field_transaction_operations extends views_handler_field {
+  function construct() {
+    parent::construct();
+
+    $this->additional_fields['txnid'] = 'txnid';
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['add_destination'] = TRUE;
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['add_destination'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Add a destination parameter to operations links so users return to this View on form submission.'),
+      '#default_value' => $this->options['add_destination'],
+    );
+  }
+
+  function query() {
+    $this->ensure_my_table();
+    $this->add_additional_fields();
+  }
+
+  function render($values) {
+    $payment_id = $this->get_value($values, 'txnid');
+
+    // Get the operations links.
+    $links = menu_contextual_links('pgapi', 'admin/pgapi/payments', array($payment_id));
+
+    if (!empty($links)) {
+      // Add the destination to the links if specified.
+      if ($this->options['add_destination']) {
+        foreach ($links as $id => &$link) {
+          $link['query'] = drupal_get_destination();
+        }
+      }
+
+      drupal_add_css(drupal_get_path('module', 'pgapi') . '/pgapi.admin.css');
+      return theme('links', array('links' => $links, 'attributes' => array('class' => array('links', 'inline', 'operations'))));
+    }
+  }
+}
\ No newline at end of file
diff --git a/includes/views/pgapi.views.inc b/includes/views/pgapi.views.inc
new file mode 100644
index 0000000..f8b29bd
--- /dev/null
+++ b/includes/views/pgapi.views.inc
@@ -0,0 +1,162 @@
+<?php
+
+/**
+ * @file
+ *   Export PGAPI payments to Views
+ */
+
+/**
+ * Implements hook_views_data()
+ */
+function pgapi_views_data() {
+  $data = array();
+
+  $data['pgapi_transaction']['table']['group']  = t('Payment Transaction');
+
+  $data['pgapi_transaction']['table']['base'] = array(
+    'field' => 'txnid',
+    'title' => t('Payment Transaction'),
+    'access query tag' => 'node_access',
+  );
+  // $data['pgapi_transaction']['table']['entity type'] = 'pgapi_transaction';
+
+  // Expose the transaction ID.
+  $data['pgapi_transaction']['txnid'] = array(
+    'title' => t('Transaction ID'),
+    'help' => t('The unique internal identifier of the transaction.'),
+    'field' => array(
+      'handler' => 'pgapi_handler_field_transaction',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // Expose the payment title.
+  $data['pgapi_transaction']['title'] = array(
+    'title' => t('Title'),
+    'help' => t('The title of the transaction used for administrative display.'),
+    'field' => array(
+      'handler' => 'pgapi_handler_field_transaction',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  // Expose the payment amount.
+  $data['pgapi_transaction']['amount'] = array(
+    'title' => t('Payment amount'),
+    'help' => t('The sum of created transaction payment.'),
+    'field' => array(
+      'handler' => 'pgapi_handler_field_transaction',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // Expose the creator uid.
+  $data['pgapi_transaction']['uid'] = array(
+    'title' => t('Creator'),
+    'help' => t('Relate a payment to the user who created it.'),
+    'relationship' => array(
+      'handler' => 'views_handler_relationship',
+      'base' => 'users',
+      'field' => 'uid',
+      'label' => t('Payment creator'),
+    ),
+  );
+
+  // Expose the payment status.
+  $data['pgapi_transaction']['status'] = array(
+    'title' => t('Status'),
+    'help' => t('Current status of payment transaction.'),
+    'field' => array(
+      'handler' => 'pgapi_handler_field_payment_status',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // Expose the created and changed timestamps.
+  $data['pgapi_transaction']['created'] = array(
+    'title' => t('Created date'),
+    'help' => t('The date the payment was created.'),
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+  );
+
+  $data['pgapi_transaction']['changed'] = array(
+    'title' => t('Updated date'),
+    'help' => t('The date the payment was last updated.'),
+    'field' => array(
+      'handler' => 'views_handler_field_date',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort_date',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_date',
+    ),
+  );
+
+  // Expose links to operate on the payment.
+  $data['pgapi_transaction']['view_transaction'] = array(
+    'field' => array(
+      'title' => t('Link'),
+      'help' => t('Provide a simple link to the administrator view of the payment.'),
+      'handler' => 'pgapi_handler_field_transaction_link',
+    ),
+  );
+  $data['pgapi_transaction']['edit_transaction'] = array(
+    'field' => array(
+      'title' => t('Edit link'),
+      'help' => t('Provide a simple link to edit the payment.'),
+      'handler' => 'pgapi_handler_field_transaction_link_edit',
+    ),
+  );
+  $data['pgapi_transaction']['delete_transaction'] = array(
+    'field' => array(
+      'title' => t('Delete link'),
+      'help' => t('Provide a simple link to delete the payment.'),
+      'handler' => 'pgapi_handler_field_transaction_link_delete',
+    ),
+  );
+
+  $data['pgapi_transaction']['operations'] = array(
+    'field' => array(
+      'title' => t('Operations links'),
+      'help' => t('Display all the available operations links for the payment transaction.'),
+      'handler' => 'pgapi_handler_field_transaction_operations',
+    ),
+  );
+
+  return $data;
+}
\ No newline at end of file
diff --git a/includes/views/pgapi.views_default.inc b/includes/views/pgapi.views_default.inc
new file mode 100644
index 0000000..4b36190
--- /dev/null
+++ b/includes/views/pgapi.views_default.inc
@@ -0,0 +1,193 @@
+<?php
+
+/**
+ * @file
+ *   Views for the default transactions UI.
+ */
+
+/**
+ * Implements hook_views_default_views().
+ */
+function pgapi_views_default_views() {
+  $views = array();
+
+  // Payments admin list at admin/reports/payments.
+  $view = new view();
+  $view->name = 'pgapi_payments';
+  $view->description = 'Display a list of payments for site admin.';
+  $view->tag = 'payments';
+  $view->base_table = 'pgapi_transaction';
+  $view->human_name = 'Payments';
+  $view->core = 7;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Master */
+  $handler = $view->new_display('default', 'Master', 'default');
+  $handler->display->display_options['title'] = 'Payments';
+  $handler->display->display_options['use_more_always'] = FALSE;
+  $handler->display->display_options['use_more_text'] = 'more';
+  $handler->display->display_options['access']['type'] = 'role';
+  $handler->display->display_options['access']['role'] = array(
+    3 => '3',
+  );
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['exposed_form']['options']['submit_button'] = 'Apply';
+  $handler->display->display_options['exposed_form']['options']['reset_button'] = TRUE;
+  $handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Reset';
+  $handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Sort by';
+  $handler->display->display_options['exposed_form']['options']['sort_asc_label'] = 'Asc';
+  $handler->display->display_options['exposed_form']['options']['sort_desc_label'] = 'Desc';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['pager']['options']['items_per_page'] = '50';
+  $handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Items per page';
+  $handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- All -';
+  $handler->display->display_options['pager']['options']['expose']['offset_label'] = 'Offset';
+  $handler->display->display_options['pager']['options']['tags']['first'] = '« first';
+  $handler->display->display_options['pager']['options']['tags']['previous'] = '‹ prev';
+  $handler->display->display_options['pager']['options']['tags']['next'] = 'next ›';
+  $handler->display->display_options['pager']['options']['tags']['last'] = 'last »';
+  $handler->display->display_options['style_plugin'] = 'table';
+  $handler->display->display_options['style_options']['columns'] = array(
+    'txnid' => 'txnid',
+    'title' => 'title',
+    'amount' => 'amount',
+    'status' => 'status',
+    'delete_transaction' => 'delete_transaction',
+  );
+  $handler->display->display_options['style_options']['default'] = 'txnid';
+  $handler->display->display_options['style_options']['info'] = array(
+    'txnid' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'title' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'amount' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'status' => array(
+      'sortable' => 1,
+      'default_sort_order' => 'asc',
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+    'delete_transaction' => array(
+      'align' => '',
+      'separator' => '',
+      'empty_column' => 0,
+    ),
+  );
+  $handler->display->display_options['style_options']['empty_table'] = TRUE;
+  /* Поведение при отсутствии результатов: Глобальный: Текстовое поле */
+  $handler->display->display_options['empty']['area']['id'] = 'area';
+  $handler->display->display_options['empty']['area']['table'] = 'views';
+  $handler->display->display_options['empty']['area']['field'] = 'area';
+  $handler->display->display_options['empty']['area']['empty'] = TRUE;
+  $handler->display->display_options['empty']['area']['content'] = 'At now Payments not found.';
+  $handler->display->display_options['empty']['area']['format'] = 'full_html';
+  /* Поле: Payment Transaction: Код транзакции */
+  $handler->display->display_options['fields']['txnid']['id'] = 'txnid';
+  $handler->display->display_options['fields']['txnid']['table'] = 'pgapi_transaction';
+  $handler->display->display_options['fields']['txnid']['field'] = 'txnid';
+  $handler->display->display_options['fields']['txnid']['label'] = 'ID';
+  $handler->display->display_options['fields']['txnid']['link_to_transaction'] = 0;
+  /* Поле: Payment Transaction: Заголовок */
+  $handler->display->display_options['fields']['title']['id'] = 'title';
+  $handler->display->display_options['fields']['title']['table'] = 'pgapi_transaction';
+  $handler->display->display_options['fields']['title']['field'] = 'title';
+  $handler->display->display_options['fields']['title']['link_to_transaction'] = 1;
+  /* Поле: Payment Transaction: Payment amount */
+  $handler->display->display_options['fields']['amount']['id'] = 'amount';
+  $handler->display->display_options['fields']['amount']['table'] = 'pgapi_transaction';
+  $handler->display->display_options['fields']['amount']['field'] = 'amount';
+  $handler->display->display_options['fields']['amount']['label'] = 'Amount';
+  $handler->display->display_options['fields']['amount']['link_to_transaction'] = 0;
+  /* Поле: Payment Transaction: Состояние */
+  $handler->display->display_options['fields']['status']['id'] = 'status';
+  $handler->display->display_options['fields']['status']['table'] = 'pgapi_transaction';
+  $handler->display->display_options['fields']['status']['field'] = 'status';
+  $handler->display->display_options['fields']['status']['link_to_transaction'] = 0;
+  /* Поле: Payment Transaction: Operations links */
+  $handler->display->display_options['fields']['operations']['id'] = 'operations';
+  $handler->display->display_options['fields']['operations']['table'] = 'pgapi_transaction';
+  $handler->display->display_options['fields']['operations']['field'] = 'operations';
+  $handler->display->display_options['fields']['operations']['label'] = 'Operations';
+  $handler->display->display_options['fields']['operations']['add_destination'] = 1;
+  /* Критерий сортировки: Payment Transaction: Код транзакции */
+  $handler->display->display_options['sorts']['txnid']['id'] = 'txnid';
+  $handler->display->display_options['sorts']['txnid']['table'] = 'pgapi_transaction';
+  $handler->display->display_options['sorts']['txnid']['field'] = 'txnid';
+  /* Критерий фильтра: Payment Transaction: Код транзакции */
+  $handler->display->display_options['filters']['txnid']['id'] = 'txnid';
+  $handler->display->display_options['filters']['txnid']['table'] = 'pgapi_transaction';
+  $handler->display->display_options['filters']['txnid']['field'] = 'txnid';
+  $handler->display->display_options['filters']['txnid']['exposed'] = TRUE;
+  $handler->display->display_options['filters']['txnid']['expose']['operator_id'] = 'txnid_op';
+  $handler->display->display_options['filters']['txnid']['expose']['label'] = 'Filter by transaction number';
+  $handler->display->display_options['filters']['txnid']['expose']['operator'] = 'txnid_op';
+  $handler->display->display_options['filters']['txnid']['expose']['identifier'] = 'payment_id';
+  $handler->display->display_options['filters']['txnid']['expose']['remember_roles'] = array(
+    2 => '2',
+    1 => 0,
+    3 => 0,
+  );
+
+  /* Display: Admin page */
+  $handler = $view->new_display('page', 'Admin page', 'page');
+  $handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
+  $handler->display->display_options['path'] = 'admin/reports/payments/list';
+  $handler->display->display_options['menu']['type'] = 'default tab';
+  $handler->display->display_options['menu']['title'] = 'List';
+  $handler->display->display_options['menu']['weight'] = '-10';
+  $handler->display->display_options['menu']['context'] = 0;
+  $handler->display->display_options['tab_options']['type'] = 'normal';
+  $handler->display->display_options['tab_options']['title'] = 'Payments';
+  $handler->display->display_options['tab_options']['description'] = 'Manage payments of your site.';
+  $handler->display->display_options['tab_options']['weight'] = '0';
+  $handler->display->display_options['tab_options']['name'] = 'management';
+  $translatables['pgapi_payments'] = array(
+    t('Master'),
+    t('Payments'),
+    t('more'),
+    t('Apply'),
+    t('Reset'),
+    t('Sort by'),
+    t('Asc'),
+    t('Desc'),
+    t('Items per page'),
+    t('- All -'),
+    t('Offset'),
+    t('« first'),
+    t('‹ prev'),
+    t('next ›'),
+    t('last »'),
+    t('At now Payments not found.'),
+    t('ID'),
+    t('Title'),
+    t('Amount'),
+    t('Status'),
+    t('Operations'),
+    t('Filter by transaction number'),
+    t('Admin page'),
+  );
+
+  $views[$view->name] = $view;
+
+  return $views;
+}
\ No newline at end of file
diff --git a/pg_paypal/pg_paypal.module b/pg_paypal/pg_paypal.module
index b93210b..099351c 100644
--- a/pg_paypal/pg_paypal.module
+++ b/pg_paypal/pg_paypal.module
@@ -1,5 +1,9 @@
 <?php
 
+/**
+ * @file
+ */
+
 // Constant definition
 define('cPaypalActionUrl',     'https://www.paypal.com/xclick/');
 define('cPaypalValidationUrl', 'https://www.paypal.com/cgi-bin/webscr');
@@ -16,14 +20,14 @@ function pg_paypal_menu() {
     'file' => 'pg_paypal.pages.inc',
     'type' => MENU_CALLBACK,
   );
-  $items['admin/pgdata/pgsettings/paypal'] = array(
+  $items['admin/config/pgapi/paypal'] = array(
     'title' => 'Paypal',
     'description' => 'Paypal payment settings.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('pg_paypal_settings'),
     'access arguments' => array('administer pgapi'),
     'file' => 'pg_paypal.admin.inc',
-    'type' => MENU_LOCAL_TASK,
+    'type' => MENU_CALLBACK,
   );
   return $items;
 }
@@ -38,7 +42,7 @@ function pg_paypal_pgapi_gw($op, $a3 = NULL, $a4 = NULL) {
       break;
     case 'payment gateway info':
       $ret['name'] = theme('image', array(
-        'path' => drupal_get_path('module', 'pg_paypal') . 'images//paypal.png',
+        'path' => drupal_get_path('module', 'pg_paypal') . '/images/paypal.png',
         'width' => t('Paypal'),
         'height' => t('Paypal'),
       ));
diff --git a/pg_roboxchange/pg_roboxchange.module b/pg_roboxchange/pg_roboxchange.module
index 8dde08e..e4aa138 100644
--- a/pg_roboxchange/pg_roboxchange.module
+++ b/pg_roboxchange/pg_roboxchange.module
@@ -40,6 +40,7 @@ function pg_roboxchange_menu() {
     'access arguments' => array('administer pgapi'),
     'file' => 'pg_roboxchange.admin.inc',
   );
+
   return $items;
 }
 
diff --git a/pg_showtransactions/pg_showtransactions.admin.inc b/pg_showtransactions/pg_showtransactions.admin.inc
index 543337d..a97d4bc 100644
--- a/pg_showtransactions/pg_showtransactions.admin.inc
+++ b/pg_showtransactions/pg_showtransactions.admin.inc
@@ -111,11 +111,20 @@ function pg_showtransactions_history() {
     t('Operations'),
   );
 
-  $sql = 'SELECT t.*, u.name FROM {pgapi_transaction} t LEFT JOIN {users} u ON u.uid=t.uid ' . $filters['join'] . ' ' . $filters['where'] . tablesort_sql($header);
+//  $sql = 'SELECT t.*, u.name FROM {pgapi_transaction} t LEFT JOIN {users} u ON u.uid = t.uid ' . $filters['join'] . ' ' . $filters['where'] . tablesort_sql($header);
+//  $result = pager_query($sql, variable_get('pg_showtransactions_default_num', 10), 0, NULL, $filters['args']);
 
-  $result = pager_query($sql, variable_get('pg_showtransactions_default_num', 10), 0, NULL, $filters['args']);
+  $query = db_select('pgapi_transaction', 't');
+  $query->extend('PagerDefault')->extend('TableSort');
+  $query->leftJoin('users', 'u', 't.uid = u.uid');
+  $query->fields('t');
+  $query->fields('u', array('name'));
+  //$query->limit(variable_get('pg_showtransactions_default_num', 10));
+  //$query->orderByHeader($header);
 
-  while ($txn = db_fetch_object($result)) {
+  $result = $query->execute();
+
+  foreach ($result as $txn) {
     $action = l(t('Edit'), "admin/reports/showtransactions/edit/" . $txn->txnid, array('query' => drupal_get_destination()));
     $rows[] = array(
       '<input type="checkbox" name="items[' . $txn->txnid . ']">',
@@ -131,15 +140,13 @@ function pg_showtransactions_history() {
       $action,
     );
   }
-  //while
-  $filter_form = drupal_get_form('pg_showtransactions_filter_form', 'history_filter');
 
+  $filter_form = drupal_get_form('pg_showtransactions_filter_form', 'history_filter');
   $output = theme('pg_showtransactions_history', array('rows' => $rows, 'filter_form' => $filter_form));
-  return $output;
 
+  return $output;
 }
 
-
 /**
  * @todo Please document this function.
  * @see http://drupal.org/node/1354
@@ -210,8 +217,8 @@ function pg_showtransactions_operator_history() {
   //while
   $filter_form = drupal_get_form('pg_showtransactions_filter_form', 'history_filter');
   $output = theme('pg_showtransactions_operator_history', array('rows' => $rows, 'filter_form' => $filter_form));
-  return $output;
 
+  return $output;
 }
 
 /**
@@ -288,8 +295,8 @@ function pg_showtransactions_personal_history() {
   //while
   $filter_form = drupal_get_form('pg_showtransactions_filter_form', 'personal_history_filter');
   $output .= theme('pg_showtransactions_personal_history', array('rows' => $rows, 'filter_form' => $filter_form));
-  return $output;
 
+  return $output;
 }
 
 /**
@@ -418,8 +425,6 @@ function pg_showtransactions_filter_form_submit($form, &$form_state) {
   }
 }
 
-
-
 /********************************************************************
  * Other Functions
  ********************************************************************/
@@ -550,9 +555,5 @@ function pg_showtransactions_personal_history_filters() {
     'options' => pgapi_build_status(),
   );
 
-
-
   return $filters;
-}
-
-
+}
\ No newline at end of file
diff --git a/pg_showtransactions/pg_showtransactions.module b/pg_showtransactions/pg_showtransactions.module
index afba790..3ea92be 100644
--- a/pg_showtransactions/pg_showtransactions.module
+++ b/pg_showtransactions/pg_showtransactions.module
@@ -69,7 +69,7 @@ function pg_showtransactions_theme() {
  * @see http://drupal.org/node/1354
  */
 function pg_showtransactions_menu() {
-
+  $items = array();
 
   $items['admin/reports/pg_charts'] = array(
     'title' => 'PGAPI :: ShowTransaction :: Charts',
@@ -248,7 +248,7 @@ function pg_showtransactions_cron() {
     return '';
   }
   $sql = "SELECT * FROM {pgapi_transaction} WHERE created > '%d'";
-  $result = db_query("SELECT * FROM {pgapi_transaction} WHERE created > :created", array(':created' => : created, '' => array(':created' => $lasttime)));
+  $result = db_query("SELECT * FROM {pgapi_transaction} WHERE created > :created", array(':created' => $created, '' => array(':created' => $lasttime)));
   $stats = array();
   while ($row = db_fetch_object($result)) {
     $day = date("d", $row->created);
@@ -258,7 +258,7 @@ function pg_showtransactions_cron() {
   }
 
   $sql = "SELECT * FROM {pgapi_transaction} WHERE created > '%d' and status='%d'";
-  $result = db_query("SELECT * FROM {pgapi_transaction} WHERE created > :created and status = :status", array(':created' => : created, ':status' => : status, '' => array(
+  $result = db_query("SELECT * FROM {pgapi_transaction} WHERE created > :created and status = :status", array(':created' => $created, ':status' => $status, '' => array(
       ':created' => $lasttime,
       ':status' => pgapi_get_status_id('completed'),
     )));
@@ -814,7 +814,7 @@ function theme_pg_showtransactions_filters($variables) {
  * @todo Please document this function.
  * @see http://drupal.org/node/1354
  */
-function theme_pg_showtransactions_history() {
+function theme_pg_showtransactions_history($variables) {
   // TODO Number of parameters in this theme funcion does not match number of parameters found in hook_theme.
   $rows = $variables['rows'];
   $filter_form = $variables['filter_form'];
@@ -869,7 +869,7 @@ function theme_pg_showtransactions_history() {
         'colspan' => '11',
       ));
   }
-  $output .= '<form action="/pg_showtransactions/editgroup" method="POST"><div width=99% style="overflow-x: auto; ">';
+  $output .= '<form action="/pg_showtransactions/editgroup" method="POST"><div width=99% style="overflow-x: auto;">';
   $pager = theme('pager', array('tags' => array(
       'tags' => NULL,
       'element' => 0,
@@ -880,18 +880,15 @@ function theme_pg_showtransactions_history() {
         'colspan' => 10,
       ));
   }
-  $output .=  theme("table", array('header' => array(
-      'header' => $header,
-      'rows' => $rows,
-    )));
+  $output .= theme("table", array('header' => $header, 'rows' => $rows,));
   $output .= "</div>";
   $output .= '<input type="submit" name="op" class="form-submit" onclick="return confirm(\'' . t('Delete selected payments?') . '\');" value="' . t('Delete selected') . '"> ';
   $output .= '<input type="submit" name="op" class="form-submit" onclick="return confirm(\'' . t('Delete all unpaid payments?') . '\');" value="' . t('Delete all unpaid') . '">';
   $output .= '</form>';
+
   return $output;
 }
 
-
 /**
  * @todo Please document this function.
  * @see http://drupal.org/node/1354
diff --git a/pg_webmoney/pg_webmoney.module b/pg_webmoney/pg_webmoney.module
index d2e4333..116f0bf 100644
--- a/pg_webmoney/pg_webmoney.module
+++ b/pg_webmoney/pg_webmoney.module
@@ -41,7 +41,7 @@ function pg_webmoney_theme() {
   return array(
     'pg_webmoney_list' => array(
       'render element' => 'form',
-      'file' => 'pg_webfoney.theme.inc',
+      'file' => 'pg_webmoney.theme.inc',
     ),
     'pg_webmoney_example' => array(
       'variables' => array('purse' => NULL, 'tradename' => NULL, 'secret_key' => NULL, 'success' => NULL, 'done' => NULL, 'fail' => NULL),
@@ -86,7 +86,7 @@ function pg_webmoney_menu() {
     'access callback' => 'user_access',
     'access arguments' => array('administer pgapi'),
     'file' => 'pg_webmoney.admin.inc',
-    'type' => MENU_LOCAL_TASK,
+    'type' => MENU_CALLBACK,
   );
   $items['admin/config/pgapi/webmoney/list'] = array(
     'title' => 'Purses',
@@ -136,6 +136,7 @@ function pg_webmoney_menu() {
     'file' => 'pg_webmoney.admin.inc',
     'type' => MENU_CALLBACK,
   );
+
   return $items;
 }
 
diff --git a/pgapi.admin.css b/pgapi.admin.css
new file mode 100644
index 0000000..b5c25d9
--- /dev/null
+++ b/pgapi.admin.css
@@ -0,0 +1,14 @@
+/**
+ * @file
+ * Administration styles for the Payment Gateway API module.
+ *
+ * Optimized for the Seven administration theme.
+ */
+
+.links.operations {
+  text-transform: lowercase;
+}
+
+.views-field-operations .links.operations {
+  margin-left: 0;
+}
\ No newline at end of file
diff --git a/pgapi.css b/pgapi.css
index f5801a8..1fba751 100644
--- a/pgapi.css
+++ b/pgapi.css
@@ -1,3 +1,7 @@
+/**
+ * @file
+ */
+
 .price .symbol {
   padding: 0;
   margin: 0;
diff --git a/pgapi.info b/pgapi.info
index 060753f..cc96234 100644
--- a/pgapi.info
+++ b/pgapi.info
@@ -2,3 +2,11 @@ name = Payment Gateway API
 description = Payment Gateway API.
 package = "Payment Gateway API"
 core = 7.x
+
+; Views handlers
+files[] = includes/views/handlers/pgapi_handler_field_transaction.inc
+files[] = includes/views/handlers/pgapi_handler_field_transaction_link.inc
+files[] = includes/views/handlers/pgapi_handler_field_transaction_link_edit.inc
+files[] = includes/views/handlers/pgapi_handler_field_transaction_link_delete.inc
+files[] = includes/views/handlers/pgapi_handler_field_transaction_operations.inc
+files[] = includes/views/handlers/pgapi_handler_field_payment_status.inc
\ No newline at end of file
diff --git a/pgapi.module b/pgapi.module
index 745b4b4..90a35c2 100644
--- a/pgapi.module
+++ b/pgapi.module
@@ -51,6 +51,7 @@ define('PG_WORKFLOW_SECURITY_VIOLATION', 7);
  */
 function pgapi_menu() {
   $items = array();
+
   $items['pgapi/%pgapi_transaction'] = array(
     'title' => 'Payment Gateway',
     'page callback' => 'drupal_get_form',
@@ -78,6 +79,34 @@ function pgapi_menu() {
     'file' => 'pgapi.admin.inc',
     'weight' => -10,
   );
+
+  $items['admin/pgapi/payments/%pgapi_transaction'] = array(
+    'title callback' => 'pgapi_ui_payment_title',
+    'title arguments' => array(3),
+    'page callback' => 'pgapi_ui_payment_form_wrapper',
+    'page arguments' => array(3),
+    'access arguments' => array('administer pgapi'),
+    'weight' => 0,
+    'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
+    'file' => 'includes/pgapi_ui.payments.inc',
+  );
+  $items['admin/pgapi/payments/%pgapi_transaction/edit'] = array(
+    'title' => 'Edit',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+    'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
+  );
+  $items['admin/pgapi/payments/%pgapi_transaction/delete'] = array(
+    'title' => 'Delete',
+    'page callback' => 'pgapi_ui_payment_delete_form_wrapper',
+    'page arguments' => array(3),
+    'access arguments' => array('administer pgapi'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 20,
+    'context' => MENU_CONTEXT_INLINE,
+    'file' => 'includes/pgapi_ui.payments.inc',
+  );
+
   return $items;
 }
 
@@ -167,6 +196,35 @@ function pgapi_mail($key, &$message, $params) {
   }
 }
 
+/**
+ * Implements hook_forms().
+ */
+function pgapi_forms($form_id, $args) {
+  $forms = array();
+
+  // Define a wrapper ID for the payment add / edit form.
+  $forms['payment_ui_payment_form'] = array(
+    'callback' => 'pgapi_payment_form',
+  );
+
+  // Define a wrapper ID for the payment delete confirmation form.
+  $forms['payment_ui_payment_delete_form'] = array(
+    'callback' => 'pgapi_payment_delete_form',
+  );
+
+  return $forms;
+}
+
+/**
+ * Implements hook_views_api().
+ */
+function pgapi_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'pgapi') . '/includes/views',
+  );
+}
+
 /********************************************************************
  * API Functions
  ********************************************************************/
@@ -357,14 +415,15 @@ function pgapi_transaction_load($txnid) {
 }
 
 /**
- * Deletes transaction.
+ * Deletes transaction by ID.
  *
- * @param  $txnid
- *   Transaction ID
- * @return void
+ * @param $txnid
+ *   The ID of the transaction to delete.
+ * @return
+ *   TRUE on success, FALSE otherwise.
  */
 function pgapi_transaction_delete($txnid) {
-  db_delete('pgapi_transaction')
+  return db_delete('pgapi_transaction')
     ->condition('txnid', $txnid)
     ->execute();
 }
