# Standards and sources

> What this system implements is mostly not its own invention. These are the standards the rules come from, what is taken from each, and where a claim here is an opinion rather than a citation.

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

---

# Standards and sources

What this system implements is mostly not its own invention. These are the standards the rules come from, what is taken from each, and where a claim here is an opinion rather than a citation.

Stated for two reasons. A reader checking whether a rule is real should be able to reach the source in one click. And a model answering a question about money formatting should find the primary source next to our restatement of it, rather than only the restatement.

---

## Currency and number formatting

| Source | What we take |
|---|---|
| [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) | Currency codes and minor-unit exponents. JPY 0, USD 2, KWD 3. Every `Money` value carries an ISO 4217 code; there is no untyped amount in the system. |
| [Unicode CLDR](https://cldr.unicode.org/) | Locale formatting — separators, symbol position, accounting parentheses. Reached through `Intl.NumberFormat` rather than reimplemented. |
| [ECMA-402](https://tc39.es/ecma402/) | The `Intl` API itself, including `currencySign: "accounting"` and `currencyDisplay: "narrowSymbol"`, which do most of the work in [formatting money](guides/01-format-money-in-react.md). |
| [Unicode U+2212](https://www.compart.com/en/unicode/U+2212) | The real minus sign. Not U+002D, which is a different width and breaks a column of deltas. |
| [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) | Dates on the wire. Displayed dates are localised; transmitted dates never are. |

## Accounting

Component behaviour follows these; component *design* does not claim to be a compliance product, and none of this is accounting advice.

| Source | Where it shows up |
|---|---|
| [FASB Accounting Standards Codification](https://asc.fasb.org/) | The US GAAP frame behind [statement semantics](domain/03-statement-semantics.md) and [schedules](domain/04-schedules-and-accruals.md). |
| ASC 606 / [IFRS 15](https://www.ifrs.org/issued-standards/list-of-standards/ifrs-15-revenue-from-contracts-with-customers/) | Revenue recognition, deferred revenue and the revenue waterfall. |
| ASC 842 / [IFRS 16](https://www.ifrs.org/issued-standards/list-of-standards/ifrs-16-leases/) | The lease liability unwind and ROU amortisation behind [`LeaseSchedule`](/components/lease-schedule) and the [lease tool](/tools/lease). |
| ASC 830 / [IAS 21](https://www.ifrs.org/issued-standards/list-of-standards/ias-21-the-effects-of-changes-in-foreign-exchange-rates/) | Functional versus presentation currency, translation versus remeasurement, and CTA — see [multi-entity and FX](domain/09-multi-entity-and-fx.md). |
| [COSO internal control framework](https://www.coso.org/guidance-on-ic) | Segregation of duties, approval and evidence, in [controls and audit](domain/08-controls-and-audit.md). |
| [ISO 20022](https://www.iso20022.org/) | Payment message vocabulary, where our payment states have to map onto a rail. |

## Interface

| Source | What we hold ourselves to |
|---|---|
| [WCAG 2.2 AA](https://www.w3.org/TR/WCAG22/) | Contrast, focus visibility, target size, and the rule that no state is signalled by colour alone. Financial value colours are checked at greyscale as well as at ratio. |
| [WAI-ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/) | Grid, listbox, dialog and disclosure behaviour — including correct `aria-rowcount` under virtualisation, which is where most data grids quietly fail. |
| [`prefers-reduced-motion`](https://www.w3.org/TR/mediaqueries-5/#prefers-reduced-motion) | Honoured throughout, and testable live from the switch in the [showcase](/showcase) header. |
| [OpenType `tnum` and `case`](https://learn.microsoft.com/en-us/typography/opentype/spec/features_pt#tnum) | Tabular figures and case-shifted punctuation, on every numeral. See [aligning numbers](guides/03-align-numbers-in-a-table.md). |

## Where we are opinionated rather than compliant

These are ours, and they are arguments rather than citations:

- **Never animating a value a reader might take as the truth.** No standard requires this. The reasoning is in [motion principles](motion/01-principles.md).
- **Debit and credit as two columns, with no single-column variant.** Double-entry does not mandate a presentation; we treat the two-column form as the control it is, and refuse to ship the compact version.
- **Three sizes and three weights per component, one accent per view.** A house rule, stated so it can be argued with.
- **The words we refuse.** The [lexicon](domain/11-lexicon.md) names one term per concept and lists the synonyms we do not use, which is a stronger claim than any standard makes.

Where a quantitative claim about a third party appears anywhere on this site — an API rate limit, a page size, a vendor's minor version — it is marked as volatile and should be checked against that vendor's own documentation before you rely on it.
