diff -r 9c5f3f405dcd web/org.openbravo.retail.posterminal/js/data/dataordersave.js
--- a/web/org.openbravo.retail.posterminal/js/data/dataordersave.js	Tue Aug 25 15:42:43 2015 +0200
+++ b/web/org.openbravo.retail.posterminal/js/data/dataordersave.js	Thu Oct 15 13:23:59 2015 +0200
@@ -90,6 +90,11 @@
           args.context.receipt.set('isbeingprocessed', 'N');
           args.context.receipt.set('hasbeenpaid', 'N');
           args.context.receipt.trigger('paymentCancel');
+          if (eventParams && eventParams.callback) {
+            eventParams.callback({
+              isCancelled: true
+            });
+          }
           return true;
         }
         var receipt = args.context.receipt,
@@ -175,7 +180,9 @@
               }, function (args) {
                 successCallback();
                 if (eventParams && eventParams.callback) {
-                  eventParams.callback();
+                  eventParams.callback({
+                    isCancelled: false
+                  });
                 }
               });
             }, function () {
@@ -183,7 +190,9 @@
                 receipt: auxReceipt
               }, function (args) {
                 if (eventParams && eventParams.callback) {
-                  eventParams.callback();
+                  eventParams.callback({
+                    isCancelled: false
+                  });
                 }
               });
             });
@@ -196,7 +205,9 @@
               successCallback(model);
             });
             if (eventParams && eventParams.callback) {
-              eventParams.callback();
+              eventParams.callback({
+                isCancelled: false
+              });
             }
           }
         });
diff -r 9c5f3f405dcd web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js	Tue Aug 25 15:42:43 2015 +0200
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js	Thu Oct 15 13:23:59 2015 +0200
@@ -471,24 +471,27 @@
             }
           }
           receipt.trigger('closed', {
-            callback: function () {
-              receipt.get('payments').reset();
-              clonedCollection.each(function (model) {
-                receipt.get('payments').add(new Backbone.Model(model.toJSON()), {
-                  silent: true
+            callback: function (args) {
+              // verify that the receipt was not cancelled
+              if (args.isCancelled !== true) {
+                receipt.get('payments').reset();
+                clonedCollection.each(function (model) {
+                  receipt.get('payments').add(new Backbone.Model(model.toJSON()), {
+                    silent: true
+                  });
                 });
-              });
-              // receipt is cloned because the receipt is deleted in the next sentence (orderList.deleteCurrent(true);)
-              // so, if exists a method no synchronous (for example, hook OBPOS_PrePrint) the "receipt" has changed
-              receipt.set('cloningReceipt', true);
-              var orderToPrint = OB.UTIL.clone(receipt);
-              receipt.set('cloningReceipt', false);
-              orderToPrint.set('cloningReceipt', false);
-              receipt.trigger('print', orderToPrint, {
-                offline: true
-              });
-              orderList.deleteCurrent(true);
-              orderList.synchronizeCurrentOrder();
+                // receipt is cloned because the receipt is deleted in the next sentence (orderList.deleteCurrent(true);)
+                // so, if exists a method no synchronous (for example, hook OBPOS_PrePrint) the "receipt" has changed
+                receipt.set('cloningReceipt', true);
+                var orderToPrint = OB.UTIL.clone(receipt);
+                receipt.set('cloningReceipt', false);
+                orderToPrint.set('cloningReceipt', false);
+                receipt.trigger('print', orderToPrint, {
+                  offline: true
+                });
+                orderList.deleteCurrent(true);
+                orderList.synchronizeCurrentOrder();
+              }
               enyo.$.scrim.hide();
             }
           });
@@ -501,18 +504,21 @@
             }
           }
           receipt.trigger('closed', {
-            callback: function () {
-              // receipt is cloned because the receipt is deleted when event "closed" is triggered
-              // so, if exists a method no synchronous, the "receipt" has changed
-              receipt.set('cloningReceipt', true);
-              var orderToPrint = OB.UTIL.clone(receipt);
-              receipt.set('cloningReceipt', false);
-              orderToPrint.set('cloningReceipt', false);
-              receipt.trigger('print', orderToPrint, {
-                offline: true
-              });
-              orderList.deleteCurrent(true);
-              orderList.synchronizeCurrentOrder();
+            callback: function (args) {
+              // verify that the receipt was not cancelled
+              if (args.isCancelled !== true) {
+                // receipt is cloned because the receipt is deleted when event "closed" is triggered
+                // so, if exists a method no synchronous, the "receipt" has changed
+                receipt.set('cloningReceipt', true);
+                var orderToPrint = OB.UTIL.clone(receipt);
+                receipt.set('cloningReceipt', false);
+                orderToPrint.set('cloningReceipt', false);
+                receipt.trigger('print', orderToPrint, {
+                  offline: true
+                });
+                orderList.deleteCurrent(true);
+                orderList.synchronizeCurrentOrder();
+              }
               enyo.$.scrim.hide();
             }
           });
