Payment Required Lockout

Billing lockout page: an accent card chip and headline with an update-payment seal button on the left, an unpaid invoice table and a square-bullet list of what stays untouched on the right.

PRO

Error26: Payment Required Lockout

The screen a workspace shows after a failed renewal: an accent card chip and headline with an update-payment button on the left, the unpaid invoice as a table and a square-bullet list of what stays untouched on the right.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/error26?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/error26?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/error26.tsx, plus the two design-system primitives it renders through: badge6 for the square eyebrow and button1 for the seal call to action.

Quick start

The installed file exports error26Demo alongside the block: the exact props behind the preview above. Spread it to get a working lockout page in one line.

tsx
import { Error26, error26Demo } from "@/components/beste/block/error26";

export default function Billing() {
  return <Error26 {...error26Demo} />;
}

Then fill the invoice rows from your billing provider. Amounts are plain strings, so currency formatting stays yours:

tsx
import { Error26 } from "@/components/beste/block/error26";

export default function Billing({ invoice }: { invoice: { total: string; card: string } }) {
  return (
    <Error26
      label="Payment Required"
      code="402"
      heading="The card said no, <strong>so the door closed</strong>."
      description="Your last renewal did not go through, so the workspace is read only."
      labels={{ invoiceTitle: "Unpaid invoice", keptTitle: "What stays safe meanwhile" }}
      invoice={[
        { title: "Amount due", value: invoice.total },
        { title: "Card", value: invoice.card },
      ]}
      kept={["Every project, file and comment stays exactly as it is"]}
      button={{ label: "Update payment", href: "/billing" }}
      link={{ label: "Write to billing", href: "mailto:billing@example.com" }}
    />
  );
}

Props

PropTypeDefaultDescription
labelstringEyebrow text rendered through the square-marker badge
codestringStatus code shown after the eyebrow divider
headingstringHeadline HTML, rendered as an h1; <strong> marks the accent clause
descriptionstringExplanatory paragraph under the headline
labelsError26Labels{}Captions above the invoice table and the reassurance list
invoiceInvoiceRow[][]Rows of the unpaid invoice
keptstring[][]Square-bullet list of what is preserved during the lockout
buttonActionLinkSeal call to action under the description
linkActionLinkText link beside the call to action
classNamestringExtra classes for the outer <section>
ts
type Error26Labels = {
  invoiceTitle?: string;
  keptTitle?: string;
};

type InvoiceRow = {
  title: string;
  value: string;
};

type ActionLink = {
  label: string;
  href: string;
};

Behavior notes

More Error blocks

View all Error
PRO

error16

403 Access Request

Permission-denied page for team apps: an accent lock chip and bold headline on the left, the signed-in account card with an account switch link and a square-bullet list of access requirements on the right.

PRO

error27

Session Expired Sign In

Timed-out session page: an accent headline over an account strip showing the avatar, address and sign-out timestamp, an autosave reassurance line, and a sign-in seal button beside an account switch link.

PRO

error28

Region Unavailable Notice

Geo-restriction page: an accent globe chip and headline, the detected region in a bordered strip, a two-column ruled list of markets with their rollout status, and a notify-me seal button.

FREE

error7

404 Notice Card

Compact bordered 404 card with a circular icon, status label, heading, one-line explanation, and stacked full-width buttons. Sized for app shells and modals as well as full pages.

PRO

error15

500 Incident Report

Server error page with a square eyebrow and status code over a hairline rule, a bold accent headline, a bordered incident table of reference, timestamp and service rows, and a retry seal button beside a status page link.

PRO

error4

404 With Destination Cards

404 page that recovers the visit with a grid of destination cards, each with an icon, title, description, and hover arrow, followed by a centered row of fallback buttons.