---
title: "Standards and sources"
description: "Most of what Lopifi implements came from somewhere else. This page lists the standards behind the rules, what we take from each, and which claims are our opinion."
canonical: "https://lopifi.com/docs/standards"
---

# Standards and sources

> Most of what Lopifi implements came from somewhere else. This page lists the standards behind the rules, what we take from each, and which claims are our opinion.

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

---

# Standards and sources

Most of what Lopifi implements came from somewhere else. This page lists the standards behind the rules, what we take from each, and which claims are our opinion.

If you want to check whether a rule is real, the source is one click away. A model answering a question about money formatting finds the primary source sitting next to our restatement of it.

---

## 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, so there is no untyped amount in the system. |
| [Unicode CLDR](https://cldr.unicode.org/) | Locale formatting: separators, symbol position, accounting parentheses. We reach it through `Intl.NumberFormat` and don't reimplement it. |
| [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](https://lopifi.com/md/docs/guides/format-money-in-react). |
| [Unicode U+2212](https://www.compart.com/en/unicode/U+2212) | The minus sign. U+002D, the hyphen, 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 behavior follows these standards. The components are not 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](https://lopifi.com/md/docs/domain/statement-semantics) and [schedules](https://lopifi.com/md/docs/domain/schedules-and-accruals). |
| 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 amortization 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](https://lopifi.com/md/docs/domain/multi-entity-and-fx). |
| [COSO internal control framework](https://www.coso.org/guidance-on-ic) | Segregation of duties, approval and evidence, in [controls and audit](https://lopifi.com/md/docs/domain/controls-and-audit). |
| [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 signaled by color alone. Financial value colors are checked at grayscale as well as at ratio. |
| [WAI-ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/) | Grid, listbox, dialog and disclosure behavior — including correct `aria-rowcount` under virtualization, which most data grids get wrong. |
| [`prefers-reduced-motion`](https://www.w3.org/TR/mediaqueries-5/#prefers-reduced-motion) | Honored 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](https://lopifi.com/md/docs/guides/align-numbers-in-a-table). |

## Where we are opinionated rather than compliant

These rules are ours. They're arguments, and no standard backs them:

- **Never animating a value a reader might take as the truth.** The reasoning is in [motion principles](https://lopifi.com/md/docs/motion/principles).
- **Debit and credit as two columns, with no single-column variant.** Double-entry doesn't mandate a presentation. We treat the two-column form as a control and don't ship the compact version.
- **Three sizes and three weights per component, one accent per view.** A house rule, written down so people can argue with it.
- **The words we refuse.** The [lexicon](https://lopifi.com/md/docs/domain/lexicon) names one term per concept and lists the synonyms we don't use. No standard goes that far.

Any number this site quotes about a third party, such as an API rate limit, a page size or a vendor's minor version, is marked as volatile. Check it against the vendor's own documentation before you rely on it.
