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 ·

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 behavior | The 111 on the last day | The four late payers | What can go wrong |
|---|---|---|---|
| cancel | 111 canceled subscriptions | Four new subscriptions | Late payers appear without a trial unless you join them to the original customer. |
| pause | 111 paused subscriptions | Four resumed subscriptions | 107 stay paused. A report counting every non-canceled subscription overstates customers. |
| create_invoice | 111 past-due subscriptions with $29 invoices | Four 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.