Skip to main content

Billing cycles

The billing cycle of a subscription is the rhythm at which renewals are charged. It is defined by the plan's recurringInterval, including the unit and length of each cycle, the billing timing (prepaid or postpaid), and the optional anchor instruction that pins renewals to a specific day.

For the data fields themselves, see Recurring interval.

Anchor dates

The anchor date of a subscription is the date used to compute every future renewal. By default, the anchor is the date the subscription was activated (the date of the first successful payment).

Subsequent renewals fall on the same relative day as the anchor — same day-of-month for monthly cycles, same day-of-week for weekly cycles, and so on according to the plan's recurringInterval.

You can also override the anchor explicitly when creating the plan via periodAnchorInstruction, for example to align all subscriptions on a plan to the same day of the month regardless of when the customer signs up. The supported values are day-of-month and day-of-week — see Recurring interval for the field shape.

Billing timing — prepaid vs postpaid

billingTiming on recurringInterval controls when the renewal charge runs relative to the cycle it covers:

  • prepaid — the charge runs at the start of the next cycle, in advance of the service period it covers. This is the typical pattern for subscriptions.
  • postpaid — the charge runs at the end of the cycle, after the service period it covers. Useful for usage-based pricing where the final amount is not known until the cycle closes.

Effect of plan change

Changing the plan on an active subscription does not automatically change the anchor date. By default, the next renewal still falls on the original anchor date and is charged at the new plan's price (with proration depending on the proRataCredit flag).

To start a fresh cycle from the change date instead, set retainRenewalTime: "reset" on the plan-change request. See Upgrade and downgrade and Proration.

Effect of pause

A paused subscription does not run renewals. For the effect on the renewal schedule when the subscription is resumed, see Subscription pauses.