diff --git a/uc_flo2cash.module b/uc_flo2cash.module
index ee20df8..c2cfc94 100644
--- a/uc_flo2cash.module
+++ b/uc_flo2cash.module
@@ -76,6 +76,12 @@ function uc_flo2cash_form_alter(&$form, $form_state, $form_id) {
       // Add a line item for each product being ordered.
       $i = 0;
       foreach ($order->products as $product) {
+        // web2pay dislikes products which have a price of $0.00, so the
+        // workaround is to not submit them.  the downside is that the web2pay
+        // invoice won't show these products.
+        if ($product->price == 0) {
+          continue;
+        }
         $i++;
         $data['item_name'. $i] = $product->title;
         // Turns out that web2pay has a 'bug' that silently rejects the 
@@ -89,9 +95,10 @@ function uc_flo2cash_form_alter(&$form, $form_state, $form_id) {
         $data['item_qty'. $i] = $product->qty;
       }
 
-      // add a final line item for shipping costs
+      // add a final line item for shipping costs.  again, only add if the
+      // shipping is not free.
       foreach ( $order->line_items as $item ) {
-        if ( $item['type'] == 'shipping' ) {
+        if ( $item['type'] == 'shipping' && $item['amount'] > 0) {
           $i++;
           $data['item_name'. $i] = $item['title'];
           $data['item_price'. $i] = 
