How cascade_updates interacts with plan overrides
Last updated: May 5, 2026
How it works
When you update a plan with cascade_updates: true, Lago propagates the changes to subscriptions on that plan. For charges, Lago uses a property-comparison mechanism to protect customizations: it compares each overridden subscription's charge properties against the old values of the parent plan's charge. If the properties differ, the cascade skips that charge (it was customized). If they match, the cascade applies (no customization was set for that charge).
This means protection is per charge, not per subscription. A subscription with a plan override that only customized the subscription fee but left charge properties at the default will still have its charge properties cascaded.
If your overridden charge is being overwritten
Lago's team tested this flow via both the UI and the API and could not reproduce the behavior. If you're seeing overrides being overwritten, check whether the override was applied with a charge price genuinely different from the parent plan's original value. If the custom price happens to match the parent's old price, Lago treats it as non-overridden.
Workaround
If you need to cascade plan updates while preserving per-subscription charge customizations, the safest approach is to update the plan without cascade_updates: true, then update each non-overridden subscription individually via the API.
This article reflects guidance drawn from customer case resolutions. It is not officially supported documentation and may not apply to all situations.