Proration
When a customer upgrades or downgrades, Rollo lets you schedule the new plan for the next period and optionally credit unused time as free days on the current period.
POST /v1/subscriptions/:id/change_plan. After you change the plan, sync your app from webhooks / GET.How Rollo approaches plan changes
Pick a target recurring price in the dashboard. Rollo stores a pending price and amount on the subscription. At period end, renewals use the pending plan. Optional credit days extend the current period immediately — functionally a credit for unused time on the old plan.
Calculating credit days
A simple approach: unused fraction of the period × days in the period, rounded down. For example, 10 days left on a 30-day month ≈ 10 credit days when moving to a similar-priced plan.
After a dashboard plan change
Example request
GET /v1/subscriptions/sub_01HXYZ... Authorization: Bearer rk_live_...
Example response
{
"id": "sub_01HXYZ...",
"object": "subscription",
"status": "active",
"amount": 2900,
"currency": "usd",
"interval": "month",
"cancel_at_period_end": false,
"payment_collection_paused": false,
"trial_ends_at": null,
"current_period_end": 1726800000000,
"customer": "cus_...",
"customer_email": "ada@example.com",
"created": 1723000100000,
"livemode": true
}How to handle it
You will also receive subscription.updated. Update entitlements when the new amount/period takes effect. For an immediate upgrade charge, create a separate one-time checkout session for the difference, then schedule the plan change with fewer credit days.