diff --git a/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js b/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js
index be720839f7d60223c5d6f262eceb190ccaad9762..bc7854c58c67bd36043c9251173cfa2e979942b9 100644
--- a/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js
+++ b/app/code/Magento/SalesRule/view/frontend/web/js/action/cancel-coupon.js
@@ -24,15 +24,15 @@ define(
         return function (isApplied, isLoading) {
             var quoteId = quote.getQuoteId();
             var url = urlManager.getCancelCouponUrl(quoteId);
+            var message = $t('Your coupon was successfully removed');
             messageList.clear();
             return storage.delete(
                 url,
                 false
             ).done(
                 function (response) {
-                    isLoading(false);
                     var deferred = $.Deferred();
-
+                    isLoading(false);
                     getTotalsAction([], deferred);
                     $.when(deferred).done(function() {
                         isApplied(false);
@@ -40,6 +40,7 @@ define(
                             paymentService.getAvailablePaymentMethods()
                         );
                     });
+                    messageList.addSuccessMessage({'message': message});
                 }
             ).fail(
                 function (response) {
diff --git a/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js b/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js
index 939a4c559f7f6af78485097a49307d8a5be197d5..5917279fc91248e6ca8f4262fb5a8057959f998c 100644
--- a/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js
+++ b/app/code/Magento/SalesRule/view/frontend/web/js/action/set-coupon-code.js
@@ -17,14 +17,15 @@ define(
         'Magento_Checkout/js/model/error-processor',
         'Magento_Ui/js/model/messageList',
         'mage/storage',
-        'Magento_Checkout/js/action/get-totals'
+        'Magento_Checkout/js/action/get-totals',
+        'mage/translate'
     ],
-    function (ko, $, quote, urlManager, paymentService, errorProcessor, messageList, storage, getTotalsAction) {
+    function (ko, $, quote, urlManager, paymentService, errorProcessor, messageList, storage, getTotalsAction, $t) {
         'use strict';
         return function (couponCode, isApplied, isLoading) {
             var quoteId = quote.getQuoteId();
             var url = urlManager.getApplyCouponUrl(couponCode, quoteId);
-            messageList.clear();
+            var message = $t('Your coupon was successfully applied');
             return storage.put(
                 url,
                 {},
@@ -32,16 +33,16 @@ define(
             ).done(
                 function (response) {
                     if (response) {
+                        var deferred = $.Deferred();
                         isLoading(false);
                         isApplied(true);
-                        var deferred = $.Deferred();
-
                         getTotalsAction([], deferred);
                         $.when(deferred).done(function() {
                             paymentService.setPaymentMethods(
                                 paymentService.getAvailablePaymentMethods()
                             );
                         });
+                        messageList.addSuccessMessage({'message': message});
                     }
                 }
             ).fail(
diff --git a/app/code/Magento/Ui/view/frontend/web/js/view/messages.js b/app/code/Magento/Ui/view/frontend/web/js/view/messages.js
index 02a5a2e6beb0ec893fd22b10c0a360d0984fa2d8..0e809830e63f609f60651138236add73be1e25dd 100644
--- a/app/code/Magento/Ui/view/frontend/web/js/view/messages.js
+++ b/app/code/Magento/Ui/view/frontend/web/js/view/messages.js
@@ -2,7 +2,14 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-define(['uiComponent', '../model/messageList'], function (Component, messages) {
+define(
+    [
+        'ko',
+        'jquery',
+        'uiComponent',
+        '../model/messageList'
+    ],
+    function (ko, $, Component, messages) {
     'use strict';
 
     return Component.extend({
@@ -12,13 +19,26 @@ define(['uiComponent', '../model/messageList'], function (Component, messages) {
         defaults: {
             template: 'Magento_Ui/messages'
         },
+        isHidden: ko.observable(false),
+
+        initialize: function () {
+            this._super();
+            var self = this;
+            this.isHidden.subscribe(function () {
+                if (self.isHidden()) {
+                    setTimeout(function () {
+                        $('#message').hide('blind', {}, 500)
+                    }, 5000);
+                }
+            });
+        },
 
         /**
          *
          * @returns {*}
          */
         isVisible: function () {
-            return this.errorList().length || this.successList().length;
+            return this.isHidden(this.errorList().length || this.successList().length);
         },
         /**
          * Remove all errors
diff --git a/app/code/Magento/Ui/view/frontend/web/template/messages.html b/app/code/Magento/Ui/view/frontend/web/template/messages.html
index d842c4b10ff29428a4427ad00f89a7529ece12ae..c8a3c1ad3ec195a24df46e7896bec0c91868d4c0 100644
--- a/app/code/Magento/Ui/view/frontend/web/template/messages.html
+++ b/app/code/Magento/Ui/view/frontend/web/template/messages.html
@@ -4,7 +4,7 @@
  * See COPYING.txt for license details.
  */
 -->
-<div class="messages" data-bind="visible: isVisible(), click: removeAll">
+<div id="message" class="messages" data-bind="visible: isVisible(), click: removeAll">
     <!-- ko foreach: errorList -->
     <div class="message message-error error">
         <div data-ui-id="checkout-cart-validationmessages-message-error" data-bind="text: $data"></div>