 
     { paymentController } = KD.singletons
 
-    paymentController.creditCard (err, card) =>
-
-      @state.paymentMethod = card
-
-      { UPGRADE, DOWNGRADE, INTERVAL_CHANGE } = PaymentConstants.operation
-
-      switch operation
-        when DOWNGRADE                then @startDowngradeFlow()
-        when UPGRADE, INTERVAL_CHANGE then @startRegularFlow()
-
-      @emit 'WorkflowStarted'
+    paymentController.canUserPurchase (err, canPurchase) =>
+
+      return @showError err  if err
+
+      unless canPurchase
+        return @showError { message: PaymentConstants.error.ERR_USER_NOT_CONFIRMED }
+
+      paymentController.creditCard (err, card) =>
+
+        @state.paymentMethod = card
+
+        { UPGRADE, DOWNGRADE, INTERVAL_CHANGE } = PaymentConstants.operation
+
+        switch operation
+          when DOWNGRADE                then @startDowngradeFlow()
+          when UPGRADE, INTERVAL_CHANGE then @startRegularFlow()
+
+        @emit 'WorkflowStarted'
+
+
+  showError: (err) ->
+
+    { message } = err
+
+    humanReadable = PaymentConstants.error[message]
+    err.message   = humanReadable  if humanReadable
+
+    KD.showError err
+    @modal?.form.submitButton.hideLoader()
 
 
   startRegularFlow: ->
 
     @modal = new PaymentModal { @state }
     @modal.on 'PaymentWorkflowFinished',          @bound 'finish'
-    @modal.on 'PaymentSubmitted',                 @bound 'handlePaymentSubmit'
     @modal.on 'PaymentWorkflowFinishedWithError', @bound 'finishWithError'
+
+    @modal.on 'PaymentSubmitted', (formData) =>
+      isUserConfirmed (err, confirmed) =>
+        return @userIsNotConfirmed err  if err
+        @handlePaymentSubmit formData
 
     @modal.on 'PaypalButtonClicked', =>
       @state.provider = PaymentConstants.provider.PAYPAL

    me = KD.whoami()
    me.fetchEmail (err, email) =>

      return KD.showError err  if err

      options.email = email
      options.provider = @state.provider


    @destroy()


