Card holds for free trials

How TrialValid holds the plan price at sign-up, starts the trial, captures before it ends, and what happens when a step fails.

Trial #1042ConvertedSample
  1. Hold placedSign-up
  2. Reminder sentTrial runs
  3. Hold capturedTwo hours before end
  4. Invoice nets to zeroTrial ends

Hold first, trial second

When a buyer signs up, TrialValid creates a Stripe customer and an uncaptured PaymentIntent for the plan price, card only.

A trial that ends on the date the buyer saw

Once the hold is confirmed, TrialValid creates a free-trial subscription on the same saved card.

Capture two hours before the trial ends

A capture job reads the PaymentIntent from Stripe first, because an earlier run may already have captured it.

Rules that protect the buyer

A capture never runs inside the last 5 minutes of the trial, because Stripe charges the first invoice then and a capture would collect twice.

Card holds for free trials

Hold first, trial second

When a buyer signs up, TrialValid creates a Stripe customer and an uncaptured PaymentIntent for the plan price, card only. The trial starts only after Stripe reports that the card can cover the price. A card that cannot be held never starts a trial.

02

A trial that ends on the date the buyer saw

Once the hold is confirmed, TrialValid creates a free-trial subscription on the same saved card. The trial ends on the date the buyer was shown, and no payment is attempted at sign-up.

03

Capture two hours before the trial ends

A capture job reads the PaymentIntent from Stripe first, because an earlier run may already have captured it. It then captures with an idempotency key per attempt. It tries up to 11 times, 10 minutes apart, which fits inside the two-hour lead.

After Stripe confirms the capture, TrialValid writes a negative customer-balance transaction for the same amount. When Stripe issues the first invoice at trial end, the credit pays it, so the buyer is charged once.

04

Rules that protect the buyer

  • A capture never runs inside the last 5 minutes of the trial, because Stripe charges the first invoice then and a capture would collect twice.
  • Trials longer than about 7 days need the hold renewed. TrialValid places a fresh merchant-initiated hold before the old one lapses. A renewal that needs buyer authentication counts as failed.
  • If a hold cannot be renewed, the trial is marked as lost and you get an alert. The same setting as for a failed capture decides the subscription (below).
  • Every Stripe write carries an idempotency key built from the trial and the action, so a retried job cannot double-charge.

05

What you decide when a capture fails

If every capture attempt fails, the hold is released and you get an alert. You decide what happens to the subscription: by default it is left to Stripe, which charges the saved card on the first invoice and keeps retrying under your own billing settings, which may recover the payment; or you can switch to canceling it. The choice applies to a lapsed or unrenewable hold too. If the capture window is missed, the subscription is never canceled, because the card did nothing wrong.

Start every trial on a card that works.

Connect your Stripe account, publish a trial page and let the hold, the reminder and the capture run on one schedule.

Starter, online

$29 a month for $0 up to $10,000 of MRR. Start with a 14-day trial for $1.

See pricing

Growth and larger plans

$95 to $1,995 a month, set up with you on an onboarding call.

Book a call