## TL;DR

When you change a Stripe subscription's seat quantity mid-cycle, Stripe prorates: added seats bill for the remaining days, removed seats credit for the unused days, each as its own invoice line. The invoice shows the old quantity reversed and the new quantity charged, which reads as confusing double lines. Preview with the upcoming-invoice endpoint before committing the change so you can quote the exact amount. For high-churn seat counts, consider disabling proration and billing the delta on the next cycle to keep invoices readable.

## The query

```text
Stripe per-seat quantity updates mid-cycle: proration math explained
```

## Use this when

- Seat changes producing confusing proration lines
- Quoting the cost of adding seats mid-cycle
- Deciding proration behavior for seat updates

## Not for

- Usage-based per-unit billing (use meters, not quantities)
- Annual seat true-ups (different commercial model)

## Steps

1. Preview the quantity change with the upcoming-invoice endpoint.
   Expected output: You see the exact proration lines before committing.
2. Apply the quantity update with an explicit proration_behavior.
   Expected output: The money behavior is chosen, not defaulted.
3. Read the resulting invoice: old quantity credit plus new quantity charge.
   Expected output: Each line maps to a leg of the change.
4. Quote the net to the customer from the preview, not from mental math.
   Expected output: The quote matches the invoice.
5. For chatty seat counts, evaluate proration none with next-cycle billing.
   Expected output: Invoices stay readable at the cost of delayed billing.

## Variant phrasings

### Stripe per seat proration mid cycle

### seat quantity change proration math Stripe

### proration_behavior seat update Stripe

## Root cause

Proration exists because the customer bought a different quantity than they will use for part of the period; Stripe settles the difference as credit and charge lines. The invoice looks busy because it is telling the truth about two partial quantities, which is why previewing beats explaining after the fact.

## Edge cases

- Removing all seats usually cancels the subscription; confirm that edge in your flow
- Proration lines inherit the subscription's tax and discount treatment; verify on the preview

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_EhBeMrgA3ILVxmKyNSSH7Q
