Payment Recovery
The banner for a renewal that failed: why it failed in words, when it will be retried, and the day the workspace goes read-only — with today marked on the line between them.
The decision inside it
The fix is not red
The one action on this card solves the problem, so it must not look like the problem. Red is kept for the consequence; the button is neutral and says exactly what it opens.
Installation
How you get it
One command. The CLI writes the file into components/ui/ and installs what it needs.
npx shadcn@latest add https://layropro.com/r/payment-recoveryPro components need the CLI token from your account page. Put it in your environment as LAYRO_KEY and use the namespaced form.
API
“Copy prompt” above puts a full brief on your clipboard — install command, dependencies, props, and the mistakes an assistant usually makes with this component.
Props
Read from the component’s own TypeScript interface when the site is built, so this table cannot drift from the file you install.
| Prop | Type | Notes |
|---|---|---|
amountrequired | Cents | — |
currency | string | — |
locale | string | — |
description | string | What was being paid for: "Team · monthly". |
failedOnrequired | string | — |
reasonrequired | FailureReason | — |
card | { network: CardNetwork; last4: string } | The card that was tried. |
retriesrequired | RetryAttempt[] | — |
cutoffOnrequired | string | The day access changes if nothing clears. Required, and drawn as the last point on the line — the deadline is the whole reason this component exists. |
consequence | string | What changes on the cut-off. Default "the workspace becomes read-only". |
nextStep | number | Where today sits on the schedule: the index of the next step that has not happened. 0 is "just failed, first retry ahead". |
resolvedOn | string | Set when the payment has gone through. The component turns into a receipt of that. |
onUpdatePayment | () => void | — |
onDismiss | () => void | — |
Dependencies
npm packages
clsxframer-motionlucide-reacttailwind-mergeLayro foundations, installed alongside it
layro-themecard-brandLifetime access
Every component, and everything we ship next.
- All 65 components, source included
- The template, and everything released after you buy
- shadcn CLI or download — React 18/19, Tailwind v4
- One payment. No subscription.
More in Billing
Subscription Status
PaidSix states, each with the date it depends on — and cancelled is not expired.
Included with lifetime access
Plan Picker
FreeThe exact charge printed under the button: prorated today, then the renewal.
Invoice History
FreeThe next invoice as a dashed estimate above the record, and notes for odd amounts.