diff --git a/res/ui/preferences.ui b/res/ui/preferences.ui
index b0dcb43f22b7da3de110071816f3c1127f1b736c..fb22b90836b734d2052cd1ba1906de1759353a9d 100644
--- a/res/ui/preferences.ui
+++ b/res/ui/preferences.ui
@@ -280,7 +280,116 @@
          </item>
         </layout>
        </widget>
-       <widget class="QWidget" name="page_3"/>
+       <widget class="QWidget" name="page_3">
+        <layout class="QVBoxLayout" name="verticalLayout_3">
+         <item>
+          <widget class="QCheckBox" name="checkbox_proxy">
+           <property name="text">
+            <string>Utiliser un serveur proxy</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_11">
+           <property name="topMargin">
+            <number>6</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="label_8">
+             <property name="text">
+              <string>Proxy type : </string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="combox_proxytype">
+             <item>
+              <property name="text">
+               <string>HTTP</string>
+              </property>
+             </item>
+             <item>
+              <property name="text">
+               <string>SOCKS5</string>
+              </property>
+             </item>
+            </widget>
+           </item>
+           <item>
+            <spacer name="horizontalSpacer_4">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_9">
+           <item>
+            <widget class="QLabel" name="label_6">
+             <property name="text">
+              <string>Proxy server address : </string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QLineEdit" name="edit_proxy_address"/>
+           </item>
+           <item>
+            <widget class="QLabel" name="label_2">
+             <property name="text">
+              <string>:</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QSpinBox" name="spinbox_proxy_port"/>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <widget class="Line" name="line_4">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_10">
+           <item>
+            <widget class="QLabel" name="label_7">
+             <property name="text">
+              <string>Requested data validation : </string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QSpinBox" name="spinbox_data_validation"/>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <spacer name="verticalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </widget>
       </widget>
      </item>
     </layout>
diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py
index 56a4369033e080a9fd3ab8efe1aedbeb92cbf646..227459b48a518228102b97721f4e348d5c3899ce 100644
--- a/src/cutecoin/core/app.py
+++ b/src/cutecoin/core/app.py
@@ -14,7 +14,7 @@ import i18n_rc
 
 from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, \
 QUrl, QTranslator, QCoreApplication, QLocale
-from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest
+from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest, QNetworkProxy
 
 from . import config
 from .account import Account
@@ -59,7 +59,12 @@ class Application(QObject):
                             'expert_mode': False,
                             'digits_after_comma': 6,
                             'maximized': False,
-                            'notifications': True
+                            'notifications': True,
+                            'enable_proxy': False,
+                            'proxy_type': "HTTP",
+                            'proxy_address': "",
+                            'proxy_port': 8080,
+                            'data_validation': 2
                             }
 
     @classmethod
@@ -70,6 +75,14 @@ class Application(QObject):
         app = cls(qapp, loop, network_manager, identities_registry)
         app.load()
         app.switch_language()
+        if app.preferences['enable_proxy'] is True:
+            proxytypes = {"HTTP": QNetworkProxy.HttpProxy,
+                          "SOCKS5": QNetworkProxy.Socks5Proxy}
+            qtproxy = QNetworkProxy(proxytypes[app.preferences.get('proxy_type', "HTTP")],
+                                    app.preferences['proxy_address'],
+                                    app.preferences['proxy_port'])
+            network_manager.setProxy(qtproxy)
+
         if app.preferences["account"] != "":
             account = app.get_account(app.preferences["account"])
             app.change_current_account(account)
diff --git a/src/cutecoin/gui/preferences.py b/src/cutecoin/gui/preferences.py
index 902b5d624fdb16d45a6bc7dc6d7c4c4f6f08ff0f..bd5b6f529e0fa38277c34ff6119b1b33f54bf816 100644
--- a/src/cutecoin/gui/preferences.py
+++ b/src/cutecoin/gui/preferences.py
@@ -37,16 +37,34 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
         self.combo_referential.setCurrentIndex(self.app.preferences['ref'])
         for lang in ('en_GB', 'fr_FR'):
             self.combo_language.addItem(lang)
-        self.combo_language.setCurrentText(self.app.preferences['lang'])
-        self.checkbox_expertmode.setChecked(self.app.preferences['expert_mode'])
-        self.checkbox_maximize.setChecked(self.app.preferences['maximized'])
-        self.checkbox_notifications.setChecked(self.app.preferences['notifications'])
-        self.spinbox_digits_comma.setValue(self.app.preferences['digits_after_comma'])
+        self.combo_language.setCurrentText(self.app.preferences.get('lang', 'en_US'))
+        self.checkbox_expertmode.setChecked(self.app.preferences.get('expert_mode', False))
+        self.checkbox_maximize.setChecked(self.app.preferences.get('maximized', False))
+        self.checkbox_notifications.setChecked(self.app.preferences.get('notifications', True))
+        self.spinbox_digits_comma.setValue(self.app.preferences.get('digits_after_comma', 2))
         self.spinbox_digits_comma.setMaximum(12)
         self.spinbox_digits_comma.setMinimum(1)
         self.button_app.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))
         self.button_display.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(1))
         self.button_network.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(2))
+        self.spinbox_data_validation.setValue(self.app.preferences.get('data_validation', 2))
+        self.spinbox_data_validation.setMinimum(0)
+        self.spinbox_data_validation.setMaximum(100)
+
+        self.checkbox_proxy.setChecked(self.app.preferences.get('enable_proxy', False))
+        self.spinbox_proxy_port.setEnabled(self.checkbox_proxy.isChecked())
+        self.edit_proxy_address.setEnabled(self.checkbox_proxy.isChecked())
+        self.checkbox_proxy.stateChanged.connect(self.handle_proxy_change)
+
+        self.spinbox_proxy_port.setValue(self.app.preferences.get('proxy_port', 8080))
+        self.spinbox_proxy_port.setMinimum(0)
+        self.spinbox_proxy_port.setMaximum(55636)
+        self.combox_proxytype.setCurrentText(self.app.preferences.get('proxy_type', "HTTP"))
+        self.edit_proxy_address.setText(self.app.preferences.get('proxy_address', ""))
+
+    def handle_proxy_change(self):
+        self.spinbox_proxy_port.setEnabled(self.checkbox_proxy.isChecked())
+        self.edit_proxy_address.setEnabled(self.checkbox_proxy.isChecked())
 
     def accept(self):
         pref = {'account': self.combo_account.currentText(),
@@ -55,7 +73,12 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
                 'expert_mode': self.checkbox_expertmode.isChecked(),
                 'maximized': self.checkbox_maximize.isChecked(),
                 'digits_after_comma': self.spinbox_digits_comma.value(),
-                'notifications': self.checkbox_notifications.isChecked()}
+                'notifications': self.checkbox_notifications.isChecked(),
+                'enable_proxy': self.checkbox_proxy.isChecked(),
+                'proxy_type': self.combox_proxytype.currentText(),
+                'proxy_address': self.edit_proxy_address.text(),
+                'proxy_port': self.spinbox_proxy_port.value(),
+                'data_validation': self.spinbox_data_validation.value()}
         self.app.save_preferences(pref)
         toast.display(self.tr("Preferences"),
                       self.tr("A restart is needed to apply your new preferences."))