Copywriting and CTAs for SaaS flows·

Cancel Anytime vs 30-Day Money-Back: Pick the Right Line Under Your Pricing CTA

Cancel Anytime vs 30-Day Money-Back: Pick the Right Line Under Your Pricing CTA

Most founders write the button first, then type whatever comes to mind in the small grey line underneath it. That line is the last thing a hesitant buyer reads before they click or leave. It's also the cheapest copy on the page to fix.

The two lines you're choosing between are not interchangeable:

  • "Cancel anytime. No card required." — removes commitment risk.
  • "30-day money-back guarantee." — removes outcome risk.

Picking the wrong one means you're answering an objection your buyer doesn't have, while leaving the real one sitting there unanswered.

Why the line under the CTA outperforms the button copy

Your button has room for two to four words. That's enough to name the action and nothing else. The line beneath it is where the promise gets made believable.

This is basic reading behavior: when someone stalls on a decision, their eyes drop below the thing they're supposed to click. Nielsen-style scanning patterns show attention pools around a focal element, then spills downward into the surrounding text. If that space is empty, or filled with a badge strip, you've wasted your last chance to answer the objection.

Three rules that follow from that:

  • One line, not a strip. Five reassurances stacked together read as noise. The buyer stops parsing and clicks back to the tab they came from.
  • Directly under the button. Not in the footer, not in a tooltip, not below three logo rows.
  • Readable size. 14–16px, body-text color. 11px italic grey isn't a reassurance, it's a hiding place.

Hierarchy matters here more than anywhere else on the page, because this is the exact moment the decision happens.

The decision framework: cancel anytime vs money-back

Start by naming what your buyer is actually afraid of.

  • Commitment risk: "Am I locked into something I can't get out of?"
  • Outcome risk: "What if this doesn't work for my team?"

Then run four questions.

1. Is the commitment real? On month-to-month self-serve, "cancel anytime" is simply a fact — say it. On annual prepay, it isn't. They can't cancel today and get their money back; they cancel at renewal. Writing "cancel anytime" next to an annual price is a promise your billing system breaks the moment someone emails support.

2. How fast does value show up? If value lands in session one — a report, a cleaned import, a generated draft — outcome risk is low and commitment risk dominates. If value takes weeks — a migration, a team rollout, a data pipeline — outcome risk dominates and the guarantee earns its place.

3. Who's paying? If the buyer is the user with a company card, "cancel anytime" is enough. If a manager or finance has to justify a line item, they need a defensible exit: a refund window, or a documented cancellation path they can quote in a Slack thread.

4. What does your refund policy actually say? Never write a guarantee your support team will argue about. If you refund case-by-case within 30 days, write "Email us within 30 days and we'll refund you." That's honest, and it's what you already do.

The decision rule:

  • Self-serve, monthly, value in session one → "Cancel anytime."
  • Annual prepay, slow time-to-value, or a manager signs off → "30-day money-back guarantee."
  • Both true → change the line when the billing toggle changes. This is the move most pricing pages miss. If annual carries different risk than monthly, the line under the CTA should change with the selection, not stay static.

If you're not sure which risk your buyers actually feel, run a free audit on your pricing flow — it reads the CTA block in context and tells you which objection is going unanswered.

Before/after: two pricing CTA blocks rewritten

Case A — $29/mo self-serve analytics tool, monthly only.

Before:

[ Start Free Trial ]
No credit card required. Cancel anytime. 14-day trial.
Trusted by 2,000+ teams. GDPR compliant. SOC 2 Type II.

Five claims, no hierarchy, and the trial length repeated from the button. "Trusted by 2,000+ teams" does nothing for a person deciding whether to enter a card.

After:

[ Start free — 14 days ]
Cancel anytime. No card required. Your first report exports on day one.

One commitment risk removed, one outcome signal added. "Your first report exports on day one" is specific and testable; "trusted by 2,000+" is not.

Case B — $499/mo team plan, annual prepay.

Before:

[ Buy Now ]
30-day money-back guarantee. Cancel anytime.
Save 20% with annual billing.

Three competing messages, one of which is false. "Cancel anytime" on an annual prepay is the kind of line that generates a support ticket and a chargeback.

After:

[ Start annual plan — $4,990/yr ]
30-day money-back guarantee, no questions. Switch to monthly before renewal.

The guarantee answers outcome risk. The switch clause answers commitment risk honestly, without pretending they can unwind an annual payment on day 40.

One more fix, in both cases: "Buy Now" is a checkout verb on a pricing page. The button should predict the next screen. If the next screen is a card form, say "Start annual plan." If it's a free trial, say "Start free." If the button says "Start free" and the next screen wants a card, you've broken the promise in under a second — and that's the most common reason people write in asking why you asked for their card.

P0/P1/P2: fix your pricing CTA block in one pass

P0 — contradictions. Any line that conflicts with billing reality: "cancel anytime" on annual prepay, "no credit card" when the next screen requires one. These cost you trust instantly and cost you refunds later. Fix today.

P0 — button/next-screen mismatch. The button verb must describe what happens on click. Nothing else on the page matters if this is wrong.

P1 — competing claims under the button. Cut to one risk-reversal line plus, at most, one proof point. If the guarantee is what closes your ACV, it belongs in the line, not in a badge strip.

P1 — a static line under a dynamic toggle. Monthly and annual carry different risk. Make the copy follow the selection. You can see this pattern in action on our /pricing page: the reassurance under the CTA changes with the billing period, because the objection does.

P2 — typography. 14–16px, body color, under ten words. If the line looks like legal fine print, buyers treat it like legal fine print.

P2 — the long-form policy. Keep the full refund and cancellation terms one click away, not in the CTA block. A short "How cancellation works" link beats three sentences of terms.

The wording rules that survive contact with support

  • Name the action, not the feeling. "Cancel from Settings → Billing in two clicks" beats "Cancel anytime" when it's true.
  • Give the number. "30 days" beats "money-back guarantee" on its own.
  • Write the policy you enforce. If support would have to escalate, rewrite the line.
  • Don't bury it in the FAQ. The FAQ is where people go after the CTA fails, not before.
  • Test the button and the line as one unit. Splitting them gives you noise, because they only work together.

If you want more teardowns of the exact moments where copy decides the click, the /blog has a running series on pricing and checkout blocks.


Your pricing page has one job: get the right person to click with the right expectation. The button carries the action. The line under it carries the reason to believe. Write both, then check them against what your billing system will actually do at 9am on a Monday.

Start a free audit at /signup and you'll get a prioritized P0/P1/P2 list for your CTA block — plus the rest of the flow — in a few minutes, not a few weeks.