CheckboxDocs

Compliant checkouts that convert

The legal floor for a subscription checkout is small — one clear line next to the pay button, consent, online cancellation and the required emails. Three examples that pass Checkbox's checks without banners, boxes or red text.

Compliance is a floor, not a dial. Automatic-renewal laws (federal ROSCA, California, New York and the other states) ask for four things at checkout and after it — not for banners, warning colours or a wall of checkboxes:

  1. One clear disclosure line next to the pay button: the price, how often it is charged, that it renews automatically until the subscriber cancels, and how to cancel.
  2. Affirmative consent: one unchecked checkbox, or — where the law allows it (California and Vermont accept a clearly labelled button with the terms next to it) — a button that says what it does ("Agree & subscribe").
  3. Online cancellation for anyone who signed up online.
  4. The required emails: the acknowledgment after sign-up, and the reminders your plan needs (Checkbox tells you which).

That's it. Everything else Checkbox suggests is optional and tagged as such (protection levels). Once the floor is in place, the optional, engine-checked ways to convert and retain better — trial buttons, a first-charge date, calmer emails, a skippable save offer — are in Compliant conversion suggestions.

What "clear and conspicuous" means in practice

Checkbox's conspicuousness check (signup.disclosure.conspicuous) passes a renewal line that is:

  • readable: at least 12px and at least about three quarters of your body text size — not "big";
  • legible: WCAG AA contrast (4.5:1) against its background, not faded or semi-transparent;
  • set apart from the text around it: semibold, or a contrasting colour, or a light border — California's statute asks for one of these ("larger type, contrasting type, font or colour, or set off by symbols or marks");
  • next to the button: directly above it (or directly below it, right under the button).

It fails classic fine print: small grey text under the button, text faded into the background, terms collapsed behind "Details". It never asks for a banner, a red box or a bigger font.

Example 1 — one semibold line above the button

The smallest compliant form, in your page's own font and colours. Semibold is what sets it apart.

HTML
<form action="/subscribe" method="post">
  <!-- your email / card fields -->
  <p style="margin:12px 0 6px;font-weight:600;">
    Renews automatically every month at $19.99 until you cancel. Cancel anytime in Account → Billing.
  </p>
  <label><input type="checkbox" name="auto_renew_consent" required> I agree to the automatic renewal terms above.</label>
  <button type="submit">Subscribe</button>
</form>

Checkbox Elements renders exactly this by default (since 1.3.0, appearance="line"), with the wording generated from your real plan and the consent recorded for you:

HTML
<checkbox-disclosure publishable-key="pk_test_…" merchant-name="Acme" amount="1999" currency="usd"
  interval="month" cancel-url="https://acme.example/account/cancel"></checkbox-disclosure>
<button type="submit">Subscribe</button>

Example 2 — button-label consent (California, Vermont)

No checkbox at all: the button itself states the agreement, with the renewal line right above it. Checkbox's catalog accepts this as express affirmative consent in California and Vermont (it follows the CART HelloFresh judgment); it is still pending counsel review, and an unchecked checkbox remains the most conservative choice.

HTML
<p style="margin:12px 0 6px;font-weight:600;">
  Renews automatically every month at $19.99 until you cancel. Cancel anytime in Account → Billing.
</p>
<button type="submit">Agree &amp; subscribe — $19.99/month</button>

Example 3 — Stripe Checkout

Stripe draws the page; you supply one renewal line (custom_text.submit) and turn on the consent checkbox (consent_collection.terms_of_service). Stripe styles custom text small and grey; Checkbox shows that as "Looks compliant" with a note, not as a failure. Also put the same line on your own pricing page before the redirect.

JSON
{
  "mode": "subscription",
  "consent_collection": { "terms_of_service": "required" },
  "custom_text": {
    "submit": { "message": "Renews automatically every month at $19.99 until you cancel. Cancel anytime in your account." },
    "terms_of_service_acceptance": { "message": "I agree to the automatic renewal terms and the [Terms of Service](https://acme.example/terms)." }
  }
}

What Checkbox shows you

LabelMeaning
Needs a fixA clear gap in the legal floor, with the one change that fixes it.
Looks compliant — live check pendingEverything Checkbox can see is right; it has not seen the live event yet (your acknowledgment sent for a real sign-up, a cancellation confirmed in Stripe, a reminder that is not due yet). Counts as compliant; each item says how it completes.
Verified liveSeen live: a proof run, a real BCC'd send, a Stripe-confirmed cancellation.
Your callA real decision (for example keeping a minimum term). One question, with our recommended answer.

A site with the floor in place reads Compliant · 2 live checks pending — and the live checks complete on their own as subscribers sign up, or in a minute with a proof run.

Protection levels

Every task is tagged required (the legal floor — the only thing that can make a site not compliant), recommended (lowers lawsuit risk, conversion-neutral: consent receipts, a cancellation confirmation email) or extra (maximum protection: a checkbox per term, a pre-purchase summary). Choose per site in Site settings → Protection level, or with protection_level on update a site:

  • Minimum: required items only.
  • Balanced (default): required items, plus recommended ones as optional suggestions collapsed under them.
  • Maximum: everything, extras included.

Next: Compliant conversion suggestions — optional changes that commonly help conversion, each checked by the same engine before you see it.

Not legal advice: Checkbox checks your site against its catalog of automatic-renewal laws, which is pending attorney review.

Checkbox is compliance software, not a law firm; nothing in these docs is legal advice (details). You remain solely responsible for your subscription program, and Checkbox takes on no legal liability for it (Terms). Checkbox is a System1 company; Trust center · Status. For AI agents: every page is available as Markdown at the same URL plus .md; the index is /llms.txt.