v2.0.0 — Payment Bridges
Native off-session renewals on Stripe, PayPal Payments and WooPayments. Redsys bundled in the plugin core. The plugin no longer depends on the WooCommerce Subscriptions extension. PayPal Standard is no longer supported.
What's new — Payment Bridges architecture
Until 1.0.x, recurring renewals on Stripe / PayPal / WooPayments needed the paid WooCommerce Subscriptions extension. 2.0.0 ships a bridges layer that consumes the public APIs of those gateways' official free plugins and drives renewals off-session directly — no Subscriptions extension required.
Stripe bridge
- Off-session
PaymentIntentrenewals on the customer's saved card. - SCA detection: when a renewal requires authentication, the order is marked failed with
authentication_requiredand the retry scheduler reschedules according toaswc_payment_retry_intervals. - Currency-mismatch guard: refuses to charge a renewal in a different currency than the original payment.
- Webhook handler for
charge.refunded,payment_intent.payment_failed(idempotent),payment_method.detachedandcharge.dispute.created. - Requires WooCommerce Stripe Payment Gateway 7.0+ (gateway id
stripe, plusstripe_sepa).
PayPal Payments bridge
- Vaulted-token MIT renewals via Orders v2 (
PaymentSource('paypal', { vault_id, stored_credentials })). - Normalized failure codes for the full PayPal error matrix (
AGREEMENT_ALREADY_CANCELLED,INSTRUMENT_DECLINED,INSUFFICIENT_FUNDS,PAYER_ACTION_REQUIRED,PAYER_CANNOT_PAY,TRANSACTION_REFUSED). - On
AGREEMENT_ALREADY_CANCELLEDthe saved payment method is flagged invalid (aswc_subscription_payment_method_invalid('agreement_cancelled')) and the subscription moves to on-hold so the customer can re-authorize. - Webhook handler for
PAYMENT.CAPTURE.REFUNDED,PAYMENT.CAPTURE.DENIED(idempotent),CUSTOMER.DISPUTE.CREATEDandVAULT.PAYMENT-TOKEN.DELETED. - Requires WooCommerce PayPal Payments 2.0+ (gateway id
ppcp-gateway).
WooPayments bridge
- Off-session renewals against the customer's saved WooPayments token.
- The plugin ensures the payment method is saved at checkout so renewals have a token to charge — WooPayments only saves it automatically when WooCommerce Subscriptions is active.
- Requires WooPayments 7.0+ (gateway id
woocommerce_payments).
Redsys — bundled
Redsys ships inside this plugin. It loads automatically unless you run one of the standalone Redsys plugins (the free WooCommerce Redsys Gateway Light or the premium WooCommerce Redsys Gateway), in which case the bundled version steps aside.
Added across the board
- 3D Secure (SCA) handling on renewals with clear failure codes and customer-recovery hooks.
- Automatic retry of failed renewals via the retry scheduler.
- Cancelled PayPal agreement detection.
- Currency safety check on renewals.
- Change payment method between gateways from My Account — the next renewal uses the new method automatically.
- Dispute and chargeback detection on Stripe and PayPal — disputed orders move to on-hold.
- Payment method removal detection on Stripe — every subscription using a detached card or SEPA token is flagged.
- New admin setting Cancel subscription on full refund of a renewal order in
WooCommerce → Settings → Advanced Subscriptions → Advanced Settings. Off by default. - Refunds on the first-payment (parent) order always cancel the subscription, independently of the toggle above.
- Automatic notes on the subscription whenever a renewal is refunded (full or partial).
- Payment gateway compatibility panel in the plugin settings screen.
Changed
aswc_pre_cancel_subscriptionis now also fired from the bridge-driven refund cancellation path, in addition to the existing customer-driven path.aswc_cancel_subscription_on_full_refundderives its default value from the refunded order type: parents default totrue(always cancel), renewals default to the newaswc_cancel_on_full_refundoption (default'no'). Both refund paths converge on the same behavior driven by the new admin setting.
Removed (breaking)
- PayPal Standard support and all
aswc_enable_paypal_standard/aswc_skip_gateway_chargehooks. - Legacy
wcs_*/WC_Subscriptions_*references in runtime code (full audit). The plugin no longer depends on the WooCommerce Subscriptions extension surface.
New developer hooks
The Payment Bridges layer introduces ~10 new actions and filters. The full reference lives in docs/hooks-reference.md in the plugin repo.
aswc_payment_method_changedaswc_subscription_payment_failedaswc_subscription_payment_method_invalidaswc_gateway_supports_subscriptionsaswc_stripe_bridge_renewal_intent_argsaswc_paypal_payments_bridge_renewal_argsaswc_enable_stripe_bridgeaswc_enable_paypal_payments_bridgeaswc_enable_woopayments_bridgeaswc_bridge_cancel_subscription_on_full_refund
Compatibility
- WooCommerce Stripe Payment Gateway 7.0 or higher (for the Stripe bridge).
- WooCommerce PayPal Payments 2.0 or higher (for the PayPal bridge).
- WooPayments 7.0 or higher (for the WooPayments bridge).
- WooCommerce High-Performance Order Storage (HPOS) — fully compatible.
- The plugin no longer depends on the WooCommerce Subscriptions extension.
Upgrade path
Update the plugin from WordPress → Plugins or via WP-CLI. The bridges auto-detect the supported gateway plugins at plugins_loaded priority 20 — no manual configuration needed once their official plugins are installed and connected.
// Standard upgrade
$ wp plugin update advanced-subscriptions-for-woocommerce
Success: Updated 1 of 1 plugins.
Who's affected
- Affected — action required: stores currently using PayPal Standard for subscription payments. Migrate to WooCommerce PayPal Payments first.
- Affected — silent improvement: stores on Stripe / WooPayments — recurring now runs natively without the Subscriptions extension.
- Not affected: stores on Redsys only.