Added a subscription analytics section to Stripe → Dashboard (shown once at least one subscription
exists): monthly churn rate, dunning recovery rate (30d), a 6-month MRR/new-subscriptions trend chart, a
6-month retention-by-cohort table, an MRR-by-plan breakdown, and a CSV export of all subscriptions. See
Developer API for the documented limitations (no dedicated
cancellation-timestamp column; dateUpdated is used as a proxy).
Restructured Stripe → Settings from a single page into five sections -- General, Credentials,
Pricing, Restrictions, Test cards -- matching the shared yStore payment-gateway settings layout. Test
cards is now its own section instead of a block on the main page.
Migrated Settings from BasePluginSettingsModel to BasePaymentSettingsModel, adding Price, Free
Payment Threshold, Tax Rate, Cash rounding, and order-total/cart-weight/store restrictions -- the same
pricing and restriction fields every other yStore payment gateway exposes. See
Settings and Settings.
Restored the Stripe → Payment History pagination controls (Previous/Next, page count) and removed a
dead order link in favor of the existing order URL/title fields.
yui/craft-plugin moved from a dev-only dependency to a runtime require in composer.json.
Added a PHPUnit smoke/unit test harness (composer test, composer test:unit, composer test:coverage).
Added a Stripe → Dashboard with revenue KPIs, live Stripe balance, MRR/subscription counts, active
dispute count, a 30-day revenue trend chart, and recent transactions/webhook activity.
Added a webhook handler (stripe/webhook) that verifies and deduplicates Stripe events, and reconciles
order status, subscriptions, and disputes automatically instead of relying only on the customer's
checkout-return redirect.
Added subscription management: a Stripe → Subscriptions page, cancel/pause/resume actions, automatic
sync from webhook events, and a yui-stripe/recurring/sync console command.
Added a Stripe → Disputes page for chargebacks, with evidence submission (draft or direct-to-Stripe).
Added refund creation (full or partial, with reason) from the order edit page, recorded in yStore's
shared refunds table.
Added the Stripe Customer Portal: an order-edit Manage in Stripe button and a frontend URL endpoint
for customers to manage invoices, payment methods, and (if enabled) subscriptions.
Added Buy Now, Pay Later support (Klarna, Afterpay/Clearpay) alongside card payments at checkout.
Rewrote the Stripe → Payment History page onto a searchable, sortable table, with card
brand/last 4/3D Secure enrichment from the Stripe API.
Added three MCP tools (stripe_check_payment, stripe_list_transactions, stripe_summary) so AI agents
and automation can inspect payment status, list transactions, and pull a live account summary when
yui/craft-mcp is installed.
Fixed the CP dashboard to gate on the plugin's own permission rather than a shared one.