---
title: "Receivables (AR)"
description: "Receivables (AR) — specs for 13 React components: InvoiceForm, InvoiceDetail, InvoiceRegister, CashApplication and 9 more."
canonical: "https://lopifi.com/docs/catalog/receivables"
---

# Receivables (AR)

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

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

---

# Receivables (AR)

Domain model in [`domain/order-to-cash.md`](https://lopifi.com/md/docs/domain/order-to-cash).

---

## 109. `InvoiceForm`
Lines with account and dimensions, itemized tax **by jurisdiction and rate**, terms, PO reference. Shows a **revenue recognition preview per line** before posting: whether each line credits revenue or deferred revenue, and on what schedule. The invoice number is system-assigned and gapless; the user can't 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 are gated by state: `void` only while unpaid and in 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 an unbroken sequence, and a gap is an audit red flag.

## 112. `CashApplication`

> The highest-value screen in AR, and the hardest to get right.

Left: unapplied payments. Right: open invoices for that customer. As invoices are selected, a running sum against the payment shows when the selection is exact.

**Every case is a first-class path:** 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](https://lopifi.com/md/docs/motion/catalog), 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, in plain view, for possible reclassification to a liability at period end.

## 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, because 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, because this document 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.

Backlog is order value less invoiced, per row and in total, computed from the rows. Each footer total sits under the column it sums.

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

**API change:** takes `inputs` — opening AR, closing AR, closing current AR, credit sales, write-offs and days in period — and computes every value and substituted formula from them. It previously printed fixed figures.
