docs wip again

This commit is contained in:
Ayush Rodrigues
2026-03-11 11:35:01 +00:00
parent 2141729505
commit 73d3d23939
37 changed files with 3338 additions and 409 deletions

View File

@@ -0,0 +1,112 @@
---
title: Proration
description: Handle mid-cycle plan changes with prorated billing
---
Proration adjusts billing when a customer changes their subscription mid-cycle — whether upgrading to a higher plan, downgrading, or changing the quantity of a non-consumable feature like seats. Autumn calculates the prorated amount and either charges or credits the customer.
> **Example** <br />
> A customer on a $20/month plan upgrades to a $50/month plan halfway through the billing cycle. They're charged $15 (the prorated difference for the remaining half of the month).
## Setting up
<Tabs>
<Tab title="CLI">
Add a `proration` config to a priced plan item:
```ts autumn.config.ts
import { feature, item, plan } from 'atmn';
export const seats = feature({
id: 'seats',
name: 'Seats',
type: 'metered',
consumable: false,
});
export const pro = plan({
id: 'pro',
name: 'Pro',
price: { amount: 20, interval: 'month' },
items: [
item({
featureId: seats.id,
included: 5,
price: {
amount: 10,
interval: 'month',
billingUnits: 1,
billingMethod: 'usage_based',
},
proration: {
onIncrease: 'prorate',
onDecrease: 'prorate',
},
}),
],
});
```
Push changes with `atmn push`.
</Tab>
<Tab title="Dashboard">
1. Navigate to **Plans** and edit a plan
2. Select a **non-consumable** priced feature (e.g., seats)
3. Under **Advanced**, configure **Proration Behavior**:
- **On Increase**: what happens when the customer adds more units
- **On Decrease**: what happens when the customer removes units
4. Save the plan
</Tab>
</Tabs>
## Proration options
### On Increase
| Option | Behavior |
|--------|----------|
| `prorate` | Charge the prorated difference immediately |
| `charge_immediately` | Charge the full unit price immediately (no proration) |
### On Decrease
| Option | Behavior |
|--------|----------|
| `prorate` | Credit the prorated difference immediately |
| `no_action` | No credit or refund — change takes effect at next billing cycle |
<Note>
Proration is only relevant for `non-consumable` features (like seats, workspaces). Consumable features (like API requests) are billed based on usage, not quantity changes.
</Note>
## Plan-level proration
When a customer switches between plans (upgrade or downgrade), Autumn prorates automatically:
- **Upgrades**: the customer is charged the prorated difference between the old and new plan prices for the remainder of the billing cycle. This happens immediately.
- **Downgrades**: the plan change is **scheduled** to take effect at the end of the current billing period. The customer continues on their current plan until then.
<Info>
**Example**
A customer is on a $20/month plan and upgrades to a $50/month plan on day 15 of a 30-day cycle.
- Old plan credit: $20 × (15/30) = $10 credit
- New plan charge: $50 × (15/30) = $25 charge
- Net charge: $25 - $10 = **$15**
</Info>
## Usage-based proration
For usage-based prices, when a plan change occurs mid-cycle:
1. Outstanding usage at the **old rate** is billed immediately
2. The new rate applies going forward for the rest of the billing period
## Stripe integration
Autumn uses Stripe's proration system under the hood. Prorated amounts appear as line items on the customer's next invoice (or are charged immediately, depending on configuration).