← All field notes / Make subscription economics work

SaaS makers · Card-free trials

Your SaaS trial asks for no card. Should Stripe cancel, pause or invoice when it ends?

Pick the end behavior before the first trial expires. In a hypothetical cohort of 120, 111 trials end without a card: cancel leaves 111 closed subscriptions, pause leaves 111 waiting to resume, and invoice leaves $3,219 in open invoices that are not revenue.

GimmeTheSauce editorial ·

120 card-free trials split into 9 that added a card and 111 that did not, which Stripe cancels, pauses or invoices for $3,219.
The same hypothetical cohort under the three end behaviors. Only the nine card holders are paying customers on the trial’s last day.

For a self-serve SaaS that lets people try the product without a card, pause is usually the clearest choice. The subscription stops without creating invoices, the customer keeps their workspace, and a late payer resumes the same subscription. Choose cancel if you want every expired trial closed. Reserve invoice for customers who agreed to pay by invoice. The setting is trial_settings.end_behavior.missing_payment_method. Choose it deliberately rather than inheriting a default. Stripe’s Checkout trial guide

The setting decides what your database sees

In Checkout, payment_method_collection=if_required starts a subscription trial without asking for payment details. When the trial ends without a payment method:

  • cancel ends the subscription immediately. A customer who decides to pay later needs a new subscription.
  • pause moves it to paused. It does not cycle or generate invoices and can stay paused indefinitely. After the customer adds a payment method, you can resume the same subscription.
  • create_invoice invoices at the end of the trial. If there is still no payment method when the invoice finalizes, the subscription becomes past_due.

Stripe’s free trial documentation

Follow one hypothetical cohort

Suppose a SaaS offers a 14-day trial of a $29 monthly plan with no card required. In October, 120 trials end. Nine customers added a card before their trial ended and were charged. The other 111 reach the end without one. During the following 30 days, four of them decide to pay.

End behaviorThe 111 on the last dayThe four late payersWhat can go wrong
cancel111 canceled subscriptionsFour new subscriptionsLate payers appear without a trial unless you join them to the original customer.
pause111 paused subscriptionsFour resumed subscriptions107 stay paused. A report counting every non-canceled subscription overstates customers.
create_invoice111 past-due subscriptions with $29 invoicesFour paid invoices, if they add a card$3,219 in open invoices that nobody agreed to pay. Access rules that allow past_due keep 111 accounts open.

The open total is 111 × $29 = $3,219. It is not revenue or a collectable balance. It is a bill created for people who never entered a card.

Write the access rule for every status

Grant paid access for trialing and active. Show a paused account an add-payment screen that keeps its data, and do not serve paid features. Treat canceled as ended. Decide explicitly whether past_due keeps access. A short grace for a failed card renewal is a different situation from a trial that never had a card. Process subscription webhooks and test each transition in a sandbox before the first real trial expires.

Measure two numbers, not one

On the trial’s last day, 9 of 120 trials converted: 7.5%. Within 30 days after the end, 13 of 120 converted: 10.83%. Report both, along with the window. Count a late payer once, against the cohort whose trial they started. With cancel, link the new subscription back by customer; with pause, the resumed subscription already carries the history.

Keep paused accounts out of paying customers and out of churn. They never paid, so they were not lost revenue. When you reconcile monthly churn, separate requests from the end of paid access, and keep ended trials out of both. If late payers start a fresh Checkout instead of resuming, protect that purchase against a lost response too. Reuse the stored request key for a retried session.

Time the reminder for the trial you actually offer

Stripe can send a hosted reminder email 7 days before a trial ends, with a link for the customer to add payment details. It does not send these emails in a sandbox. The customer.subscription.trial_will_end event defaults to 3 days before the end and fires immediately if the trial is shorter. Use it for your own in-app or email reminder. On a short trial, a reminder scheduled days ahead can arrive close to signup. Make sure it also describes the work the customer has already done. Stripe’s trial events

Once you have your cohort counts, ask Jon Yongfook’s AI mentor whether your trial-end message fits your buyers ↗. Bring the counts, status rules and reminder timing, not customer emails.