# VerificationStatus

> KYC/KYB requirements, each with its state and what is still due.

Source: https://lopifi.com/components/verification-status
Part of: Lopifi — US GAAP books on autopilot, checked by a CPA (https://lopifi.com)

---

- **Family:** Tax & compliance — The obligations around the books: what is due to whom, who has been verified, and which controls held.
- **Status:** Implemented
- **Spec:** https://lopifi.com/docs/catalog/14-tax-compliance

## Install

```bash
npx shadcn@latest add @lopifi/theme
npx shadcn@latest add @lopifi/verification-status
```

## Specification

KYC for a person, KYB for a business: the subject, every requirement (ID document, address, beneficial owners, sanctions screening …) with its state (`verified | pending | needs-action | failed`), and what's still due, **by when, and what happens if it isn't provided**. Requirements, deadlines and consequences come from the provider or the platform. The component names none of its own.

**The overall state is derived, worst first.** One failed requirement makes the subject failed, never an average. An empty requirement list is "No requirements on record", **never "Verified"**.

**Next due** is stated in the summary line ("Next due: Beneficial owners by 24 Oct 2026"), and an overdue requirement counts its days in the negative tone. `onResolve` adds an action to requirements that need action or failed. Without it, no action renders.

**Accessibility:** the action's accessible name includes the requirement ("Provide beneficial owners"). Pending is a clock, never a spinner: it's a state, not a load.

## Rules this component obeys

Money is minor units, never floats. `null` is not `0` and neither is redacted. Negatives render in accounting parentheses with the parenthesis column reserved on both sides. Debit and credit are two columns. Per-currency decimal places. Polarity is explicit — up is not always good. Every figure states its period, entity, currency, basis and as-of.
