diff --git a/src/app/appsettingsmanager.h b/src/app/appsettingsmanager.h
index 69344ac6c64b714e4fbb3836ba69bd13fee178c1..0473a3dd69b3707a4648de264fa4de00ea47279e 100644
--- a/src/app/appsettingsmanager.h
+++ b/src/app/appsettingsmanager.h
@@ -64,7 +64,10 @@ extern const QString defaultDownloadPath;
     X(ShowMardownOption, false) \
     X(ChatViewEnterIsNewLine, false) \
     X(ShowSendOption, false) \
-    X(DonateVisibleDate,  "2999-02-01 05:00")
+    X(DonationVisibleDate, "2023-11-01 05:00") \
+    X(IsDonationVisible, true) \
+    X(DonationEndDate, "2024-01-01 00:00")
+
 /*
  * A class to expose settings keys in both c++ and QML.
  * Note: this is using a non-constructable class instead of a
diff --git a/src/app/constant/JamiQmlUtils.qml b/src/app/constant/JamiQmlUtils.qml
index 4b5aa62bd9571308f8f8d44596ea1993fe93b758..71e736ce57c83818f1b436858ad1a09a5bbf9aa6 100644
--- a/src/app/constant/JamiQmlUtils.qml
+++ b/src/app/constant/JamiQmlUtils.qml
@@ -72,7 +72,11 @@ Item {
     }
 
     function isDonationBannerVisible() {
-        // The banner is visible if the current date is after the date set in the settings
-        return new Date() > new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.DonateVisibleDate)));
+        // The banner is visible if the current date is after the date set in the settings and before the end date
+        // And if the donation toggle is checked
+        var isDonationVisible = UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible);
+        var endDonationDate = new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.DonationEndDate)));
+        var donationVisibleDate = new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.DonationVisibleDate)));
+        return new Date() < endDonationDate && new Date() > donationVisibleDate && isDonationVisible;
     }
 }
diff --git a/src/app/constant/JamiStrings.qml b/src/app/constant/JamiStrings.qml
index eadba1a32d3541ba3c78af1e479c7a76e45abd67..086d0fc79d27e63598812b7b7833df1f09526268 100644
--- a/src/app/constant/JamiStrings.qml
+++ b/src/app/constant/JamiStrings.qml
@@ -843,4 +843,5 @@ Item {
     property string donation: qsTr("Donate")
     property string donationText: qsTr("If you enjoy using Jami and believe in our mission, would you make a donation?")
     property string notNow: qsTr("Not now")
+    property string enableDonation: qsTr("Enable donation campaign")
 }
diff --git a/src/app/mainview/components/DonationBanner.qml b/src/app/mainview/components/DonationBanner.qml
index b7538878f917900f9e928809ea5ed8efbd9150ad..afc74e47c627eac248923fb1990210f78d40fcec 100644
--- a/src/app/mainview/components/DonationBanner.qml
+++ b/src/app/mainview/components/DonationBanner.qml
@@ -109,8 +109,7 @@ Rectangle {
                     anchors.fill: parent
                     onClicked: {
                         // When the user clicks on "Not now", we set the donation date to 7 days from now (1 for the test)
-                        // TODO reset to 7 days
-                        UtilsAdapter.setAppValue(Settings.Key.DonateVisibleDate, new Date(new Date().getTime() + 1 * 24 * 60 * 60 * 1000).toISOString().slice(0, 16).replace("T", " "));
+                        UtilsAdapter.setAppValue(Settings.Key.DonationVisibleDate, new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000).toISOString().slice(0, 16).replace("T", " "));
                         donation.donationVisible = Qt.binding(() => JamiQmlUtils.isDonationBannerVisible());
                     }
                 }
diff --git a/src/app/settingsview/components/SystemSettingsPage.qml b/src/app/settingsview/components/SystemSettingsPage.qml
index 32e58d058d1578d3e0fa08d37fb55ff75f76aa39..abc4721362a144979bee2ff9b0ad2c277ee1a4d1 100644
--- a/src/app/settingsview/components/SystemSettingsPage.qml
+++ b/src/app/settingsview/components/SystemSettingsPage.qml
@@ -49,11 +49,13 @@ SettingsPageBase {
         anchors.left: parent.left
         anchors.leftMargin: JamiTheme.preferredSettingsMarginSize
 
-        ColumnLayout {
+        Column {
             id: enableAccount
 
             width: parent.width
 
+            spacing: 10
+
             FolderDialog {
                 id: downloadPathDialog
 
@@ -71,7 +73,7 @@ SettingsPageBase {
 
             ToggleSwitch {
                 id: notificationCheckBox
-                Layout.fillWidth: true
+                width: parent.width
 
                 checked: UtilsAdapter.getAppValue(Settings.EnableNotifications)
                 labelText: JamiStrings.showNotifications
@@ -79,9 +81,25 @@ SettingsPageBase {
                 onSwitchToggled: UtilsAdapter.setAppValue(Settings.Key.EnableNotifications, checked)
             }
 
+            ToggleSwitch {
+                id: enableDonation
+                width: parent.width
+                visible: new Date() >= new Date(Date.parse("2023-11-01"))
+
+                checked: UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible)
+                labelText: JamiStrings.enableDonation
+                tooltipText: JamiStrings.enableDonation
+                onSwitchToggled: {
+                    UtilsAdapter.setAppValue(Settings.Key.IsDonationVisible, checked);
+                    if (checked) {
+                        UtilsAdapter.setToDefault(Settings.Key.DonationVisibleDate);
+                    }
+                }
+            }
+
             ToggleSwitch {
                 id: closeOrMinCheckBox
-                Layout.fillWidth: true
+                width: parent.width
 
                 visible: UtilsAdapter.isSystemTrayIconVisible()
                 checked: UtilsAdapter.getAppValue(Settings.MinimizeOnClose) && UtilsAdapter.isSystemTrayIconVisible()
@@ -91,7 +109,7 @@ SettingsPageBase {
 
             ToggleSwitch {
                 id: applicationOnStartUpCheckBox
-                Layout.fillWidth: true
+                width: parent.width
 
                 checked: UtilsAdapter.checkStartupLink()
                 labelText: JamiStrings.runStartup
@@ -100,8 +118,8 @@ SettingsPageBase {
             }
 
             RowLayout {
-                Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                width: parent.width
+                height: JamiTheme.preferredFieldHeight
 
                 Text {
                     Layout.fillWidth: true
@@ -138,8 +156,8 @@ SettingsPageBase {
             SettingsComboBox {
                 id: langComboBoxSetting
 
-                Layout.fillWidth: true
-                Layout.preferredHeight: JamiTheme.preferredFieldHeight
+                width: parent.width
+                height: JamiTheme.preferredFieldHeight
 
                 labelText: JamiStrings.language
                 tipText: JamiStrings.language
@@ -245,6 +263,9 @@ SettingsPageBase {
                 UtilsAdapter.setToDefault(Settings.Key.MinimizeOnClose);
                 UtilsAdapter.setToDefault(Settings.Key.LANG);
                 UtilsAdapter.setToDefault(Settings.Key.EnableExperimentalSwarm);
+                UtilsAdapter.setToDefault(Settings.Key.IsDonationVisible);
+                UtilsAdapter.setToDefault(Settings.Key.DonationVisibleDate);
+                enableDonation.checked = Qt.binding(() => UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible));
             }
         }
     }