Staaarter

Billing Subscription Pause

A subscription pause status card for account settings pages, shown as a retention alternative to outright cancellation. When active, it lists the available pause lengths and what stays intact if the customer pauses. When paused, it shows the pause start date, the automatic resume date, and a Resume now link. It's a status display, not the confirmation flow itself; pair it with a separate pause-trigger action such as a confirmation modal.

By Staaarter Team
Billing
Updated April 9, 2026
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its badge, button dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/billing-subscription-pause.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/billing/billing130.tsx instead.

Usage

The file also exports billing130Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Billing130, billing130Demo } from "@/components/blocks/billing/billing130";

export default function Page() {
  return <Billing130 {...billing130Demo} />;
}

Props

PropTypeDefaultDescription
titlestring"Subscription pause"Heading shown above the status badge.
planNamestringnoneName of the plan referenced in the status copy.
status"active" | "paused"noneWhich of the two card layouts renders.
pausedSincestringnoneDate the pause began; shown only when status is "paused".
resumesOnstringnoneDate billing resumes automatically; shown only when status is "paused".
pauseLengthsstring[]["1 month", "2 months", "3 months"]Available pause durations, shown as plain badges when status is "active".
preservedItemsstring[]noneBullet list of what stays intact during a pause, shown in both states.
resumeHrefstring"#"Destination for the Resume now button, shown when status is "paused".
pauseHrefstring"#"Destination for the Pause subscription button, shown when status is "active"; point this at your pause-confirmation flow.
classNamestringnoneExtra classes for the outer container.

Behavior notes

  • The card renders one of two entirely different layouts based on status: an active-state pitch with pause length options, or a paused-state summary with a resume date.
  • pauseLengths in the active state are plain informational badges, not selectable controls; the actual duration picker lives in the pause-confirmation flow linked from pauseHref.
  • Both states render the same preservedItems list, since what's preserved during a pause is true whether the customer is deciding to pause or is already paused.
  • The Resume now and Pause subscription buttons are next/link elements, not fetch calls, so wire pauseHref and resumeHref to your actual pause-flow route or trigger.
  • This component holds no local state; it fully derives its layout from the status prop passed in by the caller.

Frequently asked questions