Staaarter

Billing Base Fee Breakdown

A base fee breakdown block for billing settings and pre-checkout summary screens. Lists the fixed price for a plan alongside each line item it covers, such as platform access, included seats, support level, and infrastructure, so a customer can see what they're actually paying for before usage-based charges are added on top.

By Staaarter Team
Billing
Updated January 22, 2026
Docs
Live preview

Docs

Installation

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

npx shadcn add https://staaarter.com/r/billing-base-fee-breakdown.json

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

Usage

The file also exports billing26Demo, 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 { Billing26, billing26Demo } from "@/components/blocks/billing/billing26";

export default function Page() {
  return <Billing26 {...billing26Demo} />;
}

Props

PropTypeDefaultDescription
headingstring"What's included in your base fee"Heading in the card header.
descriptionstringnoneOptional supporting line under the heading.
planNamestringnoneOptional plan name shown under the heading.
baseFeestringnoneThe base fee amount, as a pre-formatted string (for example "$79"). Also reused in the total row.
billingPeriod"monthly" | "annual""monthly"Controls the /mo or /yr suffix next to the fee.
lineItemsFeeLineItem[]noneThe items the base fee covers, rendered in the order given.
classNamestringnoneExtra classes for the outer container.

Types

interface FeeLineItem {
  label: string;
  /** Shown on the right, e.g. "Included", "$0.00", "5 seats". */
  value: string;
  description?: string;
}

Behavior notes

  • The component is a plain server-rendered display, there's no toggle or state, lineItems and baseFee are rendered exactly as passed.
  • value on each line item is a free-form string rather than a number, so you can show "Included", "$0.00", or a quantity like "5 seats" depending on what makes sense for that line.
  • The total row at the bottom always echoes baseFee and billingPeriod rather than summing the line items, since most SaaS pricing intentionally shows individual items as value rather than itemized cost.
  • Long line item descriptions wrap normally under the label instead of truncating, so keep them to a sentence if you want every row the same height.

Frequently asked questions