--- uc_node_checkout.module 
+++ uc_node_checkout_varprice.module 
@@ -434,6 +434,19 @@
     $get[] = 'qty='. intval($form_state['values']['qty']);
   }
 
+  // If uc_varprice module is used, pass the user-entered price via session variable
+  if (!empty($form_state['values']['varprice']) && floatval($form_state['values']['varprice']) > 0) {
+    $price = preg_replace("/[^0-9.,]+/","",$form_state['values']['varprice']);  // clean up user-entered price data
+    if (!empty($price) && intval($price) > 0) {
+      if(substr($price, -3, 1) == ",") {  // accept comma as decimal delimiter, and convert to period.
+        $price = preg_replace("/[.,]+/", "", $price);
+        $price = substr_replace($price, ".", -2, 0);
+      }
+      $price = str_replace(",", "", $price);
+      $_SESSION['varprice'] = round(floatval($price), 2);
+    }
+  }
+
   // Pass the attributes selections in the URL.
   $attr = array();
 
@@ -561,6 +574,12 @@
           'nid' => $product->nid,
           'qty' => $product->default_qty,
         );
+
+        // Add uc_varprice compatibility
+        if (module_exists(uc_varprice) && (isset($_SESSION['varprice']))) {
+          $values['varprice'] = floatval($_SESSION['varprice']);
+          unset($_SESSION['varprice']);
+        }
 
         // Add any attribute values if they exist.
         if (isset($node->attributes)) {
