Massachusetts Wants an Exact Calendar Date on Your Renewal Notice. Every Other State Just Wants a Countdown.
Massachusetts's junk fee rule skips the usual 30-day notice window and makes you print the exact date a subscriber must cancel by. No other state does.
Every state auto-renewal law we've covered so far runs on the same clock logic: send a notice some number of days before the renewal, and you're compliant. Thirty days is the common number. Colorado, Maryland, and a half-dozen others all vary the exact window, but they're all variations on the same idea — a countdown. Massachusetts's junk fee regulation, 940 CMR 38.00, throws that model out for one specific disclosure and replaces it with something stricter: print the actual date. Not "renews in 30 days." The date itself, on the calendar, the one the consumer has to act by.
This is the regulation most SaaS compliance checklists haven't caught up to, because it got filed under "junk fees" — drip pricing, hidden shipping costs, resort fees — and most of the coverage since it took effect in September 2025 has been about retail and travel. The subscription half of the rule is just as binding, and it's stricter than anything we've written about in Maryland, California, or Connecticut.
Why a calendar date is a harder bar than a notice window
A notice window tells you when to send a message. A calendar-date requirement tells you what that message has to say, and it removes the one piece of ambiguity every other state's law leaves open: what happens when "30 days before renewal" collides with a billing date that moves, a leap year, a plan that was upgraded mid-cycle, or a subscriber who's on a non-standard proration schedule. Under a relative-window statute, as long as the notice goes out within the right range, you're generally fine even if the exact day is fuzzy in the copy. Under 940 CMR 38.05, the notice itself has to name the day — which means your billing system has to compute it correctly, not just fire on schedule.
| State / law | What the notice has to say | Timing requirement |
|---|---|---|
| Massachusetts, 940 CMR 38.05 | The exact calendar date the consumer must cancel by to avoid the charge | For terms over 31 days: notice 5–30 days before that date. For terms of 31 days or less: a disclosure at least as often as the charge recurs |
| California, AB 2863 (Bus. & Prof. Code §17600 et seq.) | "Material terms" of the renewal — generally price and timing, not a specific date | 15–45 days before renewal |
| Colorado, SB25-145 | Renewal terms and a clear cancellation method | 25–40 days before renewal |
| Maryland, SB49/HB107 | Renewal terms and how to cancel | 15–45 days before renewal, for terms of a year or longer |
| Virginia, HB1022/SB493 | A cancellation mechanism matching the original signup channel | No fixed day-count window — the requirement is mechanism parity, not advance notice |
Look at the second row of Massachusetts's own requirement, though, because it's the part that actually changes what a SaaS team has to build. For any renewal cycle of 31 days or less — which is to say, almost every monthly SaaS plan on the market — the regulation doesn't ask for a once-a-term reminder at all. It asks for a disclosure every time you charge the card, stating the amount and how to cancel. Connecticut and Minnesota both regulate how a cancellation conversation has to be sequenced; Massachusetts is the first state in our coverage that effectively regulates the content of a routine monthly receipt email.
Source: Kelley Drye Ad Law Access, "What We Learned From Massachusetts' Junk Fee Regulation Update" (2026); Benesch, "The Coming State-Law Litigation Wave of 2026–27" (29 US jurisdictions with auto-renewal statutes).
The checkout side most teams already half-comply with
940 CMR 38.00 isn't only about subscriptions — it's primarily a drip-pricing rule, and the subscription provisions sit alongside a broader requirement to show an all-in "total price" before a consumer enters payment or personal information. That part reads like most junk-fee laws passed since 2024: no fee presented as mandatory if it isn't, no price that climbs after a consumer has already started checkout, every add-on explained in plain language. Most SaaS pricing pages already do this reasonably well, because showing a clean price is good conversion practice independent of any regulation. The subscription-specific layer is the one most teams haven't separately audited, because it was never a UX best practice in the first place — nobody optimizes a checkout flow for "will this survive a Chapter 93A claim."
| Requirement | What it means for a SaaS billing flow |
|---|---|
| Pre-purchase trial disclosure | Before a free trial converts to paid, disclose the post-trial charge amount and the exact calendar date it hits — not just "your trial ends in 14 days." |
| Negative-option renewal notice | For terms over 31 days, the pre-renewal notice must name the calendar date the consumer has to cancel by, sent 5–30 days ahead of it. |
| Short-cycle disclosure | For terms of 31 days or less (nearly all monthly SaaS billing), a disclosure with the charge amount and cancellation method has to accompany every cycle — monthly receipts become a compliance surface, not just a transactional email. |
| One-step cancellation mechanism | A mechanism that stops the recurring charge immediately — matching what California, Colorado, and most 2025–26 laws already require, but enforceable here through 93A's private right of action. |
That short-cycle row is the one worth sitting with. If your dunning emails and successful-payment receipts are templated the same way most Stripe integrations default to — a generic "your subscription has renewed" line with no cancellation link, no restated price — a Massachusetts-billed subscriber is getting a monthly email that may not clear the bar, even though nothing about your trial flow or your checkout page is non-compliant at all.
Where this sits relative to everything else you've already built
If you've already adjusted your flow for California, Colorado, or Maryland, you're most of the way there structurally — you have a working cancel-by-phone-or-online mechanism, a renewal-notice pipeline, and some address-based segmentation logic already. What's missing is almost certainly the date math and the per-cycle disclosure, not the whole system. Two changes close most of the gap:
- Compute and print the actual date, not a relative description. If your renewal reminder template says "renews in 30 days," swap it for the literal date your billing system already knows — most Stripe-based stacks can pull this straight from
current_period_endwithout any new logic, just a template change. - Add the charge amount and a cancel link to every recurring receipt for Massachusetts-billed accounts on monthly or shorter cycles. This is the requirement most teams will miss entirely, because a monthly payment-succeeded email has never been treated as a compliance document anywhere else.
Neither change touches your product. Both are template and billing-address-segmentation work, the same category of fix we described for Connecticut's SB 3 — and here too, the exposure isn't abstract. A 93A claim doesn't need the Attorney General to notice you first; a single subscriber with a vague renewal email and a lawyer willing to take a fee-shifted case is a complete enforcement path on its own. A cancellation flow that already states things plainly — what's charging, when, and how to leave — is the version of your product that never generates the fact pattern a claim like this is built on. That's also, not coincidentally, the exact surface CancelFlow is built to make easy to get right, since a clear cancel-by date and a one-click cancel path are table stakes for a save-rate-optimized flow regardless of which state's regulator is reading it.
Frequently asked questions
What is Massachusetts's junk fee and auto-renewal regulation?+
940 CMR 38.00 is a regulation issued by the Massachusetts Attorney General's office under Chapter 93A, the state's unfair-and-deceptive-practices law. It took effect September 2, 2025, and covers two things: hidden or misleading fees at checkout, and disclosure requirements for free trials, negative-option contracts, and auto-renewing subscriptions. It applies to any business marketing to Massachusetts consumers online, by text, or by phone, including out-of-state companies.
What makes Massachusetts's cancellation deadline requirement different from other states' auto-renewal laws?+
Most state auto-renewal statutes — California, Colorado, Virginia, Maryland — require a notice sent some number of days before a renewal (commonly 30, sometimes a 15–30 day window). Massachusetts instead requires the notice to state the exact calendar date by which the consumer must act to avoid being charged. A subscriber reading the notice doesn't have to do date math from a vague "renews in 30 days" line — the regulation asks for a specific date, printed in the disclosure itself.
Does 940 CMR 38.00 apply to B2B SaaS subscriptions?+
The regulation reaches contracts with a "consumer" — someone buying for personal, family, or household use — the same boundary drawn by California's, Virginia's, and Minnesota's auto-renewal statutes. A pure B2B contract sold to a company is out of scope. The practical risk sits with self-serve products: a solo or prosumer plan billed to an individual card, even one a business later expenses, commonly reads as a consumer transaction the moment anyone looks at how it was sold.
What are the penalties for violating the Massachusetts junk fee and auto-renewal rule?+
The Attorney General's office can issue civil investigative demands, seek injunctive relief, and pursue penalties of up to $5,000 per violation. Because the regulation is grounded in Chapter 93A, a violation also qualifies as an unfair or deceptive act under that statute, which carries its own private right of action — consumers can sue directly for actual damages, and up to triple damages for willful violations, plus attorney's fees.
Stop losing subscribers today
One script tag. One function call. A live cancellation flow in under 10 minutes.
Start free trial →