Pricing and billing
Proration calculator
Work out what seats added or removed partway through a billing cycle are worth, to the cent, and check a vendor’s part-cycle line against it.
Free, no accountIn your browser
What one seat costs for one whole billing cycle.
Only the seats that moved, not the whole licence.
30 or 31 for a monthly cycle, 365 for an annual one.
Counted from the day the change took effect to the end of the cycle.
Result
Charge of $15.40 for 36.7% of the cycle
3 seats at $14.00 a cycle, with 11 of 30 days left to cover.
- Info
Charge of $15.40 for 3 seats added
$14.00 a seat ÷ 30 days × 11 days left × 3 seats is $15.40. That covers the rest of this cycle only; from the next one the seats are billed in full at $42.00 a cycle.
- Info
46.6667 cents a seat, a day
$14.00 ÷ 30 days is 46.6667 cents a day, which is not a whole cent. The amount above multiplies that unrounded rate out and rounds once, at the end. Rounding the daily rate to 47 cents first and then multiplying by 3 seats and 11 days gives $15.51 - out by $0.11 on this one change, and the gap grows with every seat.
The change
- Price per seat for the cycle
- $14.00
- Seats changing
- 3
- Days left of the cycle
- 11 of 30
- Share of the cycle
- 36.7%
- Charge
- $15.40
The same change, later in the cycle
| Days left | Charge |
|---|---|
| 30 | $42.00 |
| 23 | $32.20 |
| 15 | $21.00 |
| 8 | $11.20 |
| 1 | $1.40 |
The same seats and the same price, moved further down the cycle.
What our own billing does with this
A seat count moving mid-cycle is an event ResellerHQ already emits: licence.updated, which the webhooks guide lists as "The seat count changed". It sits beside licence.created when licences are bought, licence.renewed when the next month is charged, licence.renewal_failed when a month could not be paid for, and licence.cancelled when licences are cancelled.
The event is how your own system hears that the count moved. What the part-cycle difference is worth is the arithmetic above, applied to it: this page reads nothing from an account and posts nothing to one.
- This is simple daily proration: the cycle price split evenly across the days in the cycle, times the days that are left.
- A vendor that apportions by whole months, bills to the second, starts the clock on the next day rather than the day of the change, or issues a credit note instead of reducing the charge will arrive at a different figure from the same inputs.
- Nothing here knows about tax, a minimum term, an early cancellation fee or a committed seat floor, any of which can change what actually appears on the invoice.
- The days are the days you enter. No calendar is read, so a 28-day February or a cycle that starts on the 31st is only accounted for if you counted it.
What this is
This seat proration calculator answers one question: a customer added or dropped seats partway through a billing cycle, so what does the rest of this cycle cost? It is the daily rate times the days left times the seats that moved, rounded once at the end - which is the arithmetic a vendor invoice is doing, and the arithmetic worth checking it against when the line looks wrong.
Proration is the cycle price divided by the days in the cycle, multiplied by the days that are left. A seat that starts life on the eleventh day from the end of a thirty-day cycle is being sold eleven days of a thirty-day thing, so it costs eleven thirtieths of it. Seats going the other way produce the same figure as a credit.
The reason the number is worth a page of its own is reconciliation. A part-cycle line on a vendor invoice is the one line a reseller cannot sanity-check in their head, and it is the one most likely to be dated to the wrong day - which shows up as a share of the cycle that does not match the day the change actually happened.
Pricing what you resell: cost, markup and margin (/blog/pricing-what-you-resell-cost-markup-and-margin) covers why this sum matters for a reseller specifically: ResellerHQ’s own mailbox licence billing charges a full month for an added seat rather than prorating it, so a fair part-cycle figure for a customer is still something a reseller has to work out, which is what this page is for.
How to read the result
The share of the cycle is the figure to check first. It is the days left divided by the days in the cycle, and if it does not match the day you believe the change took effect, the disagreement with the invoice is about dates and not about money.
The table runs the same seats and the same price down the cycle, from a day-one change to a change with one day left. It is there for the question that comes next - "what if we wait until the renewal" - which usually has a bigger answer than people expect for a change made early in a cycle.
Common mistakes
What goes wrong most often, and how to tell.
- Rounding the daily rate to a whole cent before multiplyingA cycle price almost never divides into a whole number of cents a day. Rounding that rate first and then multiplying it by the seats and the days compounds the rounding once per seat per day, which is how a part-cycle line ends up tens of cents away from the vendor’s own figure on a change of any size.
- Counting the days from the wrong endThe input is the days remaining in the cycle, not the days elapsed and not the days since the order was raised. Entering the elapsed days inverts the answer: a change made near the end of a cycle comes out as nearly a full cycle’s charge instead of nearly nothing.
- Treating a credit as a refundSeats removed mid-cycle are usually credited against the next invoice rather than paid back, and some agreements will not reduce a committed count before the anniversary at all. Telling a customer money is coming back when it is a reduction on the next bill is a conversation worth avoiding.
- Assuming every vendor prorates by the dayDaily proration is the common case, not the only one: some vendors apportion by whole months, some bill the change from the start of the next cycle, and some charge a full cycle for any part of one. Check the figure here against the first invoice after a change and you will know which kind you are dealing with.
Questions
What people ask about this tool.
- Divide the full cycle price for one seat by the number of days in the cycle to get a daily rate, multiply that by the days left in the cycle, then multiply by the number of seats that changed. The rounding to a whole cent happens once, on the final figure.
- That depends on the vendor, and it is worth settling by comparing one real invoice against this page. Including it makes the charge one day larger; the difference is one daily rate per seat, which is small on one seat and visible across a few hundred.
- Because the cycle has already been invoiced, so the adjustment is applied against what you owe next rather than returned. Most vendors net it off the following invoice, and many will not reduce a committed seat count mid-term at all without a contract change.
- There are no days left for it to cover, so the part-cycle amount is zero and the full charge or credit starts with the next cycle. This page flags that case rather than quietly showing zero, because it looks like nothing happened when something did.
Use it from the API
The same check, as one request.