Billing cycle and prorations explained

Last updated: May 19, 2026

Billing cycle and prorations explained

Your billing cycle repeats every month (or year) starting on the day you subscribed — that's the anchor date. Any mid-cycle change (plan upgrade, extra seats, downgrade after cooldown) triggers a proration: Stripe credits the unused portion of the old setup and charges the new setup prorated for the remaining days.

Who is this for

Owners, admins, and finance who want to understand why an invoice has multiple line items, or who need to predict the cost of a mid-cycle change.

The billing cycle

When you start a subscription on, say, the 15th of March:

  • Anchor date: 15th

  • Monthly plan: every 15th of the month, Stripe charges the full plan fee

  • Annual plan: every March 15th, Stripe charges the annual fee

The anchor date stays constant even if you change plans mid-cycle — only the amount charged changes.

If the anchor day doesn't exist in a given month (e.g. 31st in February), Stripe shifts to the last day of that month.

What triggers a proration

Change

Prorated?

Effect

Upgrade plan (Starter → Pro)

Yes

Credit unused old plan + charge new plan prorated for remaining days

Downgrade plan (Pro → Starter, after cooldown)

Yes

Credit unused old plan + charge new plan prorated

Add extra seats

Yes

Charge extra-seat fee prorated for remaining days

Remove extra seats

Yes

Credit unused extra-seat fee for remaining days

Switch monthly annual (same plan)

No

Takes effect at next anchor date — no prorations

Update payment method

No

No charge

Update billing address

No

Applies to next invoice

Cancel

No

No prorated refund — you keep access until period end

During the trial, all changes use Stripe's proration_behavior: 'none' — no prorations apply, trial credits are preserved.

The proration math

Stripe uses this formula:

proration = (new_unit_price - old_unit_price) × days_remaining / cycle_length

Example 1: Mid-cycle upgrade

  • You're on Starter at $X/month, subscribed on the 1st

  • On the 15th (day 15 of 30), you upgrade to Pro at $3X/month

  • Stripe credits the unused 15 days of Starter: $X × 15/30 = $0.5X

  • Stripe charges 15 days of Pro: $3X × 15/30 = $1.5X

  • Net immediate charge: $1.5X − $0.5X = $X

  • Next anchor date: full Pro fee = $3X

Example 2: Adding 2 extra seats mid-cycle

  • You're on day 20 of a 30-day cycle (10 days left)

  • Extra seat price: $19/seat/month

  • Charge: 2 seats × $19 × 10/30 = ~$12.67 today

  • Next anchor: full plan + (2 × $19) = monthly fee + $38 extra

Example 3: Annual plan upgrade mid-year

  • You're on annual Starter, anchor date Jan 1, today is July 1 (~183 days remaining of 365)

  • Upgrade to annual Pro

  • Credit Starter unused: starter_annual × 183/365

  • Charge Pro prorated: pro_annual × 183/365

  • Net charge today = difference (positive)

  • Anchor stays Jan 1

How prorations show on the invoice

Stripe generates an immediate invoice for mid-cycle changes (sometimes called a "true-up" invoice). It contains multiple line items:

Plan: Starter (unused — 15 days)         −$X.50
Plan: Pro (new, 15 days)                 +$X.50
                                          ──────
Total                                     +$X.00

The total is what you're actually charged (or credited if negative). Read top-to-bottom for the proration story.

Reading your next invoice

At the next anchor date, Stripe generates a regular invoice with:

  • The full plan fee for the cycle

  • Any add-ons (extra seats × number × price)

  • Taxes / VAT per billing address

  • Less any account credit balance from previous over-credits

Account credit balance

If a prorated change produces a credit larger than the charge, the difference becomes an account credit balance on Stripe. Future invoices automatically apply it first before charging your card. You can see your balance in the Stripe Customer Portal under Account credit.

Cycle reset events

These do NOT reset your billing cycle:

  • Plan changes

  • Add/remove seats

  • Update payment method or billing address

  • Pause/resume (Wevion doesn't currently expose pause; cancellation is the only "stop")

These DO create a new cycle:

  • Resubscribing after a full cancel + read-only window (new anchor = resubscribe date)

  • Switching from monthly to annual or vice versa (next anchor = first cycle of new interval)

Common questions

  • Why did I get charged $X today, the invoice says $Y for the cycle? Mid-cycle change. The cycle fee shows the "from now on" amount; you were charged the prorated delta today.

  • Why is the proration credit smaller than expected? Stripe rounds at the cent level. For small mid-cycle changes the rounding can feel disproportionate. Math holds in aggregate.

  • Can I move my anchor date? Not directly. To shift, cancel and resubscribe on the desired day (you'll lose prepaid days from current cycle).

  • Annual changes mid-year prorate over 365 days? Yes — same formula, cycle_length = 365.

  • Do prorations apply to extra-seat removals? Yes — Stripe credits unused seat fee, your next invoice is smaller or you get an account credit.

Related