diff --git a/includes/pgapi.forms.inc b/includes/pgapi.forms.inc
new file mode 100644
index 0000000..e664830
--- /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');
+  }
+}
diff --git a/includes/pgapi_ui.payments.inc b/includes/pgapi_ui.payments.inc
new file mode 100644
index 0000000..2d5f936
--- /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);
+}
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..c1f8773
--- /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);
+    }
+  }
+}
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..5e1fcd9
--- /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);
+  }
+}
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..c5fe815
--- /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);
+  }
+}
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..50b1395
--- /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()));
+  }
+}
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..edd9db7
--- /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()));
+  }
+}
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..d263c6e
--- /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'))));
+    }
+  }
+}
diff --git a/includes/views/pgapi.views.inc b/includes/views/pgapi.views.inc
new file mode 100644
index 0000000..a3d40e2
--- /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;
+}
diff --git a/pgapi.admin.css b/pgapi.admin.css
new file mode 100644
index 0000000..c4da536
--- /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;
+}
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..1cac37a 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
diff --git a/pgapi.module b/pgapi.module
index 745b4b4..394a776 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
  ********************************************************************/
@@ -353,18 +411,20 @@ function pgapi_transaction_load($txnid) {
       return $transaction;
     }
   }
+
   return FALSE;
 }
 
 /**
- * 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();
 }
