diff --git a/lib/handlers/upgrade.js b/lib/handlers/upgrade.js
index <HASH>..<HASH> 100644
--- a/lib/handlers/upgrade.js
+++ b/lib/handlers/upgrade.js
@@ -410,7 +410,9 @@ upgrade.processPayment = function (req, res, next) {
     return getCustomerByUser(req.session.user).then(function (results) {
       var result = results[0];
       debug('.then, stripe.customers.retrieve(%s)', result.stripe_id); // jshint ignore:line
-      return stripe.customers.retrieve(result.stripe_id).catch(function (err) {
+      return stripe.customers.update(result.stripe_id, {
+        source: stripSubscriptionData.card
+      }).catch(function (err) {
         // failed to subscribe existing user to stripe
         metrics.increment('upgrade.fail.existing-user-change-subscription');
         console.error('upgrade.fail.existing-user-change-subscription');
fix: fail to re-upgrade

Fixes: #<I>
Fixes: #<I>
Fixes: #<I>
Fixes: #<I>
Fixes: #<I>
Fixes: #<I>

This was existing users that had customer records, but Stripe was using their original card details upon resubscribing. This fix updates their profile with the card that they just entered.