All packsSaaS Billing + Tax CoreSolve
stripe customer portal subscription update bypass proration
The customer portal's own defaults bypass your proration rules
If Stripe's customer portal is left free to change plans, its default proration bypasses D10/D11's carefully decided rules entirely. The pack disables it (D16).
What goes wrong
Stripe's hosted customer portal can let customers change their own plan -- convenient, except that path uses Stripe's own default proration behavior, not whatever asymmetric upgrade/downgrade rules the app carefully built (D10, D11). A customer using the portal to change plans gets billed differently than one using the app's own checkout flow, for the same action.
Why agents get it wrong
Enabling subscription_update in the portal configuration looks like a feature toggle -- "let customers self-serve plan changes" -- rather than a decision that routes billing-critical logic around every proration and entitlement rule the rest of the app enforces. Nothing in the portal configuration API warns that turning this on creates a second, inconsistent path to the same outcome.
What SaaS Billing + Tax Core pre-decides
D16 explicitly disables subscription_update in the portal configuration, while leaving invoice_history, payment_method_update, and subscription_cancel (at period end, no mid-cycle proration) enabled. Plan and seat changes are only possible through the app's own API routes, where D10/D11's rules actually run -- the portal is scoped to what it can safely self-serve.
Source: ARCHITECTURE.md D16