callmeizaz
callmeizaz

Reputation: 299

NodeJs Update default credit card of customer for Stripe subscriptions and payment

I am building an app in which i am using stripe to handle all payments. And in our app we have a common feature where user can update the default card for their subscriptions but it not working as expected. I Have followed the instruction to update the customer payment method as described in the stripe documentation but it's not working as expected i still see the old credit card details as default payment method in stripe dashboard.

Updating the customer:

 const customer = await stripe.customers.update(body.customerId, {
  invoice_settings: {default_payment_method: body.pId},
});

Attaching payment method to customer and updating subscription:

 const paymentMethod = await stripe.paymentMethods.attach(body.pId, {
  customer: body.customerId,
});

await stripe.subscriptions.update(subscriptionDetails?.planId as string, {
  default_payment_method: paymentMethod.id,
});

But still nothing, i am not sure what i am missing here but i couldn't update the default payment method.

Stripe dashboard

Upvotes: 0

Views: 674

Answers (1)

yuting
yuting

Reputation: 1694

The screenshot you shared refers to the payment methods saved on the Customer. If you wish to set the default payment method on the Customer, it will be under invoice_settings.default_payment_method on Customer API.

Subscription's default payment method is different from Customer's default payment method. With default_payment_method on Subscription API, it will only update the default on the Subscription object, not Customer object like the page you see. You should be able to find Subscription's default payment method at the Subscription page. enter image description here

Subscription page link will be: https://dashboard.stripe.com/test/subscriptions/sub_xxx where sub_xxx is the Subscription ID.

Upvotes: 0

Related Questions