# Receivables (AR)

> Receivables (AR) — specs for 13 React components: InvoiceForm, InvoiceDetail, InvoiceRegister, CashApplication and 9 more.

Source: https://lopifi.com/docs/catalog/10-receivables
Part of: Lopifi — US GAAP books on autopilot, reviewed by a CPA (https://lopifi.com)

---

# Receivables (AR)

Domain model in [`domain/05-order-to-cash.md`](../domain/05-order-to-cash.md).

---

## 109. `InvoiceForm`
Lines with account and dimensions, itemized tax **by jurisdiction and rate**, terms, PO reference. Shows the **revenue recognition preview per line** before posting — whether each line credits revenue or deferred revenue, and on what schedule. Invoice number is system-assigned and gapless; the user cannot pick it.

Discount terms render in full: "2% discount if paid within 10 days, otherwise due in 30 days", with both amounts and the discount deadline computed.

## 110. `InvoiceDetail`
Balance due as the hero figure, total as context. Payment history, applied credits, dispute state, dunning history, and the audit trail. Actions gated by state — `void` only while unpaid and within an open period.

## 111. `InvoiceRegister`
All invoices with aging, filterable. Surfaces the **gapless-numbering check** as a banner when a gap exists — many VAT regimes require a sequence, and a gap is an audit red flag.

## 112. `CashApplication`

> The highest-value screen in AR, and the one most tools handle worst.

Left: unapplied payments. Right: open invoices for that customer. A running sum against the payment amount as invoices are selected, so the user sees when the selection is exact.

**Every case is a first-class path, not just the happy one:** exact, partial, overpayment, lump-sum-to-many, short pay, no-invoice, duplicate, bank fee deducted in transit, FX settlement difference.

**Rules:** unapplied cash is never revenue; it is shown separately within AR, and a customer's net credit balance is flagged for reclassification to a liability · a remaining difference always requires a disposition (write-off with reason and account, leave unapplied, or dispute) · write-off thresholds enforce approval · applying is reversible and audited.

The match uses the [reconciliation animation](../motion/03-catalog.md) — one of the four sanctioned moments.

## 113. `PaymentSuggestion`
Given a lump sum, proposes the set of open invoices that sums to it exactly. Multiple valid combinations are ranked oldest-first. Shows the basis, not a bare confidence score.

## 114. `UnappliedCashPanel`
Outstanding customer credits awaiting application, aged. A customer with a net credit balance in AR is flagged for possible reclassification to a liability at period end — shown, never buried.

## 115. `CreditNoteForm`
References its original invoice and is capped at that invoice's balance without an explicit override. **Distinguished from a refund and a write-off** in the UI copy and in the actions offered — they have different GL, tax, and business meanings.

## 116. `CollectionsWorklist`
Prioritized by amount × age × risk. **Promise-to-pay is a first-class object** with a date and amount; a broken promise escalates. Disputed invoices are excluded from dunning but present in the list, marked.

## 117. `DunningTimeline`
Full communication history **per customer**, not per invoice — a collector needs one timeline. Shows sent, opened, and responded, with the next scheduled step and its pause conditions.

## 118. `CustomerStatement`
Printable, per-customer, in open-item or full-activity form. Print styles are first-class; this is a document that gets emailed and filed.

## 119. `CustomerCreditPanel`
Credit limit and current exposure together, exposure including unbilled orders. Supports customer hierarchy roll-up — three subsidiaries of one group are one credit risk. Flags expired tax-exemption certificates.

## 120. `SalesOrderTable`
Backlog. **Visually separated from anything ledger-derived**, because orders have no GL impact and showing them near revenue is how pipeline gets mistaken for performance.

## 121. `ArMetricsPanel`
DSO (with the method stated — the two formulas give different answers), best-possible DSO, ADD, CEI, % past due, bad debt rate. Every metric via `MetricDefinition`.
