Skip to content
Membership capability

Plan changes and pro-rata: upgrades priced fairly, automatically

Updated 4 min read

Plan changes in the Membership accelerator flow through the same billing orchestration as signup, freezes, and cancellations. Upgrades generate an immediate pro-rata charge (price difference, scaled by days remaining in the period) from shared calculation logic; downgrades change the fee going forward. Changes can be scheduled with an effective-from date, and billing picks them up only once due.

What does the capability do?

It makes moving between plans a routine, correctly-priced event instead of a manual adjustment with a calculator.

  • One calculation, every trigger. The pro-rata logic is shared code inside the billing layer: the price difference multiplied by days remaining in the period over days in the month. Whether the change comes from the admin, the member, or an API integration, the charge is identical.
  • Upgrades charge, downgrades do not. An upgrade produces an immediate pro-rata charge for the richer plan’s remainder of the period. A downgrade simply takes the lower fee forward, avoiding the goodwill-burning micro-refunds that mid-period downgrade charges create.
  • Scheduled changes. A member-level change can carry an effective-from date. Billing reads the scheduled values only once the date arrives, the same substitution mechanism that powers scheduled price changes at package level.
  • The same orchestration as every lifecycle event. Plan changes run through the account-update strategy layer shared with signup, freezes, and cancellations, committing atomically so a failed change leaves nothing half-applied.

Why shared logic is the headline

Pro-rata bugs are rarely wrong formulas; they are the same formula implemented three times. When the admin flow, the member flow, and the overnight billing job each carry their own arithmetic, they drift, and the drift surfaces as a member disputing a charge that staff cannot reproduce. Centralising the calculation in one billing path, used by every lifecycle event, removes the drift by construction. It is the same design decision behind the platform’s freeze handling, and it is why the Billing Engine can treat plan changes as ordinary events rather than special cases.

Why it matters

Plan changes are a growth lever: members who can move up a tier in one click do, and members who can step down instead of cancelling stay. Both only work commercially when the pricing at the boundary is trustworthy. Pro-rata from shared logic, scheduled changes with clean effective dates, and atomic commits make the boundary boring, which is exactly what a member expects it to be.

Frequently asked questions

How is a mid-month upgrade charged?
The pro-rata adjustment is the price difference multiplied by the days remaining in the period, divided by the days in the month. The calculation lives in shared billing logic, so an upgrade triggered by staff and one triggered by the member produce identical charges.
Do downgrades generate a mid-period charge?
No. A downgrade changes the fee going forward; there is no pro-rata charge for moving to a cheaper plan mid-period. Upgrades carry an immediate pro-rata charge for the remainder of the period.
Can a plan change be scheduled for a future date?
Yes. A scheduled member change records the new package, item, and amount with an effective-from date. Billing substitutes the new values only once the date is reached, so the change is visible in advance without rewriting current billing.
See it live

See this working in a demo

Book a consultation and we will demonstrate this capability on the Membership accelerator, against your own scenarios.

Book a demo