# TaxFormTracker

> Vendors over the reporting threshold, with W-9 and TIN-match state.

Source: https://lopifi.com/components/tax-form-tracker
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/tax-form-tracker
```

## Specification

Vendors paid over a reporting threshold, and what stands between each of them and a filed information return: total paid, reportable amount, W-9 state, TIN-match result, form type, delivery and filing.

**The threshold is a prop and is printed in the header.** "Vendors paid at least $2,000 in reportable payments · tax year 2026". The figure changes by law and by year ([procure to pay](https://lopifi.com/md/docs/domain/06-procure-to-pay) keeps it as a dated table), and so does its wording: `comparison: "at-least" | "more-than"` has **no default**, because whether a vendor paid exactly the threshold is in or out depends on the rule's own text. Vendors under the threshold are counted ("1 under it, not listed"), not silently dropped.

**Reportable is not total paid.** Payments by card or through a third-party network are typically reported by the processor, not the payer, so the threshold is tested against `reportableAmount`, and both columns are shown.

**Rows that need work sort first:** a W-9 that's missing or requested, a TIN mismatch, an undetermined form, an undeliverable copy, a rejected filing. The header alert counts missing W-9s and mismatches, because before year-end they're still fixable.

**Refuses to render:** a full TIN. The list shows the last four at most, masked, with spoken text "TIN ending 4471".

**Accessibility:** every state is a glyph plus a word (Matched, Mismatch, Not run). The table has a caption naming the tax year.

## 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.
