diff --git a/hotel_booking/hotel_booking.admin.inc b/hotel_booking/hotel_booking.admin.inc
index 40900b0..18c0b89 100644
--- a/hotel_booking/hotel_booking.admin.inc
+++ b/hotel_booking/hotel_booking.admin.inc
@@ -118,6 +118,36 @@ function hotel_booking_admin_settings() {
       '#description'   => t('This text will appear at the top of the Upgrade/Addon page, before the list of available upgrade items. HTML tags are acceptable'),
     );
   }
+  
+  // Pricing options.
+  $form['payment'] = array(
+    '#type'          => 'fieldset',
+    '#title'         => t('Payment options'),
+    '#collapsible'   => TRUE,
+    '#collapsed'     => TRUE,
+    '#group'       => 'hotel_booking'
+  );
+  $form['payment']['hotel_booking_payment_type'] = array(
+    '#type'          => 'radios',
+    '#title'         => t('Payment type'),
+    '#default_value' => variable_get('hotel_booking_payment_type', 0),
+    '#description'   => t('Choose the payment type'),
+    '#options'       => array(
+      0 => t('Full payment on checkout'),
+      1 => t('Fixed deposit fee on checkout'),
+      2 => t('Percentage deposit on checkout')
+    ),
+    '#required'      => TRUE,
+  );
+  $form['payment']['hotel_booking_payment_rate'] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Payment rate'),
+    '#default_value' => variable_get('hotel_booking_payment_rate', NULL),
+    '#size'          => 60,
+    '#description'   => t('Enter the payment amount, if using a deposit on checkout. If using a fixed fee, enter the fee. If using a percentage enter the amount (eg 20% = 20).'),
+    '#maxlength'     => 10,
+    '#required'      => FALSE,
+  );
 
   //block options
   $form['block'] = array(
@@ -277,6 +307,23 @@ function hotel_booking_admin_settings() {
 }
 
 /**
+ * Provides validation of amount
+*/
+function hotel_booking_admin_settings_validate($form, $form_state) {
+  $values = $form_state['values'];
+  $type = $values['hotel_booking_payment_type'];
+  if ($type != 0) {
+    $rate = $values['hotel_booking_payment_rate'];
+    if (!$rate || !is_numeric($rate)) {
+      form_set_error('hotel_booking_payment_rate', t('You must enter a numeric rate'));
+    }
+    if ($type == 2 && ($rate < 0 || $rate > 100)) {
+      form_set_error('hotel_booking_payment_rate', t('You must enter a percentage between 0 and 100'));      
+    }
+  }
+}
+
+/**
  * Form builder for hotel_booking rates
  * We use a form to build a table
  * so other modules can modify it with hook_form_alter
diff --git a/hotel_booking/hotel_booking.ubercart.inc b/hotel_booking/hotel_booking.ubercart.inc
index adf9225..88d7858 100644
--- a/hotel_booking/hotel_booking.ubercart.inc
+++ b/hotel_booking/hotel_booking.ubercart.inc
@@ -123,6 +123,10 @@ function hotel_booking_cart_display($item) {
   }
   if ($description) {
     $element['description'] = array('#value' => $description);
+    $additional = hotel_booking_product_description($item);
+    if (!empty($additional)) {
+      $element['description']['#value'] .= drupal_render($additional);
+    }
   }
 
   return $element;
@@ -137,6 +141,18 @@ function hotel_booking_cart_item($op, &$item) {
       if ($item->module == 'hotel_booking') {
         $data = $item->data;
         $item->price = $data['total'];
+        $item->price = $data['total'];
+        if (($type = variable_get('hotel_booking_payment_type', 0)) &&
+            ($rate = variable_get('hotel_booking_payment_rate', NULL))) {
+          $item->full_price = $item->price;
+          switch ($type) {
+            case 1:
+              $item->price = $rate;
+              break;
+            case 2:
+              $item->price = $data['total'] * ($rate / 100);
+          }
+        }
         $item->qty = 1;
       }
       break;
@@ -156,14 +172,6 @@ function hotel_booking_cart_item($op, &$item) {
 }
 
 /**
- * Implementation of hook_cart_item_description().
- */
-function hotel_booking_cart_item_description($item) {
-  $node = node_load($item->nid);
-  return theme('hotel_booking_room_cart_description', $node->teaser, $item->data);
-}
-
-/**
  * ----------------------------------------
  * Cart, Checkout, and Order Pane functions
  * ----------------------------------------
@@ -241,4 +249,33 @@ function hotel_booking_order_pane() {
     );
   }
   return $panes;
+}
+
+/**
+ * Implements hook_uc_product_description
+*/
+function hotel_booking_product_description($product) {
+  if ($product->data['module'] == 'hotel_booking' &&
+      ($type = variable_get('hotel_booking_payment_type', 0)) &&
+      ($rate = variable_get('hotel_booking_payment_rate', NULL)) &&
+    $product->data['total'] != $product->price) {
+    return array(
+      '#value' => theme('item_list', array(
+        t('!type Deposit: !deposit',
+        array(
+          '!type' => ($type == 2 ? number_format($rate, 2) .'%' : uc_currency_format($rate)), 
+          '!deposit' => uc_currency_format($product->price),
+        )),
+        t('Full Price: !price',
+        array(
+          '!price' => uc_currency_format($product->data['total']),
+        )),
+        t('Balance Due on Check-in: !balance',
+        array(
+          '!balance' => uc_currency_format($product->data['total'] - $product->price)
+        ))
+      ),
+      t('Payment details'))
+    );
+  }
 }
\ No newline at end of file
