Does the Subscriptions plugin work with "one-off" payment pricing tables?

Continuing the discussion from Discourse Subscriptions:

If we set up the payment in a Stripe pricing table to be “one-off” as opposed to “recurring” does everything still work? My intent is to use the subscription feature to allow users to subscribe to unlock some stuff, but I want them to have to manually re-subscribe. Therefore I am trying to figure out if at the end of, let’s say, a 6-month subscription the plugin will still remove them from the group even if it’s a “one-off” payment?

Some of the payment methods for Poland (Blik and Przelewy24) don’t allow for recurring payments, but I would like to have them enabled as people here tend to trust them significantly more than giving over credit card information. So it has the potential to drastically affect conversion rates!

1 Like

I think these webhooks only fire for “subscriptions”. So once someone has payed for a one-off payment they would continue to be in the group until they were manually removed.

Are you configuring the duration in Stripe anywhere or are you just labelling a one-off payment as 6-months? Not sure if Stripe even supports this, but it could be a possible feature we build into the plugin for one-off purchases.

Indeed you’re correct, my bad. I just checked and one-off payments and Stripe doesn’t even let you have any set time period. So I suppose my only options are either: a) I must do recurring payments using card only, OR b) label the products as being only for 6 months in the title or description then manually removing them in Discourse (which I really don’t wanna do lol). Uff…

Furthermore, do I understand this correctly that I can create the whole pricing table with recurring subscriptions on the Stripe website, then run the rake and it’ll work in Discourse? Because one of my plans will have tiered pricing in which more seats means each seat is cheaper, and I’ll be sending invites to the emails I collect via a custom form on the checkout page.

Probably not. I’d try with one or two things in your pricing table before assuming that rake task will do exactly what you want. Discourse wants a couple of meta-data fields in Stripe; I’m not sure what the rake task does about those.

I would start with creating the product in discourse first. As long as it doesn’t have any purchases yet, you can then go into Stripe and edit the price and then make it tiered. You are kind of in uncharted territory here, but I think as long as you are using a pricing table it should work.

2 Likes

I will do this and I’ll try to test it tonight in test mode and with a newly registered test user. Then I’ll report back to this topic :saluting_face:

2 Likes

Wow guys okay so I think it’s working. So I made two products Discourse-side then edited them Stripe-side to be for 6 months (wasn’t an option in the plugin). I then also added marketing features and description to them. I made one of the products tiered and added both of them to the pricing table. I did one subscription successfully then canceled it and tested the other one (tiered), also successfully.

(Side note: I needed this tiered plan because I want to offer a plan for business teams in which each seat is a bit cheaper (discounted by volume) then later I can just manually invite the missing team members via invite link and manually add them all to a private group.)

The pricing table worked with both products and with a coupon code. In Stripe, it shows the next renewal date being six months from now, but in Discourse the product was made with the “one month” renewal option so it is still unclear to me if that will cause any problems!

However, it seems like it’s working even though this approach isn’t “officially supported” and if I will have to manually adjust something in 6 months then that’s a small price to pay! It’s just important the user was actually added to group and the payment was processed.

2 Likes

And in /(user)/billing/subscriptions it shows the 6-month tiered plan as:

Rate: 0.00 PLN / month
Renews: July 15, 2025

Which lines up with what the Stripe dashboard shows. So as far as Stripe is concerned the 6-month subscription is working, and it’s just a matter of if the Discourse plugin will kick them out after a month or not.

When I use the time simulator in Stripe and skip ahead one month, it removes the entire Subscription ID from the admin subscription plugin dashboard /admin/plugins/discourse-subscriptions/subscriptions as if it never existed. But the user is still in the group and Stripe still shows the subscription as active.

Hopefully in the future we could get support for 6-month subscriptions :face_with_peeking_eye:

That’s brilliant! I think that this trick might help me out too. Thanks for sharing!

I think they get kicked out by a webhook from Stripe, so I think it’s going to do the Right Thing. Time will tell!

1 Like

Correct. The subscription plugin doesn’t have any timers of its own. It just listens for webhook events from Stripe.

1 Like