Staaarter

Billing Reactivate Subscription

A reactivation prompt for accounts that canceled but are still inside their paid access window. It states when access ends, lists what the user keeps by resuming, and links straight to a resume action, aimed at billing dashboards, account settings, and cancellation exit-intent screens.

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

Docs

Installation

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

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

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

Usage

The file also exports billing107Demo, 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 { Billing107, billing107Demo } from "@/components/blocks/billing/billing107";

export default function Page() {
  return <Billing107 {...billing107Demo} />;
}

Props

PropTypeDefaultDescription
titlestring"Your subscription is set to cancel"Heading at the top of the card.
planNamestringnoneName of the plan being offered for reactivation.
pricestringnoneFormatted price string, for example "$29".
priceIntervalstring"/month"Billing interval suffix shown after the price.
expiresLabelstringnoneSentence stating when access ends, for example "You'll lose access in 9 days, on August 17."
restoredFeaturesstring[]nonePlan features the user regains by resuming, rendered as a checklist.
resumeLabelstring"Resume subscription"Label on the primary resume button.
resumeHrefstringnoneLink the resume button points to.
dismissLabelstringnoneOptional label for a secondary dismiss link, rendered only alongside dismissHref.
dismissHrefstringnoneOptional link for the secondary dismiss action.
classNamestringnoneExtra classes for the outer container.

Behavior notes

  • The price is a plain formatted string, not an animated counter, so it renders the same on every load with no client-side JavaScript required.
  • expiresLabel is a sentence you compute from your billing provider's period-end timestamp and pass in as text; the component doesn't calculate or format dates itself.
  • The dismiss link only renders when both dismissLabel and dismissHref are set, so the card can also be used as a resume-only prompt with no secondary action.
  • Resume is a next/link, not a form submission, so wire it to a route that calls your billing provider's API to flip cancel_at_period_end back to false.
  • The card uses an amber accent throughout to read as a time-sensitive notice rather than routine billing information.

Frequently asked questions