diff --git a/src/sakia/data/connectors/bma.py b/src/sakia/data/connectors/bma.py
index 5d9ef85bbbb179f485dc48803dd64d1ee436e11d..c646b90789b6e143a29bd48ccb8011cf94553bdf 100644
--- a/src/sakia/data/connectors/bma.py
+++ b/src/sakia/data/connectors/bma.py
@@ -17,18 +17,21 @@ async def parse_responses(responses):
     result = (False, "")
     for r in responses:
         if not result[0]:
-            if isinstance(r, BaseException):
-                result = (False, str(r))
-            elif r.status == 400:
-                error = await r.text()
-                try:
-                    result = (False, errors.DuniterError(bma.parse_error(error)).message)
-                except jsonschema.ValidationError:
-                    result = (False, error)
-            elif r.status == 200:
-                result = (True, (await r.json()))
-            elif not result[0]:
-                result = (False, (await r.text()))
+            try:
+                if isinstance(r, BaseException):
+                    result = (False, str(r))
+                elif r.status == 400:
+                    error = await r.text()
+                    try:
+                        result = (False, errors.DuniterError(bma.parse_error(error)).message)
+                    except jsonschema.ValidationError:
+                        result = (False, error)
+                elif r.status == 200:
+                    result = (True, (await r.json()))
+                elif not result[0]:
+                    result = (False, (await r.text()))
+            except BaseException as e:
+                result = (False, str(e))
         else:
             await r.release()
     return result
diff --git a/src/sakia/gui/dialogs/transfer/controller.py b/src/sakia/gui/dialogs/transfer/controller.py
index e50ffbcf3f0299dc5317ae7be4dae13b717d0b86..571116255034b771c103c253425450d818efd42c 100644
--- a/src/sakia/gui/dialogs/transfer/controller.py
+++ b/src/sakia/gui/dialogs/transfer/controller.py
@@ -4,6 +4,7 @@ import logging
 from PyQt5.QtCore import Qt, QObject
 from PyQt5.QtWidgets import QApplication
 
+from sakia.money import Quantitative
 from sakia.data.processors import ConnectionsProcessor
 from sakia.decorators import asyncify
 from sakia.gui.password_asker import PasswordAskerDialog
@@ -58,6 +59,8 @@ class TransferController(QObject):
         search_user.identity_selected.connect(user_information.search_identity)
 
         view.set_keys(transfer.model.available_connections())
+        view.radio_pubkey.toggle()
+
         return transfer
 
     @classmethod
@@ -144,7 +147,7 @@ class TransferController(QObject):
         recipient = self.selected_pubkey()
         amount = self.view.spinbox_amount.value() * 100
         #TODO: Handle other amount base than 0
-        amount_base = 0
+        amount_base = self.model.current_base()
 
         logging.debug("Showing password dialog...")
         password = await PasswordAskerDialog(self.model.connection).async_exec()
@@ -178,6 +181,8 @@ class TransferController(QObject):
 
     def refresh(self):
         amount = self.model.wallet_value()
+        current_base = self.model.current_base()
+        current_base_amount = amount / pow(10, current_base)
         total_text = self.model.localized_amount(amount)
         self.view.refresh_labels(total_text)
 
@@ -186,18 +191,14 @@ class TransferController(QObject):
         else:
             self.view.set_button_box(TransferView.ButtonBoxState.OK)
 
-        max_relative = self.model.quant_to_rel(amount/100)
-        current_base = self.model.current_base()
+        max_relative = self.model.quant_to_rel(current_base_amount/100)
+        self.view.spinbox_amount.setSuffix(Quantitative.base_str(current_base))
 
-        self.view.set_spinboxes_parameters(pow(10, current_base), amount, max_relative)
+        self.view.set_spinboxes_parameters(current_base_amount / 100, max_relative)
 
     def handle_amount_change(self, value):
         relative = self.model.quant_to_rel(value)
         self.view.change_relative_amount(relative)
-        self.refresh_amount_suffix()
-
-    def refresh_amount_suffix(self):
-        self.view.spinbox_amount.setSuffix(" " + self.model.connection.currency)
 
     def handle_relative_change(self, value):
         amount = self.model.rel_to_quant(value)
diff --git a/src/sakia/gui/dialogs/transfer/model.py b/src/sakia/gui/dialogs/transfer/model.py
index 7d07b33d80273f61e2fe62d38103c6a7fd5f4987..ebb523d508fabcab80626ed17e4d0f466667ad09 100644
--- a/src/sakia/gui/dialogs/transfer/model.py
+++ b/src/sakia/gui/dialogs/transfer/model.py
@@ -33,10 +33,10 @@ class TransferModel(QObject):
         :rtype: int
         """
         dividend, base = self._blockchain_processor.last_ud(self.connection.currency)
-        amount = rel_value * dividend * pow(10, base)
+        amount = rel_value * dividend
         # amount is rounded to the nearest power of 10 depending of last ud base
-        rounded = int(pow(10, base) * round(float(amount) / pow(10, base)))
-        return rounded / 100
+        # rounded = int(pow(10, base) * round(float(amount) / pow(10, base)))
+        return int(amount) / 100
 
     def quant_to_rel(self, amount):
         """
@@ -45,7 +45,7 @@ class TransferModel(QObject):
         :rtype: float
         """
         dividend, base = self._blockchain_processor.last_ud(self.connection.currency)
-        relative = amount * 100 / (dividend * pow(10, base))
+        relative = amount * 100 / dividend
         return relative
 
     def wallet_value(self):
@@ -65,7 +65,6 @@ class TransferModel(QObject):
         """
         Get the value of the current referential
         """
-
         localized = self.app.current_ref.instance(amount, self.connection.currency, self.app).diff_localized(True, True)
         return localized
 
@@ -92,7 +91,7 @@ class TransferModel(QObject):
         """
 
         result = await self.app.documents_service.send_money(self.connection, password,
-                                                           recipient, amount, amount_base, comment)
+                                                             recipient, amount, amount_base, comment)
         self.app.db.commit()
         return result
 
diff --git a/src/sakia/gui/dialogs/transfer/view.py b/src/sakia/gui/dialogs/transfer/view.py
index 458215e38fc15adce2eb263965da38ccf245b5a1..2952944331184488677aa29b3817a017aaf58fb5 100644
--- a/src/sakia/gui/dialogs/transfer/view.py
+++ b/src/sakia/gui/dialogs/transfer/view.py
@@ -97,17 +97,15 @@ class TransferView(QDialog, Ui_TransferMoneyDialog):
         self.spinbox_relative.setValue(relative)
         self.spinbox_relative.blockSignals(False)
 
-    def set_spinboxes_parameters(self, tick_quant, max_quant, max_rel):
+    def set_spinboxes_parameters(self, max_quant, max_rel):
         """
         Configure the spinboxes
         It should depend on what the last UD base is
-        :param int tick_quant:
         :param int max_quant:
         :param float max_rel:
         """
-        self.spinbox_amount.setMaximum(max_quant/100)
+        self.spinbox_amount.setMaximum(max_quant)
         self.spinbox_relative.setMaximum(max_rel)
-        self.spinbox_amount.setSingleStep(tick_quant)
 
     def refresh_labels(self, total_text):
         """