diff --git a/cotisations/forms.py b/cotisations/forms.py
index 02ee3e3c..e1dd9e28 100644
--- a/cotisations/forms.py
+++ b/cotisations/forms.py
@@ -49,28 +49,34 @@ from .models import Article, Paiement, Facture, Banque
 from .payment_methods import balance
 
 
-class NewFactureForm(FormRevMixin, ModelForm):
+class FactureForm(FieldPermissionFormMixin, FormRevMixin, ModelForm):
     """
-    Form used to create a new invoice by using a payment method, a bank and a
-    cheque number.
+    Form used to manage and create an invoice and its fields.
     """
 
-    def __init__(self, *args, **kwargs):
-        user = kwargs.pop('user')
+    def __init__(self, *args, creation=False, **kwargs):
+        user = kwargs['user']
         prefix = kwargs.pop('prefix', self.Meta.model.__name__)
-        super(NewFactureForm, self).__init__(*args, prefix=prefix, **kwargs)
+        super(FactureForm, self).__init__(*args, prefix=prefix, **kwargs)
         self.fields['paiement'].empty_label = \
             _("Select a payment method")
         self.fields['paiement'].queryset = Paiement.objects.filter(
             pk__in=map(lambda x: x.pk, Paiement.find_allowed_payments(user))
         )
+        if not creation:
+            self.fields['user'].label = _("Member")
+            self.fields['user'].empty_label = \
+                _("Select the proprietary member")
+            self.fields['valid'].label = _("Validated invoice")
+        else:
+            self.fields = {'paiement': self.fields['paiement']}
 
     class Meta:
         model = Facture
-        fields = ['paiement']
+        fields = '__all__'
 
     def clean(self):
-        cleaned_data = super(NewFactureForm, self).clean()
+        cleaned_data = super(FactureForm, self).clean()
         paiement = cleaned_data.get('paiement')
         if not paiement:
             raise forms.ValidationError(
@@ -151,26 +157,6 @@ class NewFactureFormPdf(Form):
     )
 
 
-# TODO : change Facture to Invoice
-class EditFactureForm(FieldPermissionFormMixin, NewFactureForm):
-    """
-    Form used to edit an invoice and its fields : payment method, bank,
-    user associated, ...
-    """
-    class Meta(NewFactureForm.Meta):
-        # TODO : change Facture to Invoice
-        model = Facture
-        fields = '__all__'
-
-    def __init__(self, *args, **kwargs):
-        # TODO : change Facture to Invoice
-        super(EditFactureForm, self).__init__(*args, **kwargs)
-        self.fields['user'].label = _("Member")
-        self.fields['user'].empty_label = \
-            _("Select the proprietary member")
-        self.fields['valid'].label = _("Validated invoice")
-
-
 class ArticleForm(FormRevMixin, ModelForm):
     """
     Form used to create an article.
diff --git a/cotisations/views.py b/cotisations/views.py
index c1a8d68f..13c8b461 100644
--- a/cotisations/views.py
+++ b/cotisations/views.py
@@ -60,8 +60,7 @@ from re2o.acl import (
 from preferences.models import AssoOption, GeneralOption
 from .models import Facture, Article, Vente, Paiement, Banque
 from .forms import (
-    NewFactureForm,
-    EditFactureForm,
+    FactureForm,
     ArticleForm,
     DelArticleForm,
     PaiementForm,
@@ -84,7 +83,7 @@ def new_facture(request, user, userid):
     """
     View called to create a new invoice.
     Currently, Send the list of available articles for the user along with
-    a formset of a new invoice (based on the `:forms:NewFactureForm()` form.
+    a formset of a new invoice (based on the `:forms:FactureForm()` form.
     A bit of JS is used in the template to add articles in a fancier way.
     If everything is correct, save each one of the articles, save the
     purchase object associated and finally the newly created invoice.
@@ -95,10 +94,11 @@ def new_facture(request, user, userid):
         Q(type_user='All') | Q(type_user=request.user.class_name)
     )
     # Building the invoice form and the article formset
-    invoice_form = NewFactureForm(
+    invoice_form = FactureForm(
         request.POST or None,
         instance=invoice,
-        user=request.user
+        user=request.user,
+        creation=True
     )
 
     if request.user.is_class_club:
@@ -278,7 +278,7 @@ def edit_facture(request, facture, **_kwargs):
     can be set as desired. This is also the view used to invalidate
     an invoice.
     """
-    invoice_form = EditFactureForm(
+    invoice_form = FactureForm(
         request.POST or None,
         instance=facture,
         user=request.user