How it works

From signup to captured payment, in five steps.

A complete walkthrough of how Trial.io connects to your Stripe account, places a hold at signup, and captures automatically when the trial converts.

  1. Connect your Stripe account

    Trial.io connects to your existing Stripe account through OAuth. Captures, refunds, and payouts all flow through your account, exactly as they do today.

    • One-click OAuth connection in under a minute
    • We never store your secret API key
    • Works on Standard, Express, and direct Stripe accounts
    • No platform fees on captured payments
  2. Build your trial signup page

    Drag-and-drop editor for branding, pricing, copy, and custom fields. Serve from a Trial.io subdomain or your own domain via a single CNAME.

    • Brand kit: colors, logo, typography
    • Pricing modules with monthly and annual toggle
    • Custom fields with conditional logic
    • Localization for currency and language
  3. Card collected, hold placed

    When a user signs up, Stripe Elements collects card details client-side. We create a PaymentIntent with capture_method: 'manual' on your account and place a small hold (default $1) to verify the card.

    • Card details never touch Trial.io servers (PCI scope SAQ A)
    • Configurable hold amount and statement descriptor
    • 3D Secure / SCA handled automatically where required
    • Decline reasons surfaced to the user inline
  4. Reauthorize before day 7

    Stripe holds expire after 7 days. For trials longer than that, Trial.io saves the payment method, cancels the original hold before expiry, and queues a new off-session PaymentIntent for the actual trial end.

    • Customer never sees a re-prompt, the flow is fully off-session
    • Failed reauthorizations surface in Slack and email
    • Configurable buffer (default: 2 hours before trial end)
    • Cron runs every 15 minutes, no manual ops
  5. Auto-capture at trial end

    Two hours before the trial ends, Trial.io runs the capture. If the user has cancelled inside their dashboard, the capture is skipped. Successes flow into your Stripe ledger. Failures retry with a customer-facing recovery flow.

    • Captured payment lives on your Stripe account
    • Built-in dunning for failed captures (up to 3 retries)
    • Optional Slack notification on every capture
    • Webhook events for every state transition
Ready to ship?

Run your first card-required trial today.

Free for the first 100 signups. Setup takes about ten minutes.