Subscription schedules

A subscription schedule is the period of billing or the duration for the invoice.

A subscription consist of one or multiple schedules that consist of the pricing plan version, and start and end date. There is a multitude of options to configure subscriptions and tailor them to your customers’ needs.

A subscription always has 1 or more schedules, and an optional set of:

One can also take a pricing plan and fully customise the pricing based on the agreements you have made with your customer. Read more about pricing overrides here.


Creating a subscription schedule

A start date is mandatory with an optional end date for the schedule which means that it renews indefinitely unless updated.

An active schedule without an end date can be updated with an end date of the future.

No two schedules can have an overlap of a gap within one subscription. The end date of one will be the beginning or start date of the next schedule. If the first schedule has no definitive end date, then the start date of the next schedule will set the end date of the previous schedule.


Cloning subscription schedules with overrides

While creating a new schedule in an active subscription, if you’ve got overrides on the previous subscription schedule, you can copy them over to the new schedule or choose to create one from scratch


Tracing invoices back to schedules

Invoices expose a read-only pricing_plan_schedule_ids field listing the schedules the invoice bills for, next to the existing pricing_plan_subscription_ids. It is a list because an invoice can span multiple subscriptions and can include usage and pay-in-advance fees from different schedules around a cut-over. Use it to trace every invoice line back to the schedule that produced it without expanding each line.


Indexing prices when copying a schedule

When a customer has overridden prices on a schedule, you can index all of them by a percentage instead of updating each price by hand. Indexing always runs as part of copying a schedule: it produces a new schedule with the adjusted prices, and the original schedule is left untouched.

How it works

Pass an indexing_settings object on the Copy a pricing plan schedule request with a percentage and a rounding_mode:

Rounding modeDescription
PRESERVE_SCALERounds the indexed price to the same number of decimals as the original price.
DECIMALSRounds the indexed price to the number of decimals set in number_of_decimals.

A negative percentage decreases prices; a positive one increases them. Indexing includes pricing bounds, so for tiered pricing, every tier is indexed.

By default, indexing applies to every overridden price on the schedule. To index only a subset, pass pricings, pricing_items, and/or pricing_item_configs with the IDs to include; any price left out is copied over unchanged. Each entry can carry its own indexing_settings, which overrides the top-level settings for that price only.

Indexing only applies to prices that have been overridden on the schedule. Rate cards don’t support pricing overrides, so indexing isn’t available when copying a schedule linked to a rate card.

Via API

Index all overridden prices by 4%
$curl -X POST https://test.api.solvimon.com/v1/pricing-plan-schedules/ppsc_jwDeeN0tYSY3F7BkeN1v/copy \
> -H "X-API-KEY: <apiKey>" \
> -H "Content-Type: application/json" \
> -d '{
> "start_at": "2026-08-01T00:00:00Z",
> "indexing_settings": {
> "percentage": "4",
> "rounding_mode": "PRESERVE_SCALE"
> }
> }'
Index specific prices only, with a per-price override
$curl -X POST https://test.api.solvimon.com/v1/pricing-plan-schedules/ppsc_jwDeeN0tYSY3F7BkeN1v/copy \
> -H "X-API-KEY: <apiKey>" \
> -H "Content-Type: application/json" \
> -d '{
> "start_at": "2026-08-01T00:00:00Z",
> "indexing_settings": {
> "percentage": "4",
> "rounding_mode": "DECIMALS",
> "number_of_decimals": 2
> },
> "pricings": [
> { "id": "pric_hwDeeN0vcYJaBLAc0C1W" }
> ],
> "pricing_items": [
> {
> "id": "pi_3fGh9QeWzT0mLk2Rp6Yv",
> "indexing_settings": { "percentage": "-2", "rounding_mode": "PRESERVE_SCALE" }
> }
> ]
> }'

The response is the newly created schedule, with the indexed prices reflected in its combined_pricing_plan_version.

Via Desk

On a subscription schedule, enable Index pricings.

Then enter a percentage (e.g. +4%) to apply, and pick a scope: all pricings, products, revenue items, or pricing rules. New subscription schedule form with indexation settings for all products at once, with percentage and rounding mode options with a pricing preview panel on the right displaying the schedule configuration details

Choosing Products lists every product individually, so you can set a different percentage per product instead of one global value.

New subscription schedule form with indexation settings for multiple products, showing separate percentage and rounding mode options for API Platform and Online payment products, with a pricing preview panel on the right displaying the schedule configuration details

Confirming the action creates a new schedule with the indexed prices.