# Online cancellation

> What "cancel online" requires, how Checkbox tests your cancellation flow, and the hosted cancellation page you can use instead of building one.

Federal law (ROSCA) requires a simple way to stop recurring charges, and the state laws are more specific: a subscriber
who signed up online must be able to cancel online, immediately, without calling or chatting, and retention offers
must not stand in the way. Several states also require a confirmation after cancelling.

## What Checkbox checks {#checks}

The synthetic shopper signs in with a test account (or uses a [test subscription](https://checkbox.site/docs/guides/test-runs)), looks for
the cancel option from the account page and tries to cancel. It records every step with screenshots.

| Check | Fails when |
|---|---|
| `cancel.online_available` | No way to cancel online was found |
| `cancel.mechanism_findable` | The cancel option is hard to find from the account page |
| `cancel.flow_friction` | The flow forces a call, chat or email, or loops through offers without a visible way to finish |
| `cancel.confirmation` | No confirmation of the cancellation (on screen or by email) |

See [every check](https://checkbox.site/docs/concepts/checks#all-checks) for the full list and the laws behind each.

## Build it {#build}

- Put **Cancel subscription** (or "Manage subscription") on the account page, one click from where subscribers manage
  their account.
- Retention offers are allowed in most states only if the subscriber can see and use the cancel option at the same time.
- Confirm the cancellation on screen and by email, with the date the subscription ends.
- With Stripe Billing, the [customer portal](https://checkbox.site/docs/guides/stripe-customer-portal) does this for you.

Then tell Checkbox how to reach it: register the site with `test_account` (a subscriber login the shopper can use) or
`cancel_steps`, and run `checkbox verify --wait`.

## Or use the hosted cancellation page {#hosted}

For sites on Stripe Billing, Checkbox hosts a cancellation page: the subscriber enters their email, confirms with a
link, and cancels in two clicks, with an on-screen confirmation and a confirmation email. Retention offers are only
shown behind "Would you like to hear about an offer before you cancel?". Every cancellation is written to the evidence
vault. Turn it on in the dashboard (**Site → Fixes → Hosted cancellation**) with a Stripe key limited to Customers: Read
and Subscriptions: Write, and link to it from your account page and your disclosure (`cancel_url`).

## Your Terms must agree {#terms}

Checkbox fetches your Terms of Service and cancellation policy. "No cancellations", "cancel by phone only" or "all sales
final" contradict the law for online sign-ups and show up as `terms.cancellation_policy_consistent` tasks with the
offending clause quoted.
