- NEW: API – Subscriptions, renewals, and subscription notes are now available to AI assistants through the WordPress Abilities API.
- NEW: Subscriptions – Customers whose update link no longer works can now request a new one by email from the update page.
- Security: Improved validation of recurring product prices and billing terms at checkout.
- Security: Strengthened verification of PayPal Standard and 2Checkout subscription notifications.
- Security: Content restricted to active subscribers now checks subscription status more strictly.
- Security: Improved sanitization of subscription notes.
- Security: The subscriptions API now requires permission to view subscriptions before returning subscription details.
- Security: Strengthened verification before a PayPal Express order is marked complete.
- Security: Strengthened ownership checks when a customer updates a subscription’s payment method.
- Security: The PayPal Express confirmation page now only shows subscription details to the customer they belong to.
- Admin: The hidden upgrades page no longer appears in the WordPress Command Palette.
- Blocks: Header and footer blocks on the payment method update page now work correctly with block themes.
- Compatibility – Multi-Currency: Stripe subscriptions now renew in the currency of the purchase instead of the store’s base currency.
- Compatibility – Software Licensing: Renewing a license manually through PayPal now cancels the old subscription, so customers are no longer billed twice.
- PayPal: Canceled subscriptions that use a saved PayPal payment method can now be reactivated.
- PayPal: Renewals with tax are no longer overcharged by the tax amount.
- Privacy: Erase Personal Data can now anonymize subscription renewal orders.
- Renewals: A failed renewal payment no longer extends a subscription or its license.
- Renewals: Renewals processed on the last day of a month now get the correct expiration date.
- Stripe: Subscriptions are now created when an order that was placed on hold is completed.
- Stripe: Purchases completed after the customer leaves checkout, including live Amazon Pay purchases, now create their subscriptions.
- Stripe: Subscriptions canceled after failed payments can be reactivated again, and payment is collected when they are.
- Stripe: The Subscription Sync tool now updates expiration dates, so reactivated subscriptions stay active.
- Stripe: Subscriptions recovered with the missing subscription tool now store the correct recurring tax.
- Stripe: Canceling a subscription that is unpaid in Stripe now cancels it in Stripe as well.
- Stripe: Renewal payments are now recorded even when a subscription’s saved Stripe ID is out of date.
- Stripe: The Create Subscription recovery tool on the order screen finds matching Stripe subscriptions again.
- Stripe: A new payment method now gets the customer’s full billing address, so renewals in regions that require one are no longer declined.
- Taxes: Renewal orders now use the current tax rate instead of one that has been deactivated.
- Dev: The legacy Stripe subscription creation callbacks are no longer registered in Payment Elements mode.
- Dev: Added a lock utility to prevent the same record from being processed twice at once.
- Dev: Added the missing
parent_payment_id_product_idindex to the subscriptions table for stores that upgraded from 2.12.2 or earlier, which fixes slow admin page loads. - Dev: The subscriptions query now validates its own sort direction.
- Dev: Stripe subscription reactivation now runs in a dedicated service.
- Dev: Blocks now use the plugin’s shared build tooling, and dependencies have been updated.

