Staaarter

Billing Pending Verification

A status card for administrative billing delays, like a new tax ID or a bank account change waiting on manual review. It shows what was submitted, how long the review is expected to take, and whether any features are restricted in the meantime. Passing status set to "error" swaps the whole card into a failure state with a reason and an upload-again action.

By Staaarter Team
Billing
Updated June 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-pending-verification.json

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

Usage

The file also exports billing92Demo, 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 { Billing92, billing92Demo } from "@/components/blocks/billing/billing92";

export default function Page() {
  return <Billing92 {...billing92Demo} />;
}

Props

PropTypeDefaultDescription
titlestringnoneHeading text. Defaults to "Verification pending" or "Verification failed" based on status.
descriptionstringnoneOne-line explanation of what's being verified.
status"pending" | "error""pending"Switches the whole card between its in-review and failed layouts.
submittedFieldsSubmittedField[][]Label/value pairs summarizing what the user submitted, e.g. a VAT ID.
estimatedTimestringnoneExpected review turnaround, shown only when status is "pending".
restrictedbooleanfalseWhen true and status is "pending", shows a note that some features are limited until the review completes.
errorReasonstringnoneExplanation shown when status is "error", e.g. why a document was rejected.
retryLabelstring"Upload again"Label for the retry button shown in the error state.
retryHrefstring"#"Link target for the retry button.
classNamestringnoneExtra classes for the outer card.

Types

interface SubmittedField {
  label: string;
  value: string;
}

Behavior notes

  • status is the single switch between the two layouts: pending shows a pulsing clock icon, an amber "In review" badge, and an optional estimated-time line; error shows a static warning icon, a destructive "Action needed" badge, the errorReason text, and a retry button.
  • submittedFields renders as a simple label/value list so the user can double-check what they sent without you building a separate summary component.
  • The restricted note only shows in the pending state; it's meant for cases where certain features are gated until the review finishes, not for a hard block on the whole account.
  • There's no polling or live update built in. Re-render the component with a new status prop when your backend reports a change.

Frequently asked questions