
You can upgrade, downgrade, or cancel your ADO Pilot subscription at any time. Upgrades and downgrades both take effect immediately — the new plan's included RCs, overage policy, and overage rate apply right away; cancellations either end the subscription now or at the end of the current period.

## Upgrading your plan

An upgrade — for example, from Team to Business — takes effect **immediately** and applies to your current billing period.

- **The new plan's included RCs are available right away.** Your consumed-RC counter is reset to zero, so you do not pay twice for any reviews you ran earlier in the period. The review deduplication list is also cleared, so in the rare case where a review is already in flight when the upgrade lands, that review's quota reservation could be counted again.
- **The new plan's included RCs and overage rate take effect immediately.** A Team-to-Business upgrade does not change your overage policy — monthly Team and Business both default to auto-overage — so reviews continue past your included RCs either way. What changes is the included-RC allocation and the per-RC overage rate (Team's `{% $plans.team.overageRate %}` becomes Business's `{% $plans.business.overageRate %}`), applied from now.
- **Stripe prorates the subscription fee.** You're credited for the unused portion of your old plan and charged for the new plan starting today. Check your invoices in the Stripe billing portal for the exact amount and when it's billed.
- **Your billing day does not change.** Subsequent renewals continue on your existing anchor date.

## Downgrading your plan

A downgrade — for example, from Business to Starter — takes effect **immediately**, the same way an upgrade does. It is not deferred to your next billing date.

- **The new plan's included RCs, overage policy, and overage rate apply right away.** Your quota switches to the lower plan's allocation as soon as ADO Pilot processes the downgrade.
- **RCs you've already consumed this period are not reset.** Unlike an upgrade, a downgrade does not zero out your consumed-RC counter — if you've already used more RCs than the new plan includes, you can be over your new allocation immediately. See [Overage behavior](./overage-behavior.md) for what happens when you exceed your included RCs.
- **Proration for the plan-fee difference is handled by Stripe.** Check your invoices in the Stripe billing portal for the exact credit and timing.

If you downgrade from Business to Starter on the 20th of a Feb 15–Mar 15 period, the switch takes effect that same day: your included-RC allocation, overage policy, and overage rate become Starter's immediately, and any RCs you've already used this period count against Starter's allocation rather than Business's.

## Cancelling your plan

There are two ways to cancel, and the difference matters:

- **Immediate cancellation.** The subscription ends now. New PR reviews are blocked starting immediately, and no future invoices are issued. Use this when you need to stop reviews without delay.
- **Cancel at period end.** The subscription stays active through the end of the current billing period and then cancels automatically. You can keep using your remaining RCs until the period boundary, no further invoices are issued after the final period, and you can change your mind by clearing the cancellation in the Stripe portal before the period ends.

The "cancel at period end" path is the recommended default. Stripe sets a `cancel_at_period_end` flag on the subscription; while that flag is set the subscription's status remains **active** in ADO Pilot, so reviews continue to run normally until the period boundary. On the boundary the subscription transitions to **cancelled** and reviews are blocked.

To cancel from the Billing page:

{% steps %}

### Step 1 — Open the Stripe portal

{% callout type="info" title="Identity re-confirmation required" %}
Opening the Stripe billing portal requires the admin to recently re-confirm their identity (a "step-up" check).

How you confirm depends on how you sign in: if you have two-factor authentication enrolled in **Settings → Security**, you enter a fresh authenticator code; if you sign in with a password, you re-enter that password; and if you sign in without a password — a magic link, an email code, or **Sign in with Microsoft** — you enter a one-time code we email to your current address. Two-factor authentication is not required. See [Step-up re-authentication](../trust/account-security.md#step-up-re-authentication) for details.
{% /callout %}

In the **Payment Method** section of the Billing page, click **Update** (or **Add payment method** if you haven't added one yet). You are redirected to the Stripe billing portal.

### Step 2 — Cancel the subscription

In the portal, choose **Cancel subscription**. Select either immediate cancellation or cancel at period end. Confirm.

### Step 3 — Verify in ADO Pilot

Return to the Billing page. An immediate cancellation shows the subscription as **cancelled**. A scheduled cancellation shows it as **active** with a notice that it ends on your next billing date.

{% /steps %}

## Reactivating after cancellation

If you cancel at period end and change your mind before the boundary, clear the cancellation in the Stripe portal — the subscription continues without interruption and your next invoice is normal.

If your subscription has already cancelled, cancellation intentionally revokes your Azure DevOps connection for security: your Personal Access Token and webhook credentials are permanently deleted, and the PR-review service hooks are removed from your Azure DevOps projects. **Reactivating requires reconnecting Azure DevOps** — re-subscribing on the Billing page alone does not resume reviews. Your plan configuration, repo settings, and billing history remain associated with your account for a retention window after cancellation, but PR reviews stay stopped until you reconnect. See [Trial and conversion](./trial-and-conversion.md) for how the signup flow handles a returning customer reconnecting their Azure DevOps organization.

{% callout type="info" title="A failed payment is not the same as cancelling" %}
The permanent disconnection above applies when you **intentionally** cancel (via **Cancel subscription** in the Stripe portal), or when a disputed or charged-back payment results in your subscription being canceled. Opening a dispute by itself only flags your account for review — it does not disconnect Azure DevOps on its own; disconnection happens only if the dispute leads to the subscription actually being canceled. If your subscription instead lapses because a **payment failed** and Stripe exhausted its retries, ADO Pilot suspends your account rather than cancelling it — your Azure DevOps connection, personal access token, and service hooks stay intact, and access is restored automatically once you fix your billing. See [Failed payments](./invoices-and-payment.md#failed-payments).
{% /callout %}

{% callout type="info" title="Behavior verified by tests" %}
The immediate-effect timing for both upgrades and downgrades and the `cancel_at_period_end` semantics are exercised in the subscription lifecycle E2E suite. See `tests/e2e/specs/subscription-lifecycle.spec.ts` for the canonical expectations. The reactivation-requires-reconnect claim below is verified directly against the as-built lifecycle handling rather than the E2E suite — its dedicated test is currently disabled pending a rewrite (see the authoring note below); the claim itself does not depend on that test.
{% /callout %}


