Cancellation
Cancelling a subscription permanently ends the customer’s recurring billing. BillHive provides granular control over when the cancellation takes effect and how outstanding charges, credits, and invoices are handled.
Available when: Status = Active
Cancellation Form
| Field | Required | Description |
|---|---|---|
| Cancel Option | Yes | When cancellation takes effect: Immediately, End of Term, or Specific Date |
| Cancel Date | Conditional | Only required when Cancel Option = “Specific Date” |
| Cancellation Reason | Yes | Why the subscription is being cancelled. Selected from a configurable dropdown (fetched from CancelReason metadata). |
| Unused Period Credit Policy | Yes | How to handle the unused portion of a prepaid billing period. |
| Refundable Credit Action | Yes | What to do with any credits generated. |
| Unpaid Invoice Handling | Yes | How to handle outstanding unpaid invoices. |
Cancel Options
| Option | Behavior |
|---|---|
| Immediately | Subscription is cancelled now. Prorated credits may apply for the unused portion of the current period. |
| End of Term | Subscription remains active until the current term expires, then cancels. No proration needed. A settlement message is shown confirming the deferred cancellation. |
| Specific Date | Subscription cancels on the chosen date. Credits are calculated on that date, from the days left in the term. |
Default timing
The cancel form starts on your Default Cancel Timing (Settings > Subscription Settings > Cancel Subscription): Cancel immediately or Cancel at end of current term. Without a default it starts on Immediately. You can always pick another option for one cancellation; a specific date is always chosen per cancellation, so it can’t be the default.
An API request may leave out cancelOption. It then uses the default, or End of Term when none is set, so the customer keeps the time they paid for.
Credit & Refund Policies
Unused Period Credit Policy
Controls how the remaining prepaid period is handled:
| Policy | Description |
|---|---|
| Don’t issue credits | No credit is generated for the unused portion. The customer forfeits the remainder. |
| Issue prorated credits | A credit is calculated proportionally for unused days in the billing period. See How prorated credits are calculated. |
| Issue full credits | A full credit for the entire current billing period is issued. |
How prorated credits are calculated
The credit is worked out when the cancellation takes effect: straight away for Immediately, and on the cancel date for Specific Date. If the plan, add-ons or price change between scheduling and the cancel date, the credit reflects the subscription as it is on that date.
- Unused days run from the cancellation date to the term end date, counting both days.
- Credit = subscription amount ÷ days in the term × unused days, rounded to 2 decimals.
Example. A flat-fee plan of ₹2,656 per month has a term from 23 Oct to 22 Nov (31 days). Cancelled with Specific Date = 8 Nov:
| Unused days | 8 Nov – 22 Nov = 15 |
| Daily rate | 2,656 ÷ 31 = 85.677… |
| Credit | 85.677… × 15 = ₹1,285.16 |
Cancelling on the first day of the term credits the full term; cancelling on the last day credits one day. End of Term cancellations earn no credit, because no days are left unused. Issue full credits credits the whole term amount for any cancellation that takes effect before the term ends.
The calculation above is for the default Actual days method. Tenants can instead use 30/360 or whole months; the same ₹2,656 term cancelled on 8 Nov then credits ₹1,328.00 or ₹0.00. To give no credit at all, use Don’t issue credits. See Proration Method, and Proration & Credits for how the policy and method combine.
The credit is posted as a credit memo (source: Subscription Cancellation) when the cancellation takes effect.
Refundable Credit Action
On cancellation, the subscription’s credits (including the cancellation credit) are always applied to its unpaid invoices first, oldest invoice first. This setting decides what happens to any credit left over:
| Option | Shown as | What happens to the leftover credit |
|---|---|---|
| Retain credits | Apply to unpaid invoices, then keep the rest as credit | It stays on the customer’s account and can be applied to future invoices. |
| Initiate refund | Apply to unpaid invoices, then refund the rest | It is refunded to the customer’s original payment method. If the customer paid offline, or there is no gateway payment to refund, a Refund transaction in Needs Attention is created for finance to pay out. See Offline Refunds. |
Any invoice still unpaid after the credits are applied is handled by Unpaid Invoice Handling.
Example. A cancellation creates a ₹1,500 credit and the customer has a ₹400 unpaid invoice. The invoice is paid from the credit, leaving ₹1,100: kept as credit with Retain credits, or refunded with Initiate refund.
Unpaid Invoice Handling
Controls how outstanding unpaid invoices are treated:
| Policy | Description |
|---|---|
| Retain as unpaid | Invoices remain open for future collection. |
| Attempt Collection | BillHive attempts to collect payment on outstanding invoices before finalizing cancellation. |
| Write Off | Outstanding invoices are written off as uncollectable. |
Unbilled Charge Handling
Not available yet. Usage recorded in the current term is billed at renewal, so a subscription cancelled mid-term doesn’t invoice that usage today. A policy to invoice or drop it on cancellation is planned; the field is hidden on the cancel form and in Subscription Settings until then.
Contract terms
B2B plans can carry a contract: a minimum commitment, a notice period and an early termination fee (ETF). They are set on the rate plan and can be overridden for a single subscription from Contract Terms > Edit on the subscription page. A value set on the subscription wins over the plan’s, field by field. A subscription with no contract terms cancels exactly as before.
Notice period
A cancellation is rejected (HTTP 400) when it would take effect earlier than today + notice period days, for example:
Cancellation must be at least 30 days from today (notice period); earliest allowed date is 2026-11-23
This applies to all three options. Immediately takes effect today, so it is rejected whenever a notice period applies. Specific Date needs a date on or after the earliest allowed date. End of Term takes effect the day after the term ends and is rejected when that is before the earliest allowed date. The check runs when the cancellation is requested and again when the cancellation workflow starts its validation step.
Early termination fee
The commitment runs from the subscription start date for the minimum commitment months and ends the day before the same date that many months later: a 12 month commitment starting 24 Oct 2026 ends on 23 Oct 2027. When the cancellation takes effect on or before that last day, an ETF is charged:
| Fee type | Fee |
|---|---|
| Fixed amount | The fee amount. |
| Percentage | The percent × the remaining committed value. |
| Remaining committed value | The remaining committed value. |
Remaining committed value = monthly recurring price × commitment months × the share of the commitment left from the effective date to the commitment end, using the tenant’s Proration Method.
Example. ₹1,000 a month, 12 month commitment from 24 Oct 2026, cancelled with effective date 24 Apr 2027 (183 of 365 days left):
| Remaining committed value | 12,000 × 183 ÷ 365 = ₹6,016.44 |
| Remaining value fee | ₹6,016.44 |
| 50% percentage fee | ₹3,008.22 |
| ₹500 fixed fee | ₹500.00 |
The ETF is added to the cancel order as a Early termination fee charge, so the cancellation invoice includes it alongside any other charges, and it is collected or settled against credits like the rest of the order. It is fixed when the cancellation is requested, using the effective date requested. The order estimate shows it as its own line.
Admin override
Admins can cancel outside the contract. Tick Override contract terms and give a reason (API: overrideContractTerms: true and overrideReason). The override skips the notice period check and waives the ETF. Without a reason the request is rejected (400), and only admin channels (BillHive Web App and API) may override; the Self-Serve Portal cannot.
The override is recorded: its reason is appended to the subscription’s cancellation reason (“Contract terms overridden: …”) and kept, with the waived fee, on the cancel order’s options, and the override is logged by the facade.
Order Estimate
Before confirming cancellation, BillHive displays an order estimate showing:
- Credits to be issued (based on unused period policy)
- The early termination fee, as its own line, when one applies (or the fee that an override waives)
- The notice period and the earliest allowed cancellation date
- Net impact on the customer’s balance
This allows the admin to review the financial impact before proceeding.
Estimates are available for Immediately and Specific Date cancellations. For Specific Date, the credit line is labelled Estimated: it is calculated again on the cancel date, so it can differ if the subscription changes in the meantime. End of Term cancellations have no estimate, since they earn no credit.
Scheduled Cancellations
A cancellation with End of Term or Specific Date is recorded on the subscription as soon as it is scheduled:
- Status changes to Non Renewing, so the subscription is not renewed and shows up as expected churn in the Non Renewing counts on the analytics dashboard.
- The cancel date and the selected policies are saved on the subscription.
- The subscription keeps working until the cancel date, when the cancellation takes effect and the status changes to Cancelled.
A subscription that already has a scheduled cancellation can’t be cancelled again.
Removing a scheduled cancellation
Available when: Status = Non Renewing with a scheduled cancellation that has not taken effect yet.
On the subscription page, click Remove scheduled cancellation and confirm. The API equivalent is POST /subscriptions/{subscriptionId}/remove-scheduled-cancellation (scope Subscription.cancel, optional body { "srcSysCode": "..." }), which returns the subscriptionId, the restored status and the cancelledOrderId.
Removing the cancellation restores the subscription:
- The cancel workflow is stopped and the cancel order is set to Cancelled.
- Status returns to what it was before the cancellation was scheduled (Active, Paused or Non Renewing), and the cancel date, cancel options and cancellation reason are cleared.
- The pending renewal is kept. If its expiring-soon reminder date has already passed, that workflow is started again so the renewal still runs.
- The removal is logged in the Activity Log.
A subscription with no scheduled cancellation is rejected with HTTP 400 (No scheduled cancellation to remove). Renewing a subscription that has a scheduled cancellation is also rejected with 400, which points to this action.
If a removal fails part way, calling it again completes it.
What Happens After Cancellation
- Subscription status changes to Cancelled.
- Credits and invoices are processed according to the selected policies.
- Recurring billing stops immediately (or at the deferred cancellation date).
- The cancellation is logged in the Activity Log with the reason and policy selections.
- Associated workflows (dunning, renewal reminders) are terminated.
Configuring Default Policies
Default values for the cancellation policies (Unused Period Credit Policy, Refundable Credit Action and Unpaid Invoice Handling) are configured in Subscription Settings > Cancel Subscription. A cancellation request that leaves a policy out uses the default; one that sends a policy uses its own.
The portal’s cancellation form starts on these defaults. Where you haven’t saved one, it starts on Issue prorated credits, Initiate refund, Attempt Collection and Invoice charges. You can change any of them on the form for one cancellation.
Unpaid Invoice Handling on the Cancel Subscription tab is the cancellation’s policy. The Pause Subscription tab has its own Unpaid Invoices Handling for resuming; the two are separate settings.