Most subscription systems become hard to reason about the moment a customer changes something.
Not when they subscribe.
When they upgrade in the middle of a cycle. When they downgrade after a budget review. When they move from monthly to yearly. When you deprecate a plan. When you improve a feature for everyone. When you reduce limits for new customers but need existing accounts to keep working.
This is where "flexible billing" often turns into policy sprawl.
At Commet, we wanted a simpler rule set:
Changes that benefit the customer happen immediately. Changes that reduce value wait until renewal.
That rule is what keeps subscription changes understandable for both the team operating billing and the customer experiencing it.
Why billing changes get messy
Most teams are not actually confused about pricing.
They are confused about timing.
Questions like these are what create support tickets:
- Do I get charged now or later?
- Do I lose access immediately?
- If I already paid, do I get a refund?
- What happens to seats and limits?
- Can I switch by myself in the portal?
If the rules are inconsistent, every plan change becomes a custom explanation.
That does not scale.
The Commet rule set
Commet handles the main subscription changes with a consistent commercial logic.
| Change | What happens |
|---|---|
| Upgrade to a more expensive plan | Immediate, with proration |
| Downgrade to a cheaper plan | Takes effect at renewal |
| Monthly -> Yearly | Immediate |
| Yearly -> Monthly | Takes effect at renewal |
| Free -> Paid | Immediate, full new charge |
This is not just a technical implementation detail. It is a policy choice designed to keep billing legible.
Upgrades happen now, and proration keeps the math fair
If a customer upgrades mid-cycle, they should get the new plan immediately.
That is the whole point of upgrading.
Commet credits the unused portion of the current plan and charges the prorated cost of the new plan for the remaining time in the cycle.
Starter: $29/month
Pro: $99/month
Upgrade on day 15 of a 30-day cycle
Credit for unused Starter time: $14.50
Charge for remaining Pro time: $49.50
Pay today: $35.00That makes the upgrade feel immediate without forcing the customer to pay twice for the same days.
Downgrades wait until renewal
Downgrades are different.
If the customer already paid for the current period, the cleanest rule is to let them keep what they already paid for and switch later.
So in Commet:
- the current plan stays active until renewal
- the lower plan takes effect on the next cycle
- there is no mid-cycle refund logic to untangle
This is easier for everyone involved.
The customer knows they keep access through the time they already bought. Your team does not need to explain partial reversals or access reductions in the middle of a paid cycle.
Interval changes follow the same logic
Billing interval changes are treated as commercial upgrades or downgrades, not as a separate special case.
That means:
- Monthly -> Yearly is immediate
- Yearly -> Monthly waits until renewal
Again, the rule is about whether the customer is moving into a higher-commitment plan now or stepping down into a lower one later.
Consistency matters more than novelty here.
Free to paid is immediate
Free plans do not create billable credit.
So when a customer moves from free to paid, there is nothing to prorate. They simply start the paid subscription and pay the full price of that plan.
That keeps the flow straightforward:
- free plan ends
- paid plan starts
- checkout happens now
Plan changes are not only about price
Subscription-change logic also matters when the plan itself changes over time.
This is where a lot of systems become opaque.
Commet applies the same benefit-versus-harm principle to feature changes:
- if you add value, existing customers get it immediately
- if you reduce value, the reduction applies at renewal
Examples:
- You raise an API limit from 5,000 to 10,000: existing customers get it now
- You lower that limit from 10,000 to 5,000: existing customers keep the old limit until renewal
That protects customer trust while still letting you evolve your plans.

Self-serve changes require structure
A self-serve plan switch should not mean unlimited plan chaos.
In Commet, customers can only upgrade or downgrade through the portal when plans are organized into a Plan Group.
That matters because the portal needs a defined path:
- which plans are in the same commercial family
- what order they sit in
- which moves count as upgrades or downgrades
Without that structure, plan changes become manual. With it, self-serve changes stay safe and predictable.
Deprecating and deleting plans should not punish current customers
Eventually every pricing system changes.
Some plans need to disappear from the pricing page. Some need to be retired entirely.
Commet handles those cases explicitly:
- Deprecating a plan removes it from sale, but existing customers stay on it
- Deleting a plan requires a clear outcome for existing customers at renewal
That keeps old subscriptions stable without freezing your pricing forever.
The goal is not more flexibility. It is fewer surprises.
The best subscription-change system is not the one with the most branches.
It is the one customers can understand without contacting support.
That is why Commet keeps the rules narrow:
- immediate when the customer is moving up
- renewal when they are moving down
- fair proration when needed
- explicit structure for self-serve changes
That is what subscription logic should feel like: not magical, just coherent.
Read the Upgrade and Downgrade Plans documentation, review Plan Changes, learn how proration works, or try Commet in sandbox.