     { JVM } = KD.remote.api
 
     { plan, pack } = productData
-      
+
+    payment = KD.getSingleton 'paymentController'
+
     if paymentMethod and not subscription
 
-      return plan.subscribe paymentMethod.paymentMethodId, (err, subscription) =>
+      plan.subscribe paymentMethod.paymentMethodId, (err, subscription) =>
         return  if KD.showError err
 
         @provisionVm { subscription, productData }
 
-    subscription.debit pack, (err, nonce) =>
+      return
+
+    payment.debitSubscription subscription, pack, (err, nonce) =>
       return  if KD.showError err
 
       JVM.createVmByNonce nonce, (err, vm) =>

    # fix this one on radios value cannot have some chars and that's why i keep index as the value
    descriptions = plans.map (plan) -> plan.description
    hostTypes    = plans.map (plan, i)->
      title       : plan.description.title
      value       : i
      feeAmount  : (plan.feeAmount / 100).toFixed 0

    { descriptions, hostTypes }


    productForm = new VmProductForm

    payment = KD.getSingleton 'paymentController'

    payment.fetchSubscriptionsWithPlans ['vm'], (err, subscriptions) ->
      productForm.setCurrentSubscriptions subscriptions

    productForm.on 'PackOfferingRequested', (subscription) ->
