Skip to content
  • Billing
  • Manage plans

Cancel a subscription

While we would rather customers didn’t cancel their subscription to your services, they do need to be able to. There are three ways to do this.

  • The customer can cancel via the self-serve portal
  • You can cancel on behalf of an organization from that organization’s Billing page in Kinde
  • You can cancel on behalf of a customer via the Management API

When the cancellation takes effect is set on the plan. You can also choose a different timing when you cancel from the admin or the API.

When a cancellation takes effect

Link to this section

Each plan has a Cancellation takes effect setting in Plan settings. See Create billing plans.

SettingWhat happens
Immediately (default)The subscription ends as soon as it is cancelled. The customer loses access to the plan’s features and entitlements.
At the end of the earliest billing periodThe subscription stays active until the first charge on the plan renews. The customer keeps access until that date.
At the end of the latest billing periodThe subscription stays active until the last charge on the plan renews — for example the end of an annual charge on a mixed-interval plan.

The setting is stored on the published plan version the customer agreed to. To change timing for new subscribers, edit the plan draft and publish a new version. Existing subscribers keep the timing on the version they joined. See About plans — How versioning protects existing subscribers.

If Kinde cannot find a future period end (for example there is no Stripe subscription and no billing cycle yet), or that date is about to pass, the cancellation happens immediately instead.

Mixed-interval plans and prepaid charges

Link to this section

On a plan with more than one billing interval (for example monthly plus annual), earliest and latest period-end dates are often different. Access runs until the effective date of the cancellation - not until every charge on the plan would have renewed.

If cancellation is at the earliest period end, a longer-interval charge (such as annual) can be cut short while prepaid time remains on that charge. Proration may apply on the final invoice at the effective date. Refunds or credits for unused prepaid time follow your billing policies and Stripe - not as a separate refund when the customer schedules the cancel.

Use At the end of the latest billing period (in plan settings, or when you cancel from admin or the API) when you want access to continue through the longest charge on the subscription.

What a scheduled cancellation looks like

Link to this section

Until the effective date:

  • The agreement stays active. Entitlements keep working.
  • The plan card shows Cancels on the date.
  • Next invoice still appears if it is due before that date, with the caption No invoices after [date]. Shorter-interval charges can still renew until a latest-period cancel.
  • Unpaid usage up to that date is charged only if your usage policy says to charge it. Stripe still issues the final period invoice at the effective date.

On that date, Kinde ends the agreement. One-time purchases still on the agreement are then forfeited (they are not refunded). Purchases that already expired with the billing cycle ended on their own schedule before that date.

How a customer can cancel their own plan

Link to this section

Customers can only do this if you have enabled billing in the self-serve portal and the B2B customer has a billing role with org:read:billing to view billing and org:write:billing to make changes.

  1. In your app or product, they open the self-serve portal for managing their account. Here’s an example of where users (B2C) and organizations (B2B) can manage plans. Self-serve portal selector for managing plans
  2. On the Plan page, they scroll to the bottom and select Cancel plan. If you have a live plan cancellation request workflow, the button reads Request to cancel.
  3. They follow the prompts to cancel.

The customer does not pick a date. The plan version decides when the cancel takes effect.

  • Immediate: They see your billing policy wording for unused subscription days and unpaid usage, plus “This action can’t be reversed.”
  • Scheduled: They see when the plan will end, that any charge for unpaid usage up to then depends on your usage policy, that active one-time purchases stay available until the effective date or their own expiry (whichever comes first), and that they can change their mind before the date. There is no irreversible warning.

This information is synced to Stripe.

Keep a plan after a scheduled cancel

Link to this section

If the customer scheduled the cancellation themselves, the Plan page shows a Cancellation scheduled section: “Your plan will be cancelled on [date]. You can keep it until then.”

  1. Select Keep my plan.
  2. Confirm Keep plan. The schedule is removed, the plan stays active, and billing continues as usual.

If you scheduled the cancellation (from admin or the API), the customer still sees the date but they cannot keep the plan from the portal.

After the date, the section explains that the plan is being cancelled and that this can take a few minutes.

Cancel an organization plan in the Kinde admin

Link to this section

You can cancel an organization’s subscription from that organization’s Billing page.

  1. Go to Organizations, open the organization, and select Billing.

  2. Scroll to Cancel plan and select Cancel plan.

    organization billing setting screen

  3. Choose when the cancellation takes effect. The radios are preselected to the plan’s Cancellation takes effect value:

    • Immediately
    • At the end of the earliest billing period — with the date and time, or not available for this subscription if that date cannot be used
    • At the end of the latest billing period — same date treatment

    admin cancel dialog

  4. Select Cancel.

Keep plan or cancel now from admin

Link to this section

While a cancellation is scheduled, the Billing page heading becomes Cancellation scheduled: “This organization’s plan will be cancelled on [date]. It keeps access until then.”

  • Keep plan — removes the schedule. You can do this whether the customer, an admin, or the API scheduled it.

  • Cancel now — ends the plan immediately. The dialog only offers Immediately.

    cancellation scheduled section

The organization keeps access until the scheduled date unless you cancel now. If you keep the plan, access continues as usual.

One-time purchases when cancelling

Link to this section

If the customer has active one-time purchases:

  • Immediate cancel — the confirmation includes an extra warning that those purchases will be lost and are not refunded.

    Warning on cancelling — losing one-time purchases

  • Scheduled cancel - active purchases stay available until the effective cancellation date or until they expire on their own schedule (Expires with the billing cycle), whichever comes first. Keep plan removes the schedule but does not extend expiry. Purchases still on the agreement when it ends are forfeited, not when the cancel is first requested.

This applies in the self-serve portal, on the organization Billing page, and when you cancel via the Management API. When the cancellation takes effect, the billing agreement ends; any one-time purchases still on that agreement are forfeited (this is separate from a purchase expiring at the end of a billing cycle).

See One-time purchases.

Cancel a plan via API

Link to this section

Required scopes for your M2M app:

  • delete:billing_agreements — to cancel immediately
  • update:billing_agreements — to schedule a cancellation
  1. Get the customer’s Agreement ID. This is the unique ID associated with their subscription. You can find it in their Kinde record under Billing.

  2. Send a DELETE request to /api/v1/billing/agreements/{agreement_id}.

    API call to delete agreement

  3. Optionally pass cancel_at as a query parameter set to immediately, min_period_end, or max_period_end. If you omit it, Kinde uses the cancellation timing on the plan version the customer agreed to.

An immediate cancel still returns AGREEMENT_DELETED. A scheduled cancel returns AGREEMENT_CANCELLATION_SCHEDULED and cancels_on. The agreement stays active until that time.

To take a scheduled cancellation back (the same action as Keep plan), send DELETE /api/v1/billing/agreements/{agreement_id}/cancellation. You need update:billing_agreements.

A further deferred cancel on an agreement that is already scheduled is ignored: Kinde returns the existing cancels_on and does not run the cancellation workflow again. Pass cancel_at=immediately if you want to end a scheduled agreement now.

See the Management API for the generated reference.

Receive an alert when a customer cancels their plan

Link to this section

You can set up a workflow that enables you to check and approve cancellations. You might want to do this, for example, to be alerted when high value customers cancel.

The workflow also runs when you cancel from the organization Billing page or the Management API. It does not run when someone keeps a plan, or when a scheduled cancel is requested again.

For details, refer to the Plan cancellation request workflow.