Rules referenceReference
This page is the fine print behind Rules: validation & keys — exactly how to write conditions, comparisons and default values. For the list of every rule type, see that page; for money and unit conversions, see Currency & unit conversions.
Conditional rules — rule type conditional (or its other name, validation) — apply a rule only when a condition holds: a receipt required only above 100, a reason required only when a claim is rejected. All three of these forms read the same:
required if <condition>[if] <condition> [then] required(<condition>) then required— e.g.(total > 100) then required
| Operator | Meaning |
|---|---|
is = == | Equals |
is not != <> | Not equal |
> >= | Greater than · greater-or-equal (date- and number-aware) |
< <= | Less than · less-or-equal |
Combine conditions with AND, OR or XOR. AND binds tightest, then XOR, then OR. A quoted value containing one of those words is never split — "Research and Development" stays whole.
| A value can be | Meaning |
|---|---|
123 | a number |
"Active" | text in quotes |
2026-07-01 | a date, written year-month-day |
start_date | another field's value |
empty | true when the field is blank (unquoted; a quoted "empty" means the literal word) |
system date | the save date — also current date, today, now |
current year | the current year (e.g. 2026) — also this year; for year fields |
current month | the current month, YYYY-MM (e.g. 2026-07) — for month fields |
<date>.year | a calendar part of another date field — also .month, .day, .quarter, .week |
HEADER.status or status from HEADER — so a line-item rule can read a value from the header. Field names are matched forgivingly — case, spaces and near-miss spellings still work.Comparisons & ranges. On a required rule (or as a bare conditional value), the Value cell can hold a comparison — in words or symbols — checked against the field's own value:
| Value cell | Means |
|---|---|
greater or equal to start_date | value ≥ start_date |
less than 100 | value < 100 |
>= start_date | the symbolic form of the same |
equal to X · not equal to X | must match / must differ |
between <low> and <high> | an inclusive range (the between rule type) |
You can spell the direction in plain words too — each optionally followed by or equal to. The thing you compare against can be a number, a date, text in quotes, another field, or the "today" words; current year, current month and a date part such as field.year also work:
| Words | Direction |
|---|---|
| greater · more · later · after | Higher, or later in time |
| less · smaller · earlier · before | Lower, or earlier in time |
Default values. Any rule's Value cell can pre-fill the field, so people type less and records start out consistent. Fixed text stays as written; a reference or a calculation is worked out when the form (or a new line row) opens:
| Value cell | Fills with |
|---|---|
default value "Created" | the literal text "Created" |
default = 0 | the number 0 |
default = HEADER.currency_code | a value copied from another field |
default = amount / 100 | a calculation |
system date · today · now | the record's creation date — pair with display to show it read-only |