diff -r 8ccd4a8fd4af web/org.openbravo.retail.sessions/js/countcash/countcash-model.js
--- a/web/org.openbravo.retail.sessions/js/countcash/countcash-model.js	Thu Dec 10 16:03:36 2015 +0100
+++ b/web/org.openbravo.retail.sessions/js/countcash/countcash-model.js	Thu Jan 07 21:34:10 2016 +0100
@@ -1,6 +1,6 @@
 /*
  ************************************************************************************
- * Copyright (C) 2012-2015 Openbravo S.L.U.
+ * Copyright (C) 2012-2016 Openbravo S.L.U.
  * Licensed under the Openbravo Commercial License version 1.0
  * You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
  * or in the legal folder of this module distribution.
@@ -265,11 +265,7 @@
     return countCashSummary;
   },
   processAndFinishCashCount: function () {
-
-    if (this.get('finished') || this.get('finishedWrongly')) {
-      return; // Do not execute the process again if finished.
-    }
-
+    var cashManagmentTransactionModel = new Backbone.Model();
     var objToSend = {
       terminalId: OB.POS.modelterminal.get('terminal').id,
       bdSessions: [{
@@ -279,51 +275,86 @@
     },
         server = new OB.DS.Process('org.openbravo.retail.sessions.OpenSessionPOS'),
         me = this;
+    var paymentMethod = OB.POS.terminal.terminal.paymentnames[OB.MobileApp.model.get('paymentcash')];
 
-    var paymentMethod = OB.POS.terminal.terminal.paymentnames[OB.MobileApp.model.get('paymentcash')];
-    if (this.get('totalDifference') !== 0) {
-      var cashMgmt = new OB.Model.CashManagement({
-        id: OB.Dal.get_uuid(),
-        description: paymentMethod.payment._identifier + ' - Till differences',
-        amount: OB.DEC.abs(this.get('totalDifference')),
-        origAmount: OB.DEC.mul(OB.DEC.abs(this.get('totalDifference')), paymentMethod.rate),
-        type: this.get('totalDifference') > 0 ? 'deposit' : 'drop',
-        reasonId: null,
-        paymentMethodId: paymentMethod.payment.id,
-        user: OB.POS.modelterminal.get('context').user._identifier,
-        userId: OB.POS.modelterminal.get('context').user.id,
-        time: new Date().toString().substring(16, 21),
-        isocode: paymentMethod.isocode,
-        cashup_id: OB.MobileApp.model.get('terminal').cashUpId,
-        glItem: paymentMethod.paymentMethod.possGlitemTilldiff,
-        isbeingprocessed: 'N'
-      });
-      OB.Dal.save(cashMgmt, null, null, true);
+    if (this.get('finished') || this.get('finishedWrongly')) {
+      return; // Do not execute the process again if finished.
     }
 
-    this.set('cashcountSent', true);
-    OB.UTIL.showLoading(true);
+    if (this.get('totalDifference') !== 0) {
+      cashManagmentTransactionModel.set('amount', OB.DEC.abs(this.get('totalDifference')));
+      cashManagmentTransactionModel.set('paymentMethod', paymentMethod);
+      cashManagmentTransactionModel.set('cashManagementEvent', {
+        id: null,
+        type: this.get('totalDifference') > 0 ? 'deposit' : 'drop',
+        name: 'Till differences'
+      });
+      OB.UTIL.showLoading(true);
+      OB.UTILS.CashManagementUtils.addCashManagementTransaction(cashManagmentTransactionModel, function (result) {
+        //Success
+        if (result && result.warnings && result.warnings.length > 0) {
+          _.each(result.warnings, function (warn, index) {
+            if (warn && warn.msg) {
+              OB.warn(warn.msg);
+            }
+          });
+        }
 
-    // Set Session as Open.
-    OB.MobileApp.model.get('terminal').poss_session = true;
-    window.localStorage.setItem('poss_sessionactive', JSON.stringify({
-      isActive: true,
-      code: objToSend.bdSessions[0].code
-    }));
+        me.set('cashcountSent', true);
+        // Set Session as Open.
+        OB.MobileApp.model.get('terminal').poss_session = true;
+        window.localStorage.setItem('poss_sessionactive', JSON.stringify({
+          isActive: true,
+          code: objToSend.bdSessions[0].code
+        }));
+        //ready to send to the server
+        server.exec(objToSend, function (data) {
+          me.set('cashcountSent', false);
+          if (data.error || data.exception) {
+            me.addToPendingSessions(objToSend.bdSessions[0]);
+          }
+          OB.UTIL.showLoading(false);
+          me.set("finished", true);
+        }, function () {
+          me.addToPendingSessions(objToSend.bdSessions[0]);
+          OB.UTIL.showLoading(false);
+          me.set("finished", true);
+        });
+      }, function (errorMsg) {
+        //error
+        OB.UTIL.showLoading(false);
+        OB.UTIL.showConfirmation.display('Error', e);
+        me.set("finished", true);
+      }, {
+        //options
+        customGLItem: paymentMethod.paymentMethod.possGlitemTilldiff,
+        printTicket: false
+      });
+    } else {
+      this.set('cashcountSent', true);
+      OB.UTIL.showLoading(true);
 
-    //ready to send to the server
-    server.exec(objToSend, function (data) {
-      me.set('cashcountSent', false);
-      if (data.error || data.exception) {
+      // Set Session as Open.
+      OB.MobileApp.model.get('terminal').poss_session = true;
+      window.localStorage.setItem('poss_sessionactive', JSON.stringify({
+        isActive: true,
+        code: objToSend.bdSessions[0].code
+      }));
+
+      //ready to send to the server
+      server.exec(objToSend, function (data) {
+        me.set('cashcountSent', false);
+        if (data.error || data.exception) {
+          me.addToPendingSessions(objToSend.bdSessions[0]);
+        }
+        OB.UTIL.showLoading(false);
+        me.set("finished", true);
+      }, function () {
         me.addToPendingSessions(objToSend.bdSessions[0]);
-      }
-      OB.UTIL.showLoading(false);
-      me.set("finished", true);
-    }, function () {
-      me.addToPendingSessions(objToSend.bdSessions[0]);
-      OB.UTIL.showLoading(false);
-      me.set("finished", true);
-    });
+        OB.UTIL.showLoading(false);
+        me.set("finished", true);
+      });
+    }
   },
   addToPendingSessions: function (session) {
     var pendingSessions;
