1) The change payment is set in: applyPaymentChange: function(paymentchange) { if (OB.UTIL.isNullOrUndefined(OB.MobileApp.model.get('terminal'))) { return; } // Set change calculation results this.activeModel().set('changePayments', paymentchange.payments); 2) this.trigger('updatePending'); is execute in SCO and Tradi mode but doesn't exist a listener in SCO mode 3) the listener this.receipt.on( 'updatePending', function(ignorePanel) { this.updatePending(ignorePanel); }, call to updatePending 4) the function updatePending call to calculateChange 5) In the funtion calculateChange is executed the setter applyPaymentChange: function(paymentchange) { if (OB.UTIL.isNullOrUndefined(OB.MobileApp.model.get('terminal'))) { return; } // Set change calculation results this.activeModel().set('changePayments', paymentchange.payments); OB.MobileApp.model.set('changeReceipt', paymentchange.label); Root case: The listener is declared in the function receiptChanged, this function only is called in Tradi mode so the trigger do nothing on SCO mode Amount and origAmount are set if changePayment exist OB.UTIL.TicketCloseUtils.processChangePayments = function(receipt, callback) { var mergeable, addPaymentCallback, prevChange; // Manage change payments (if there is change) if (receipt.get('changePayments') && receipt.get('changePayments').length) {