diff --git a/src/cutecoin/core/transfer.py b/src/cutecoin/core/transfer.py
index a8e13467f94c658537fe4a5f5700d8c98d7801ad..23587de0aff0f0bb865b13b4ce959ee42378e05e 100644
--- a/src/cutecoin/core/transfer.py
+++ b/src/cutecoin/core/transfer.py
@@ -28,14 +28,12 @@ class Transfer(object):
         self.metadata = metadata
 
     @classmethod
-    def initiate(cls, txdoc, block, time, amount):
-        receivers = [o.pubkey for o in txdoc.outputs
-                             if o.pubkey != txdoc.issuers[0]]
+    def initiate(cls, txdoc, block, time, amount, issuer, receiver):
         return cls(txdoc, Transfer.TO_SEND, {'block': block,
                                              'time': time,
                                              'amount': amount,
-                                             'issuer': txdoc.issuers[0],
-                                             'receiver': receivers[0]})
+                                             'issuer': issuer,
+                                             'receiver': receiver})
 
     @classmethod
     def create_validated(cls, txdoc, metadata):
@@ -43,11 +41,18 @@ class Transfer(object):
 
     @classmethod
     def load(cls, data):
-        txdoc = Transaction.from_signed_raw(data['txdoc'])
+        if data['state'] is Transfer.TO_SEND:
+            txdoc = None
+        else:
+            txdoc = Transaction.from_signed_raw(data['txdoc'])
         return cls(txdoc, data['state'], data['metadata'])
 
     def jsonify(self):
-        return {'txdoc': self.txdoc.signed_raw(),
+        if self.txdoc:
+            txraw = self.txdoc.signed_raw()
+        else:
+            txraw = None
+        return {'txdoc': txraw,
                 'state': self.state,
                 'metadata': self.metadata}
 
diff --git a/src/cutecoin/core/wallet.py b/src/cutecoin/core/wallet.py
index e0ad577f161fe34bde0a91d8c32c7c772545756a..4d7b490b81c7ed4c2cee289667c121c7bbd72e4b 100644
--- a/src/cutecoin/core/wallet.py
+++ b/src/cutecoin/core/wallet.py
@@ -238,18 +238,8 @@ class Wallet(object):
 
     def send_money(self, salt, password, community,
                    recipient, amount, message):
-
-        result = self.tx_inputs(int(amount), community)
-        inputs = result[0]
-        self.caches[community.currency].available_sources = result[1]
-        logging.debug("Inputs : {0}".format(inputs))
-
-        outputs = self.tx_outputs(recipient, amount, inputs)
-        logging.debug("Outputs : {0}".format(outputs))
-        tx = Transaction(PROTOCOL_VERSION, community.currency,
-                         [self.pubkey], inputs,
-                         outputs, message, None)
-        logging.debug("TX : {0}".format(tx.raw()))
+        time = community.get_block().time
+        block_number = community.current_blockid()['number']
         key = None
         logging.debug("Key : {0} : {1}".format(salt, password))
         if self.walletid == 0:
@@ -258,15 +248,31 @@ class Wallet(object):
             key = SigningKey("{0}{1}".format(salt, self.walletid), password)
         logging.debug("Sender pubkey:{0}".format(key.pubkey))
 
-        tx.sign([key])
-        logging.debug("Transaction : {0}".format(tx.signed_raw()))
-
-        block_number = community.current_blockid()['number']
-
-        time = community.get_block().time
-        transfer = Transfer.initiate(tx, block_number, time, amount)
-        transfer.send(community)
-        self.caches[community.currency]._transfers.append(transfer)
+        try:
+            result = self.tx_inputs(int(amount), community)
+            inputs = result[0]
+            self.caches[community.currency].available_sources = result[1]
+            logging.debug("Inputs : {0}".format(inputs))
+
+            outputs = self.tx_outputs(recipient, amount, inputs)
+            logging.debug("Outputs : {0}".format(outputs))
+            tx = Transaction(PROTOCOL_VERSION, community.currency,
+                             [self.pubkey], inputs,
+                             outputs, message, None)
+            logging.debug("TX : {0}".format(tx.raw()))
+
+            tx.sign([key])
+            logging.debug("Transaction : {0}".format(tx.signed_raw()))
+
+            transfer = Transfer.initiate(tx, block_number, time, amount,
+                                         key.pubkey, recipient)
+            transfer.send(community)
+            self.caches[community.currency]._transfers.append(transfer)
+        except NotEnoughMoneyError:
+            transfer = Transfer.initiate(None, block_number, time, amount,
+                                         key.pubkey, recipient)
+            self.caches[community.currency]._transfers.append(transfer)
+            raise
 
     def sources(self, community):
         data = community.request(bma.tx.Sources,
diff --git a/src/cutecoin/gui/currency_tab.py b/src/cutecoin/gui/currency_tab.py
index 909ced559f80562d0e9d84c6372a4ff5e9b87e82..bf916d8d194c36a3000c132bd33b65a5e53de7f7 100644
--- a/src/cutecoin/gui/currency_tab.py
+++ b/src/cutecoin/gui/currency_tab.py
@@ -213,7 +213,7 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget):
                                                     pubkey_col)
             person = model.sourceModel().data(person_index, Qt.DisplayRole)
             transfer = model.sourceModel().transfers[source_index.row()]
