Billing StrategyCycles and Term Length

Billing Frequency, Billing Cycle and Term Length

Three settings decide how often a customer is invoiced, whether the subscription keeps going, and how a price is grouped on your pricing table. They sound alike, so this page explains each one with worked examples.

SettingWhat it meansExample
Billing frequencyHow often an invoice is raised.Every 1 Month
Billing cycle (Fixed or Forever)Whether the subscription stops after its term length (Fixed) or keeps renewing (Forever).Forever
Term lengthHow many billing periods one pricing option covers.12

The price you enter is always the price per billing period. Term length never multiplies it. A ₹1,000 monthly price with a term length of 12 still invoices ₹1,000 each month.

Worked examples

Monthly, term length 1

Price ₹1,000, billing frequency 1 Month, term length 1.

The customer is invoiced ₹1,000 every month. It is month-to-month, with no long-term plan on the price.

Monthly, term length 12, Forever

Price ₹1,000, billing frequency 1 Month, term length 12, billing cycle Forever.

The customer is still invoiced ₹1,000 each month, not ₹12,000 up front. The subscription renews every month with no end date. On the pricing table this option is grouped with the other monthly-billed options and can show a “Save X%” badge against the term-length-1 price. The term length does not change billing or renewals on a Forever price.

Monthly, term length 12, Fixed

Price ₹1,000, billing frequency 1 Month, term length 12, billing cycle Fixed.

The customer is invoiced ₹1,000 each month for 12 months. After the 12th invoice the subscription stops renewing: it becomes Non Renewing and then Expires when the 12th month ends. No 13th invoice is raised.

Here is how the Fixed and Forever versions compare, for a subscription that starts on 1 January:

InvoiceInvoice dateAmountFixedForever
11 Jan₹1,000BilledBilled
21 Feb₹1,000BilledBilled
3 to 111 Mar to 1 Nov₹1,000 eachBilledBilled
121 Dec₹1,000Billed (last one)Billed
131 Jan next year₹1,000None. The subscription is Non Renewing, then expires at the end of December.Billed. Renewal continues every month.

Trial periods do not count towards the 12.

Yearly, term length 1

Price ₹10,000, billing frequency 1 Year, term length 1.

The customer is invoiced ₹10,000 once a year.

Paying several cycles in one invoice (API)

Through the API, a caller can prepay more than one billing period in a single term. For example, a monthly price of ₹1,000 prepaid for 3 cycles gives one invoice for ₹3,000 that covers 3 months. The portal and the hosted checkout always bill 1 cycle per term.

Auto-renew defaults

When an order does not say whether to auto-renew, BillHive picks the default from the plan and price:

SituationAuto Renew by default
Trial planOn, so the trial converts to a paid subscription
Forever priceOn
Fixed price with term length greater than 1On, because it has to renew to reach its last cycle
Fixed price with term length 1Off

A choice made by an admin (ticking or unticking Auto Renew) always wins over these defaults:

  • A ticked Auto Renew on a Fixed price with term length 1 renews like before, with no cycle limit.
  • Unticking Auto Renew on a Forever price keeps it from renewing.
  • A tick that matches the default on a Fixed price with term length greater than 1 still stops after that many cycles.
  • A Fixed price with term length 1 on a trial bills one paid cycle after the trial and then ends.

The Add Order form pre-ticks Auto Renew by this rule when you pick a price, and you can change it. The hosted checkout does not send an auto-renew choice, so the same rule applies to self-serve sign-ups.

Fixed prices and plan changes

  • A subscription on a Fixed price remembers its term length and stops renewing after that many billed cycles.
  • If a customer with a Fixed count changes plan or billing frequency to another price, the count restarts on the new price.
  • If a customer moves from a used-up Fixed price to a price that renews, renewal is turned back on: the next renewal order is created and, if the subscription was Non Renewing with no scheduled cancellation, it goes back to Active.
  • A subscription that has no Fixed count (created before this change, or ticked to auto-renew on a Fixed price with term length 1) never starts one when it changes plan or frequency; it keeps renewing as before.

Plan change credit example

A customer pays ₹1,000 a month and upgrades to a ₹2,000 plan on day 10 of a 30-day month, with proration on. 20 days of the month are unused.

StepCalculationAmount
Credit for the old plan₹1,000 × 20 / 30₹666.67
Charge for the new plan₹2,000 × 20 / 30₹1,333.33

Amounts are rounded to the nearest paisa. The credit is worked out on what the term actually billed (one month’s price for a monthly term), never on term length times the price.

Term length is not a cancellation lock

Term length does not stop a customer from cancelling and does not charge a fee for leaving early. Commitment rules for cancelling, such as the minimum commitment, the notice period and the early-termination fee, come from the rate plan’s Contract terms. See Cancellation.

Existing subscriptions

Subscriptions created before this change keep renewing exactly as they did, including after they move to another price. Fixed-price stopping applies only to subscriptions created after it.

Trial sign-ups that need billing

A trial price can require a payment method at signup. See Trials.

💡

For developers. Field names: termLength and billingCycle (Fixed or Forever) on the rate plan price; billingPeriod is the billing frequency. On an order’s rate plan line, options.billingCycle is the number of cycles billed in that term. If the request omits autoRenew, the server applies the defaults above; an explicit autoRenew always wins. A subscription on a Fixed price stores fixedCycles equal to the price’s termLength (null when autoRenew: true is sent on a Fixed price whose default is off, and null for subscriptions created before this change), and renewals never bill past it. A plan or frequency change only sets fixedCycles on a subscription that already has one. Deploy order: apply the 2026-10-29-fixed-cycles.sql migration, then subscription-service, then the facade. requireBillingAtSignup on the price makes a trial order fail with HTTP 400 unless options.paymentMethodId or autoCollect: true is sent.