Demo, all content is generated
Question

Free trial without card: when the trial ends the subscription just sits there, nobody pays

Solved · 782 views · asked by annika_bb · edited

14-day trial, no card required at signup (Stripe Checkout with payment_method_collection: 'if_required'). After 14 days the subscriptions show as... active? with an unpaid invoice? And users keep using the app.

What's the right setup so the trial ends and they have to add a card?

What I’ve tried

Looked for trial settings in dashboard. Asked v0 which added a cron job that checks trial_end dates, which I'd rather not have.

Comment

2 answers

Marked as helpful by the asker
tobiasw · edited

Tell Stripe what to do when the trial ends without a payment method:

subscription_data: {
  trial_period_days: 14,
  trial_settings: {
    end_behavior: { missing_payment_method: "cancel" }, // or "pause"
  },
},
payment_method_collection: "if_required",
  • cancel: subscription ends, customer.subscription.deleted fires.
  • pause: status becomes paused until they add a card. Nice if you want "add card to continue" without losing the subscription.
  • default (create_invoice): what you have now, an open invoice while status can look active.

Listen to customer.subscription.trial_will_end (fires 3 days before) to send the "add your card" email with a portal link. Delete the cron job.

Comment
went with pause + the trial_will_end email. way cleaner. annika_bb · edited
Late to this but +1 for pause. Conversion from paused to paid is decent if the email links straight to the portal. nils_tw · edited
Agreed, pause is underused. tobiasw · edited
tessa_k · edited

One caveat with pause: paused subscriptions don't create invoices, so if you show "billing history" in your app, handle the paused status there too. Tripped me up.

Comment