-            if state_data == Transfer.REFUSED:
+            if state_data == Transfer.REFUSED or state_data == Transfer.TO_SEND:
                 send_back = QAction("Send again", self)
                 send_back.triggered.connect(self.send_again)
                 send_back.setData(transfer)
diff --git a/src/cutecoin/gui/transfer.py b/src/cutecoin/gui/transfer.py
index c0e2333e102e69db75b544149ed8a5e5ea60eaaf..da15100900e9d0dc1449829e1f39f52d59313f1f 100644
--- a/src/cutecoin/gui/transfer.py
+++ b/src/cutecoin/gui/transfer.py
@@ -72,10 +72,9 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog):
                                  QMessageBox.Ok)
             return
         except NotEnoughMoneyError as e:
-            QMessageBox.critical(self, "Money transfer",
-                                 "You don't have enough money available in this block : \n{0}"
-                                 .format(e.message))
-            return
+            QMessageBox.warning(self, "Money transfer",
+                                 """This transaction could not be sent on this block
+Please try again later""")
         except NoPeerAvailable as e:
             QMessageBox.critical(self, "Money transfer",
                                  "Couldn't connect to network : {0}".format(e),
diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py
index aaea42e836829f1c82cc36f3806a2e4c081a519e..24db0bc31181174bb67d5c31ebf8ed089dc5ef3b 100644
--- a/src/cutecoin/models/txhistory.py
+++ b/src/cutecoin/models/txhistory.py
@@ -87,6 +87,8 @@ class TxFilterProxyModel(QSortFilterProxyModel):
                 font.setItalic(True)
             elif state_data == Transfer.REFUSED:
                 font.setItalic(True)
+            elif state_data == Transfer.TO_SEND:
+                font.setBold(True)
             else:
                 font.setItalic(False)
             return font
@@ -94,6 +96,8 @@ class TxFilterProxyModel(QSortFilterProxyModel):
         if role == Qt.ForegroundRole:
             if state_data == Transfer.REFUSED:
                 return QColor(Qt.red)
+            elif state_data == Transfer.TO_SEND:
+                return QColor(Qt.blue)
         return source_data
 
 
@@ -129,7 +133,9 @@ class HistoryTableModel(QAbstractTableModel):
 
     def data_received(self, transfer):
         amount = transfer.metadata['amount']
-        comment = transfer.txdoc.comment
+        comment = ""
+        if transfer.txdoc:
+            comment = transfer.txdoc.comment
         pubkey = transfer.metadata['issuer']
         try:
             #sender = Person.lookup(pubkey, self.community).name
@@ -148,8 +154,9 @@ class HistoryTableModel(QAbstractTableModel):
 
     def data_sent(self, transfer):
         amount = transfer.metadata['amount']
-
-        comment = transfer.txdoc.comment
+        comment = ""
+        if transfer.txdoc:
+            comment = transfer.txdoc.comment
         pubkey = transfer.metadata['receiver']
         try:
             #receiver = Person.lookup(pubkey, self.community).name