Customers change plans mid-period: more seats, higher tier, product removed. Sonic computes only the difference for the days (calendar units) that actually changed — then either edits an open draft or issues an adjustment invoice / credit note on sent documents.
This is billing math operators defend in email threads. Getting it wrong erodes trust faster than a late invoice.
A change is a proposal until someone approves it
A mid-period change doesn't touch a customer's invoice the moment someone types it in. It's proposed first — what the schedule should look like from the change date forward — then reviewed as a before-and-after comparison scoped to just the affected window, and only becomes real, customer-facing documents once someone approves it. Right up until that approval, the change can be discarded with no trace, which matters because "let me see what this would cost before I commit to it" is a completely normal question for an AE to ask on a call.
Draft vs sent — the fork
| Invoice state | Upgrade / add | Downgrade / remove |
|---|---|---|
| Draft / in-progress | Edit draft directly | Edit draft directly |
| Sent or paid | Adjustment invoice (charge extra) | Credit note (give back) |
Sent invoices never gain lines. Mid-period changes after send always produce a new document.
Calendar units, not days ÷ period days
Quoted ₹1,000/month on a quarterly invoice clipped from 1 Jan–31 Mar:
- Change effective 15 Jan → walk calendar months of
unit_price_basis: partial January + full February + full March — not3000 × 75/90.
Unused-time credits on downgrade use the same walk (multiply before divide so clean thirds stay exact).
| Wrong shortcut | Right walk |
|---|---|
| 3000 × days/90 | Jan 17/31×1000 + Feb 1000 + Mar 1000 |
| March credit 31/90 of quarter | March credits full ₹1000 |
Seat and fixed money use this rule. Usage amounts are measured, not prorated by calendar stub windows the same way.
Activation stub invoices (schedule activated mid-cycle) pass proration factor on seat lines via metadata — independent of mid-period seat event proration policies like Added seats only.
Reading the review screen
| Field | Meaning |
|---|---|
| Old → new amount | Prorated delta for changed window only |
| Action | Edit draft / adjustment / credit note |
| Status transition | What happens to target invoice |
Numbers rarely match headline MRR × fraction — that is correct when calendar units apply.
Downgrades and prepaid
Downgrades on prepaid products interact with credit balance separately. Check prepaid views after apply.
Backdated upgrades into closed periods may recognise revenue immediately — know before month-end close.
Forward-only honesty
Pricing math improvements apply to open drafts on regeneration. Sent invoices and frozen rev-rec ledgers do not restate. That is intentional immutability, not a missing backfill button.
Watch out for
- Read review before approve — prorated totals confuse approvers who only know list price.
- Do not expect sent invoice edits — credit note or adjustment instead.
- Seat event proration ≠ schedule stub proration — different knobs.
- Calendar unit walk applies to credits too — downgrade is not a cheaper formula.
- ERP "fix" after the fact — fix schedule change upstream, not shadow spreadsheet.