

# Facts [#facts]

Facts are schema-backed values with stable identities. They are not arbitrary
request fields.

## When this matters [#when-this-matters]

You work with facts when you build calculator input, show calculator help or
review why a value was accepted or rejected. A structurally similar object is
not the same fact unless it matches the owning schema.

## How it works [#how-it-works]

```ts
import { Cents, aud } from "@taxkit/core/primitives";
import { GrossPay } from "@taxkit/rules-au-pay";

const grossPay = new GrossPay({
  amount: aud(Cents.make(165_400)),
  period: "weekly",
});
```

The `GrossPay` tag and `Money` value are part of the boundary. HTTP callers
send the tagged JSON form; SDK callers use the constructors.

## Fact authority [#fact-authority]

Input facts are supplied by the caller. Derived facts are produced by rules.
Parameter facts and services provide tax-year tables, rates and constants.

## Related concepts [#related-concepts]

* [Money and branded values](/concepts/money-and-branded-values)
* [Rules](/concepts/rules)
* [Facts architecture](https://github.com/crcorbett/taxkit/blob/a151e51e8a30247526fa93412df046955846eca4/docs/architecture/facts.md)
