diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py
index 0cf10c0b6835efc4b376ca2244ed225a864ad4e7..13820146df5702139f2edd06d01a2f78144a7dd9 100644
--- a/src/common/connection_handlers_events.py
+++ b/src/common/connection_handlers_events.py
@@ -1068,12 +1068,18 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
         self.enc_tag = self.stanza.getTag('x', namespace=xmpp.NS_ENCRYPTED)
 
         self.invite_tag = None
+        self.decline_tag = None
         if not self.enc_tag:
             self.invite_tag = self.stanza.getTag('x',
                 namespace=xmpp.NS_MUC_USER)
             if self.invite_tag and not self.invite_tag.getTag('invite'):
                 self.invite_tag = None
 
+            self.decline_tag = self.stanza.getTag('x',
+                namespace=xmpp.NS_MUC_USER)
+            if self.decline_tag and not self.decline_tag.getTag('decline'):
+                self.decline_tag = None
+
         self.thread_id = self.stanza.getThread()
         self.mtype = self.stanza.getType()
         if not self.mtype or self.mtype not in ('chat', 'groupchat', 'error'):
@@ -1194,6 +1200,28 @@ class GcInvitationReceivedEvent(nec.NetworkIncomingEvent):
 
         return True
 
+class GcDeclineReceivedEvent(nec.NetworkIncomingEvent):
+    name = 'gc-decline-received'
+    base_network_events = []
+
+    def generate(self):
+        self.room_jid = self.msg_obj.fjid
+
+        item = self.msg_obj.invite_tag.getTag('decline')
+        try:
+            self.jid_from = helpers.parse_jid(item.getAttr('from'))
+        except helpers.InvalidFormat:
+            log.warn('Invalid JID: %s, ignoring it' % item.getAttr('from'))
+            return
+        jid = gajim.get_jid_without_resource(self.jid_from)
+        if gajim.config.get_per('accounts', self.conn.name,
+        'ignore_unknown_contacts') and not gajim.contacts.get_contacts(
+        self.conn.name, jid):
+            return
+        self.reason = item.getTagData('reason')
+
+        return True
+
 class DecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
     name = 'decrypted-message-received'
     base_network_events = []
diff --git a/src/gui_interface.py b/src/gui_interface.py
index a3ceb90a51649012eaf24cad11c049584c80c7f7..86a78647ed52dbfc3b0aad746cd3b98162ec3a5f 100644
--- a/src/gui_interface.py
+++ b/src/gui_interface.py
@@ -615,6 +615,14 @@ class Interface:
             self.instances[account]['gc_config'][obj.jid].\
                 affiliation_list_received(obj.users_dict)
 
+    def handle_event_gc_decline(self, obj):
+        account = obj.conn.name
+        gc_control = self.msg_win_mgr.get_gc_control(obj.room_jid, account)
+        if gc_control:
+            gc_control.print_conversation(
+                _('%(jid)s declined the invitation') % {'jid': obj.room_jid},
+                graphics=False)
+
     def handle_event_gc_invitation(self, obj):
         #('GC_INVITATION', (room_jid, jid_from, reason, password, is_continued))
         jid = gajim.get_jid_without_resource(obj.jid_from)
@@ -1497,6 +1505,7 @@ class Interface:
             'file-request-received': [self.handle_event_file_request],
             'fingerprint-error': [self.handle_event_fingerprint_error],
             'gc-invitation-received': [self.handle_event_gc_invitation],
+            'gc-decline-received': [self.handle_event_gc_decline],
             'gc-presence-received': [self.handle_event_gc_presence],
             'gc-message-received': [self.handle_event_gc_message],
             'gmail-notify': [self.handle_event_gmail_notify],