diff --git a/contrib/up_discounts/up_discounts.info b/contrib/up_discounts/up_discounts.info
new file mode 100644
index 0000000..8932a99
--- /dev/null
+++ b/contrib/up_discounts/up_discounts.info
@@ -0,0 +1,7 @@
+name = UberPOS Integration with UC Discounts Alt
+description = Enables the application of discounts through POS interface.
+dependencies[] = uberpos
+dependencies[] = uc_discounts
+package = UberPOS
+version = "6.x-1.x-dev"
+core = 6.x
diff --git a/contrib/up_discounts/up_discounts.module b/contrib/up_discounts/up_discounts.module
new file mode 100644
index 0000000..fb06a3b
--- /dev/null
+++ b/contrib/up_discounts/up_discounts.module
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * Implementation of hook_uberpos_buttons().
+ */
+function up_discounts_uberpos_buttons() {
+  $buttons = array();
+  // Button to apply discounts.
+  $buttons[] = array(
+    'section' => 'left',
+    'text' => t('DISC'),
+    'weight' => 30,
+    'attributes' => array(
+      'onclick' => 'uberpos_add_text_submit("DC"); return false;',
+      'class' => 'uberpos-button-cim up-button-submit',
+    ),
+  );
+  return $buttons;
+}
+
+/**
+ * Implementation of hook_uberpos_command().
+ */
+function up_discounts_uberpos_command() {
+  return array(
+    'up_discounts_apply_command'  
+  );
+}
+
+/**
+ * Implementation of hook_order().
+ */
+function up_discounts_order($op, &$order, $arg2) {
+  global $up_discounts_recalc;
+  if ($op == 'save') {
+    if(!empty($order->uc_discounts_codes) && $up_discounts_recalc) {
+      $codes = implode("\n", $order->uc_discounts_codes);
+      up_discounts_process($order);
+    }
+    $up_discounts_recalc = FALSE;
+  }
+}
+
+/**
+ * Callback for UberPOS Discounts command.
+ */
+function up_discounts_apply_command(&$order, $item, $input, &$js) {
+  global $up_discounts_recalc;
+  $codes = array();
+  $cmd = drupal_substr($input, drupal_strlen($input) - 2, 2);
+  switch($cmd) {
+    case 'DC':
+      $discount_code = drupal_substr($input, 0, drupal_strlen($input) - 2);
+      up_discounts_process($order, $discount_code);
+      return 'DC';
+  }
+  $up_discounts_recalc = TRUE;
+}
+
+function up_discounts_process($order, $discount_code = '') {
+  $codes = array();
+  if ($discount_code) {
+    $codes[] = $discount_code;
+  }
+  if (!empty($order->uc_discounts_codes)) {
+    $codes += $order->uc_discounts_codes;
+  }
+  $codes = implode("\r", $codes);
+  
+  uc_discounts_order_pane_callback(t('Apply discounts'), array('order_id' => $order->order_id, 'uc-discounts-codes' => $codes));
+  
+  // Clear status messages.
+  drupal_get_messages('status', TRUE);
+  
+  // Display errors.
+  $errors = drupal_get_messages('error', TRUE);
+  $warnings = drupal_get_messages('warning', TRUE);
+  $message .= implode(' ', $errors['error']);
+  $message .= implode(' ', $warnings['warning']);
+  if ($message) 
+    uberpos_clear_message($message);
+}
