Silent subscription failures in Subscriptions plugin

Plugin: discourse-subscriptions Version: Latest (confirmed up to date) Discourse Version: 3.5.4

Bug Summary: In certain edge cases, the plugin creates a PaymentIntent without attaching a valid payment method, causing the subscription to fail silently for the end user.

Steps to Reproduce:

  1. Customer has an expired card saved to their Stripe customer profile

  2. Customer attempts to subscribe or update their payment method

  3. Plugin creates a PaymentIntent but fails to pass the new card details to Stripe

  4. Transaction fails with resource_missing or payment_intent_incompatible_payment_method error

Stripe Error Logs:

resource_missing: This customer has no attached payment source or default 
payment method.

payment_intent_incompatible_payment_method: A payment method of type card 
was expected to be present, but this PaymentIntent does not have a payment 
method and none was provided.

What Stripe Confirmed:

  • Stripe account is in good standing, no issues on their end

  • PaymentIntents were created without a payment method attached

  • The plugin is passing a card_ object in some cases rather than a pm_ Payment Method object — these are not interchangeable in Stripe’s current API

Additional Context:

  • This happens approximately 2x/month on a community with ~18,000 active members

  • The plugin is a built-in that cannot be modified at the host level (confirmed with Communiteq)

  • Normal checkout works correctly; the failure occurs specifically when a customer has a stale/expired card on file and attempts a new payment

  • Workaround is to manually send a hosted Stripe invoice, but this does not trigger the webhook that assigns the user’s Discourse group automatically, creating a second manual step

Request: A fix for the payment method handoff when a customer’s existing card is expired or invalid, ensuring the new card entry generates a proper pm_ Payment Method object that gets correctly attached to the PaymentIntent before submission.

1 Like

Thanks for the bug report, Todd!

I’ve moved it here to Contribute > Bug, where it will hopefully get the attention it deserves.

2 Likes