Skip to content

Billing proration, explained

Why day-ratio proration disagrees with the quoted price, and how calendar-unit proration handles upgrades, downgrades, and mid-cycle starts correctly.

Sonic AI team

Finance operations

16 Sept 20264 min read

BillingInvoices, schedules, proration, and getting the document right before speed.

Proration means charging or crediting only the part of a billing period a customer actually had something — a partial month at the start of a subscription, a mid-cycle upgrade, a downgrade with unused time remaining. It sounds like arithmetic. It's actually one of the most common places a billing system quietly disagrees with the number a customer was quoted.

The bug hiding in plain sight: day-ratio proration

The most common way to compute proration is days used / days in period × monthly rate. It looks reasonable and is wrong more often than it's right, for one specific reason: months don't have the same number of days, but a "monthly rate" is quoted as a flat monthly amount, not a daily rate that happens to vary by which month it lands in.

A customer quoted ₹1,000/month should pay ₹1,000 for any full month, regardless of whether that month has 28, 30, or 31 days. Day-ratio proration doesn't guarantee that — a 31-day month prorates a partial period slightly differently than a 28-day month would, for the exact same fraction of "used" time, purely because the denominator changed. Multiply that across every partial month, every upgrade, and every subscription that starts mid-cycle, and the discrepancies compound into a number that never quite matches what finance quoted.

The fix: walk calendar units, don't divide by period length

The more correct approach — calendar-unit proration — prices a partial window by walking whole units of the quoted price's own basis (days, weeks, or months, depending on what the price is actually quoted in) and only prorating the fractional unit at the edge. A quarterly invoice that gets clipped to start mid-month, for a monthly-quoted price, should charge full months for the months fully covered and prorate only the partial month at the boundary — not divide the whole quarter's rate by the quarter's total days and multiply by days used.

This matters most in three situations:

Situation What should happen
Mid-cycle activation The first, partial period charges a fraction of one calendar unit — not a fraction of the whole invoice window
Upgrade / downgrade mid-period The old price covers the time before the change; the new price covers the time after, each walking calendar units of its own basis
Cancellation with unused time Any credit for unused time should be computed the same way the original charge was — consistently, not with a different formula for refunds than for charges

Full periods stay simple — the edges are where it breaks

For a subscription that starts exactly on the billing day and runs full cycles, none of this matters — a full month is a full month, charged at the full rate, no proration needed. The complexity only shows up at the edges: the first partial period, a change mid-cycle, or a cancellation before a period ends. That's exactly why proration bugs are so easy to miss in testing — the common case works fine, and the edge cases are the ones real customers actually hit constantly, because contracts rarely start on the first of a month by coincidence.

What to check before trusting a billing system's proration

  • Does a mid-cycle activation charge match what you'd compute by hand, walking calendar units — not a day-ratio of the full period?
  • Does an upgrade or downgrade split cleanly at the change date, each segment priced on its own basis?
  • Is the credit formula for cancellations consistent with the charge formula, or does it use different math?
  • Does proration behave correctly for prices quoted in different units — daily, weekly, monthly, quarterly — or does everything get forced through one formula regardless of the quoted basis?
  • Can you actually see the calculation on the invoice, or does the prorated line just show a final number with no visible breakdown?

Sonic AI prorates fixed fees and seat money by walking calendar units of the quoted price's own basis — never a day-ratio of an arbitrary period length — applied consistently to activation stubs, upgrades, downgrades, and credits. See how subscription billing works, or the deeper mechanics on upgrade and downgrade proration.

Related terms: proration, calendar-unit proration, billing schedule, invoice period.

See it on the platform

Everything above describes how Sonic actually runs it — the product pages show the screens.

Related questions

Still have questions?

Will you rewrite an invoice after it has been sent?

No. Sent, paid, void, and final invoices are not rewritten. Corrections are credit notes or a new invoice alongside the original. Drafts and in-progress invoices can still accept lines. Freight has no credit notes — correct the file, or void.

See the full FAQ →

Next

See it on your contracts

A walkthrough on the agreements and files you actually bill from — not a slide deck.