Flexible Billing Demo
14 scenarios running against the real Stripe API. Each step streams live as it executes.
Settings
Stripe Dashboard links are shown on each step. They require access to the Stripe account that owns the test keys.
Each scenario creates a unique customer in Stripe. Change the name/domain to organize test data in your dashboard.
What Flexible Billing Adds to Cashier
Cashier already handles subscriptions, payments, and metered billing well. Flexible billing mode extends it with:
$subscription->migrateToFlexibleBillingMode() when ready, or set Cashier::defaultBillingMode('flexible') so all new subscriptions use it automatically.
Core Flexible Billing
Flexible Subscription
ReadyCreate a subscription with billing_mode: flexible, verify on Stripe, clean up.
The foundation of everything. Any SaaS app that charges a monthly fee can benefit from the improved proration and invoice handling.
Hybrid Billing (Fixed + Metered)
ReadyCombine $29/mo base + $0.01/API call on one flexible subscription.
The killer feature. Think base plan + API overage charges, or a seat license + storage usage. Most modern SaaS needs this.
Proration Discounts
ReadyCompare itemized vs included proration modes.
Controls how mid-cycle upgrades appear on invoices. Itemized mode shows discount line items separately for full transparency.
Swap / Upgrade / Downgrade
ReadyStarter to Pro to Enterprise and back, all in flexible mode.
Proves billing mode survives plan changes. Users upgrade/downgrade freely and flexible mode stays active throughout.
Global Default Billing Mode
ReadyCashier::defaultBillingMode('flexible') in action.
One line in your AppServiceProvider and every new subscription uses flexible billing automatically. No code changes elsewhere.
Cancel and Resume
ReadyCancel with grace period, resume, verify billing mode preserved.
Grace periods work exactly the same in flexible mode. Resume preserves the billing mode so nothing breaks.
Subscription Schedules & Quotes
Multi-Phase Schedule
ReadyCreate 2-phase schedule (Starter to Pro), then release.
Pre-plan subscription transitions. Useful for trial-to-paid, annual discount periods, or staged enterprise onboarding.
Quote Lifecycle
ReadyCreate, finalize, accept a quote — subscription created automatically.
For B2B sales workflows. Generate a formal quote, let the customer review it, and when they accept it auto-creates the subscription.
Schedule from Subscription
ReadyConvert running flexible sub into a schedule (billing mode inherited).
Convert a running subscription into a managed schedule. Useful when a customer commits to a plan change at their next billing cycle.
Usage Billing, Credits & Pricing
Billing Credits
ReadyAdd $100 credit, calculate against $150 usage, deduct $30.
Issue promotional credits, handle refunds as balance adjustments, or pre-pay for usage. Works with any subscription model.
Metered Usage Reporting
ReadyCreate meter, report 350 usage events, track estimated charges.
Report consumption events to Stripe in real-time. Stripe aggregates them and includes the charges on the next invoice automatically.
Usage Thresholds
ReadyDB only Set threshold, check at 50/100/150%, track overage.
Monitor consumption against limits. Useful for alerting customers approaching their plan limits or calculating overage charges.
Rate Card Pricing
ReadyLocal only Graduated tiered, volume, package, and flat rate calculations.
Model your pricing locally for display, comparison, or cost estimation without making Stripe API calls. Supports all common pricing models.
Migration (One-Way)
Classic to Flexible Migration
ReadyOne-way Start classic, migrate via /migrate, swap price, cancel.
This is a one-way operation — once migrated, a subscription cannot go back to classic mode. Use this when you are ready to commit. Stripe provides a dedicated /migrate endpoint so you can upgrade subscriptions individually.
View the PR · Based on PR #1772 by @Diddyy