skip to Main Content

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 the subscriptions 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


  1. While this is not currently possible directly via Checkout settings, you can achieve this using webhooks.

    By listening to either checkout.session.completed or customer.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) using cancel_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.

    Login or Signup to reply.
  2. 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 or canceled, ([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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search