       {uplimit: aDay * 15, percent: 20}
     ]
 
-    dateNow = new Date()
-    dateEnd = new Date(@renew)
-    usage   = (dateEnd.getTime() - dateNow.getTime()) / aDay
+    dateNow = new Date
+    dateEnd = @renewAt
+    usage   = (dateEnd - dateNow) / aDay
 
     refundMap.every (ref)=>
       return callback null, ref.percent  if usage < ref.uplimit
       callback yes, 0
 
   update_ = (subscription, callback)->
-    {status, datetime, expires, plan, quantity, renew, amount} = subscription
-    @setData extend @getData(), {status, datetime, expires, plan, quantity, renew, amount}
+    {status, activatedAt, expiresAt, plan, quantity, renewAt, amount} = subscription
+    @setData extend @getData(), {
+      status, activatedAt, expiresAt, plan, quantity, renewAt, amount
+    }
     @save (err)-> callback err, this
 
   update: (quantity, callback)->

      keyField      : 'uuid'
      message       : 'user subscriptions'
      forEach       : (uuid, cached, sub, stackCb)=>
        {plan, quantity, status, datetime, expires, renew, amount} = sub
        cached.setData extend cached.getData(), {
          userCode, plan, quantity, status, datetime, expires, renew, amount
        }
        cached.lastUpdate = Date.now()
        cached.save stackCb

    JPayment.invalidateCacheAndLoad this, selector, {forceRefresh, forceInterval}, callback

  @updateCache = (selector, callback)->
    JPayment.updateCache
      constructor   : this
      selector      : { paymentMethodId: selector.paymentMethodId }
