3
1 Comment

Stripe subscription workflows - Does it look like I’m missing anything?

I’m building a subscription service app and want to make sure I’m including all of the necessary workflows. Here is how I structured my app:

Each user has the following fields:

  • Subscription type
  • Trial end date

Below are some important workflows:

Sign Up

  1. User signs up > set subscription type to ‘trial’ > set trial end date to ‘today + 14 days’

Trial Ends

  1. Backend workflow > check daily for users whose trial has ended > set user subscription to ‘no subscription’ > send email to user

Subscribe

  1. User subscribes to stripe plan > add credit card > change user subscription type to ‘subscribedplan1’ > send invoice to user

Change Subscription Plan

  1. User subscribes to stripe plan > change user subscription type to ‘subscribedplan2’ > send invoice to user

Cancel Plan

  1. Change user’s trial end date to ‘subscription ending date’ > cancel stripe subscription > Delete credit card
  2. Backend workflow > receive webhook ‘customer.subscription.deleted’ > change user’s subscription type to ‘trial’ > Send email
    This part feels sloppy. I’m trying to allow the user to have access to the app for the remainder of the period they have paid for by giving them an additional trial period.

Are there any other important workflows I’m missing or can improve?

  1. 1

    # Trial Ends

    Backend workflow > check daily for users whose trial has ended > set user subscription to ‘no subscription’ > send email to user

    You might want to email the user ahead of time before the trial expires.

    # Change Subscription Plan

    User subscribes to stripe plan > change user subscription type to ‘subscribedplan2’ > send invoice to user

    Are you prorating? Or just applying the change at the end of the current period?

    # Cancel Plan

    Backend workflow > receive webhook ‘customer.subscription.deleted’ > change user’s subscription type to ‘trial’ > Send email
    This part feels sloppy. I’m trying to allow the user to have access to the app for the remainder of the period they have paid for by giving them an additional trial period.

    I assume you are not using Stripe Billing? If you are not, I would recommend using a field called "next payment date". Rather than deleting the subscription, you just don't extend the "next payment due".

    I think of it this way:

    • When I subscribe to a monthly magazine, I get one subscription #1001
    • Every month, I make a payment
    • Instead of creating a subscription for each month, my payment just keeps subscription #1001 active (not #1001 for January, #1002 for February, etc)
    • If I cancel in the middle of the month, my next payment date doesnt change
    • A new payment just isn't applied which will then put my subscription "on hold" before deleting or cancelling my subscription
    • If I fail to make a payment within X days, then automatically cancel my subscription

    Hope this helps 😃👍

Trending on Indie Hackers
Competing with Product Hunt: a month later 33 comments Why do you hate marketing? 29 comments My Top 20 Free Tools That I Use Everyday as an Indie Hacker 18 comments $15k revenues in <4 months as a solopreneur 14 comments Use Your Product 13 comments How I Launched FrontendEase 13 comments