I have an app that is built with React and Firebase, along with the Run Payments with Stripe Firebase extension. In the app, I sell a 24-hour usage license for a service (using Stripe Checkout).
This product is currently set up as a "one time" charge in Stripe. This isn’t ideal for a few reasons:
- The activation status and period end aren’t included in the Firestore Doc that Stripe creates in the
payments
collection (by contrast, when a subscription is purchased, Stripe automatically includes activation information in the Doc created in thesubscriptions
collection). - Without additional code and Firestore updates/reads, a user can’t prematurely cancel their activation period if they want to. It’s also a hassle to enable users to extend their current activation period.
I would rather set up this product as a "recurring", daily billing cycle… except, I don’t want the billing to actually recur.
In Stripe, is it possible to set up a subscription product that doesn’t automatically renew? (Either as a setting within the Stripe dashboard, or as a property passed when creating a checkout session)
2
Answers
While this is not currently possible directly via Checkout settings, you can achieve this using webhooks.
By listening to either
checkout.session.completed
orcustomer.subscription.created
events, your application could then set each newly created subscription to cancel at the end of the first billing period (for you, the first day) usingcancel_at_period_end=true
.For customers who do choose to renew, you can clear this settings to
false
before the end of the period to allow the subscription to renew.You might want to look at the subscription schedules API.
If I understand correctly your requirement, you could set up one unique phase of 24h after which the subscription would then be
released
orcanceled
, ([end_behavior][2]
attribute from the schedules API)I haven’t looked at the Firebase Stripe extension in a while, so I can’t tell whether you will tell be able to implement this with the extension.
Hope this helps.