Billing W9 Verification Status
A status tracker for a business's W-9 (or similar tax residency) verification. An overall status badge sits at the top next to the entity name and masked tax ID, a vertical timeline lists each step of the process with its own status and timestamp, and a footer shows the verified date and next renewal date once verification completes.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its badge dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/billing-w9-verification-status.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/billing/billing148.tsx instead.
Usage
The file also exports billing148Demo, 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 { Billing148, billing148Demo } from "@/components/blocks/billing/billing148"; export default function Page() { return <Billing148 {...billing148Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| title | string | "W-9 verification" | Heading at the top of the card. |
| entityName | string | none | Business or individual name the W-9 was filed under. |
| taxIdMasked | string | none | Partially masked tax ID shown under the entity name, e.g. "•• •••4821". |
| overallStatus | "pending" | "processing" | "verified" | "failed" | none | Drives the top-right badge color and label, and whether the footer or failure note shows. |
| steps | W9Step[] | none | Timeline entries rendered in the order given. |
| verifiedDate | string | none | Shown in the footer when overallStatus is "verified". |
| renewalDate | string | none | Shown in the footer alongside verifiedDate when overallStatus is "verified". |
| failureReason | string | none | Shown as an inline note in the header when overallStatus is "failed". |
| className | string | none | Extra classes for the outer container. |
Types
type W9StepStatus = "complete" | "current" | "upcoming" | "failed"; interface W9Step { id: string; label: string; description?: string; status: W9StepStatus; timestamp?: string; }
Behavior notes
- The component is fully static and driven by props, there's no internal state; re-render it with a new steps array and overallStatus to reflect a status change.
- Each step's icon and color come from its own status field (complete, current, upcoming, or failed), independent of the card-level overallStatus.
- The verified/renewal footer only renders when overallStatus is exactly "verified" and at least one of verifiedDate or renewalDate is passed.
- The failure note in the header only renders when overallStatus is "failed" and failureReason is passed; there's no default fallback message.
Frequently asked questions
More Billing Blocks
View all →Billing Invoice List
Invoice history table with status badges, formatted amounts, and a per-row download link, built with shadcn/ui and Tailwind CSS.
Billing Failed Payment Alert
High-contrast failed-payment alert with a message, a retry button, and an optional update-payment-method button, built with shadcn/ui and Tailwind CSS.
Billing Credit Balance
Compact credit balance card with a large total, an optional purchased-versus-promotional breakdown, a low-balance notice, and a top-up button.
Billing Payment Methods
A saved payment method list for React and Next.js with brand icons, a default badge, near-expiry warnings, and remove/set-default actions per row.
Billing Add Card
A card entry form for React and Next.js with auto-formatted fields, internal brand detection, and per-field validation feedback built with shadcn/ui and Tailwind CSS.
Billing Coupon Code
An inline promo code input for React and Next.js with a simulated loading state, an applied summary showing the discount amount, and an invalid-code message.