Stripe trial end: how to require a card before the trial starts
Configures Stripe trials so a payment method is collected before the trial begins. Use when you want card-on-file during trial to reduce failed conversions at trial end. Not for trials that intentionally start card-free.
TL;DR
Stripe trials can start without a card, but then trial end has nothing to charge. Require a payment method at signup by creating the customer with a payment method first (setup intents or checkout in setup mode), then create the trialing subscription on that customer. At trial end the first real invoice charges the stored card automatically.
Steps
- Decide the trial model: card upfront (higher conversion friction, higher paid conversion) vs card-free (more signups, more failed conversions).
Expected: The business tradeoff is explicit before you build.
- For card upfront, collect the payment method first: Checkout in setup mode or a SetupIntent on your own form.
Expected: A payment method is attached to the customer before any subscription exists.
- Create the subscription with trial_end set and the customer already carrying a default payment method.
Expected: The trial starts with a chargeable method on file.
- Set payment_behavior so a declined card at trial end follows your chosen dunning path instead of silently failing.
Expected: Trial-end failures route somewhere visible.
- Send a trial-ending reminder a few days before trial_end using invoice.upcoming.
Expected: Customers are not surprised by the first charge.
When to use
- You want a card on file before trial start
- Trial-end conversions fail for missing payment methods
- You need setup-mode Checkout for trials
When not to use
- Your growth model depends on frictionless card-free trials
- You bill the trial itself (that is not a trial, it is a discounted period)
- Local regulations restrict pre-trial card collection (check first)
Compatibility
Stripe Billing; SetupIntents, Checkout setup mode, trial_end on subscriptions. All official SDKs.
Variant phrasings
### Stripe trial require payment method upfront
### setup intent before trial subscription
### trial without card Stripe conversion
Root cause
Trials and payment collection are decoupled by design: trial_end only schedules the first real invoice, and invoicing only succeeds against a stored payment method. Card-free trials optimize signup volume at the cost of a payment-method gap that first shows up exactly when money is due.
Edge cases
- 3DS regions may need the customer to authenticate at trial end anyway
- Attaching a card does not validate it has funds; consider a zero-amount verification
- Changing trial length per customer is fine, but keep trial_end timestamps consistent for reminders
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_7oO7ADiRg7qij9-AmbS7ZQ
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.