Proration
Charging only for the slice of the billing period actually used, so a mid-cycle plan change costs the difference, not a full month.
See it
What it is
Proration prices a mid-cycle change by the fraction of the period that is left. Under the hood it is two line items, not one: a credit for the unused time on the old plan and a charge for the remaining time on the new one, both computed from seconds or days left before the next renewal. Upgrade from 10 to 30 on day 15 of a 30 day month and you owe roughly 10, not 30 and not 20.
You choose what happens to that amount: invoice it immediately (normal for upgrades, since the money and the value arrive together), park it as account credit applied at the next renewal (normal for downgrades and seat reductions), or turn proration off entirely so changes take effect at the next cycle. Billing platforms expose a preview or upcoming-invoice call, and you should always show that exact number in the UI before the customer confirms.
Gotchas: prorated invoices look bizarre to normal humans, full of negative line items and odd cents, so they generate support tickets unless you explain them in plain words next to the total. Downgrades can leave a credit balance that never gets spent, which customers read as money you owe them. And prorating an annual plan mid-term produces a single enormous charge that trips both fraud rules and the customer's patience.
Ask AI for it
Implement prorated plan changes in our subscription billing without doing the arithmetic ourselves. When a customer picks a new plan, pin a single proration_date timestamp, call the provider's invoice preview (upcoming invoice) API with the proposed items and that timestamp, and render its line items and totals verbatim in the confirmation dialog: the credit for unused time, the charge for the new plan, tax, discounts, amount due now, and the next invoice total. On confirm, submit the subscription update with the exact same proration_date and proration behavior so the invoice the customer gets matches the preview they saw, and never recompute totals locally from a time fraction, since our rounding will drift from theirs. Upgrades invoice immediately; downgrades and seat reductions use the credit-to-balance behavior applied at the next renewal. Keep the billing anchor unchanged in both directions, and add a one-sentence plain-language explanation next to the negative credit line.