diff --git a/datacenterlight/views.py b/datacenterlight/views.py
index 82325090..0d373113 100644
--- a/datacenterlight/views.py
+++ b/datacenterlight/views.py
@@ -32,6 +32,7 @@ from .models import BetaAccess, BetaAccessVMType, BetaAccessVM, VMTemplate
 
 logger = logging.getLogger(__name__)
 
+
 class ContactUsView(FormView):
     template_name = "datacenterlight/contact_form.html"
     form_class = ContactForm
@@ -438,10 +439,10 @@ class PaymentOrderView(FormView):
                     email=this_user.get('email'),
                     token=token,
                     customer_name=form.cleaned_data.get('name'))
-                #try:
+                # try:
                 #    custom_user = CustomUser.objects.get(
                 #        email=this_user.get('email'))
-                #except CustomUser.DoesNotExist:
+                # except CustomUser.DoesNotExist:
                 #    password = CustomUser.get_random_password()
                 #    # Register the user, and do not send emails
                 #    custom_user = CustomUser.register(
@@ -453,7 +454,7 @@ class PaymentOrderView(FormView):
                 #        username=custom_user.email,
                 #        password=password)
                 #    login(request, new_user)
-                #else:
+                # else:
                 #    # new user used the email of existing user, fail
                 #    messages.error(
                 #        self.request,
@@ -462,16 +463,16 @@ class PaymentOrderView(FormView):
                 #    )
                 #    return HttpResponseRedirect(
                 #        reverse('datacenterlight:payment'))
-            #billing_address_data = form.cleaned_data
-            #billing_address_data.update({
+            # billing_address_data = form.cleaned_data
+            # billing_address_data.update({
             #    'user': custom_user.id
-            #})
-            #billing_address_user_form = UserBillingAddressForm(
+            # })
+            # billing_address_user_form = UserBillingAddressForm(
             #    instance=custom_user.billing_addresses.first(),
             #    data=billing_address_data)
-            #billing_address_user_form.save()
-            #for k, v in form.cleaned_data.iteritems():
-            request.session['billing_address_data'] = form.cleaned_data    
+            # billing_address_user_form.save()
+            # for k, v in form.cleaned_data.iteritems():
+            request.session['billing_address_data'] = form.cleaned_data
             request.session['user'] = this_user
             # Get or create stripe customer
             if not customer:
@@ -479,7 +480,8 @@ class PaymentOrderView(FormView):
                 return self.render_to_response(
                     self.get_context_data(form=form))
             request.session['token'] = token
-            request.session['customer'] = customer.id if request.user.is_authenticated() else customer
+            request.session[
+                'customer'] = customer.id if request.user.is_authenticated() else customer
             return HttpResponseRedirect(
                 reverse('datacenterlight:order_confirmation'))
         else:
@@ -500,7 +502,8 @@ class OrderConfirmationView(DetailView):
             return HttpResponseRedirect(reverse('datacenterlight:payment'))
         stripe_customer_id = request.session.get('customer')
         if request.user.is_authenticated():
-            customer = StripeCustomer.objects.filter(id=stripe_customer_id).first()
+            customer = StripeCustomer.objects.filter(
+                id=stripe_customer_id).first()
             stripe_api_cus_id = customer.stripe_id
         else:
             stripe_api_cus_id = stripe_customer_id
@@ -529,11 +532,12 @@ class OrderConfirmationView(DetailView):
         user = request.session.get('user')
         stripe_customer_id = request.session.get('customer')
         if request.user.is_authenticated():
-            customer = StripeCustomer.objects.filter(id=stripe_customer_id).first()
+            customer = StripeCustomer.objects.filter(
+                id=stripe_customer_id).first()
             stripe_api_cus_id = customer.stripe_id
         else:
             stripe_api_cus_id = stripe_customer_id
-        
+
         vm_template_id = template.get('id', 1)
 
         # Make stripe charge to a customer
@@ -572,20 +576,23 @@ class OrderConfirmationView(DetailView):
         stripe_subscription_obj = subscription_result.get('response_object')
         # Check if the subscription was approved and is active
         if stripe_subscription_obj is None or \
-                stripe_subscription_obj.status != 'active':
+                        stripe_subscription_obj.status != 'active':
             msg = subscription_result.get('error')
             messages.add_message(self.request, messages.ERROR, msg,
                                  extra_tags='failed_payment')
             return HttpResponseRedirect(
                 reverse('datacenterlight:payment') + '#payment_error')
 
-        # Create user if the user is not logged in
-        if not request.user.is_authenticated():
+        # Create user if the user is not logged in and if he is not already
+        # registered
+        if not request.user.is_authenticated() and CustomUser.objects.filter(
+                email=user.get('email')).exists():
             try:
                 custom_user = CustomUser.objects.get(
                     email=user.get('email'))
             except CustomUser.DoesNotExist:
-                logger.debug("Customer {} does not exist.".format(user.get('email')))
+                logger.debug(
+                    "Customer {} does not exist.".format(user.get('email')))
                 password = CustomUser.get_random_password()
                 # Register the user, and do not send emails
                 custom_user = CustomUser.register(
@@ -623,7 +630,7 @@ class OrderConfirmationView(DetailView):
         billing_address = billing_address_user_form.save()
         billing_address_id = billing_address.id
         logger.debug("billing address id = {}".format(billing_address_id))
-            
+
         create_vm_task.delay(vm_template_id, user, specs, template,
                              stripe_customer_id, billing_address_data,
                              billing_address_id,