Skip to content

Resolve the category UX issues with receipt thresholds for receipt vs itemized receipt #94979

Description

@JmillsExpensify

Background

R2 introduced the Require fields rule type, which lets an admin require specific fields when an expense matches a condition. That framing only covers one direction: adding a requirement. In practice, admins also want to waive a requirement for a specific category — for example, requiring itemized receipts everywhere except a category where they don't apply.

This release generalizes the rule type to cover both directions and renames it accordingly. Require fields becomes Field requirements: a rule where the admin picks a category condition, chooses whether to Require or Do not require, and selects which fields the choice applies to. Receipt and itemized receipt are the only supported fields for the waive path in this release.

This is shipping under the same beta as the rest of Rules Revamp.

Scope

  • Rename the Require fields rule type to Field requirements everywhere it appears: the tab, the New rule creation option, and the rule's RHP.
  • Update the creation-option card copy to "Require specific expense fields or waive requiring them."
  • Add a Require / Do not require toggle to the Field requirements branch of the creation flow.
  • Support waiving Receipt and Itemized receipt only (no other fields on the waive path in this release).
  • Preserve existing Require fields rules under the renamed type; no behavior change to already-authored require rules.
Image

Product and design details

Rename

Everywhere the rule type currently reads Require fields now reads Field requirements:

  • The Rules page tab label.
  • The New rule RHP option — retitled Field requirements with the description "Require specific expense fields or waive requiring them" (replacing R2's "Receipts, categories, etc, when submitting").
  • The RHP title when configuring the rule.

Type pill and rule summary

The Type pill reflects the rule's direction: rows created with the Require direction show a Require pill; rows created with the Do not require direction show a Do not require pill.

The plain-language Rule column mirrors the same, e.g. "Require itemized receipt" for a require rule and "Do not require itemized receipt" for a waive rule.

Creation flow

Selecting Field requirements from the New rule RHP opens the configuration surface:

  • Condition: "If any expense matches" → a Category picker (unchanged from R2's condition step).
  • Direction toggle: a Require / Do not require segmented toggle, followed by "the following:".
  • Field list: the fields the toggle applies to, each with a checkbox.
    • Require selected: Description, Receipt, Itemized receipt, Attendees.
    • Do not require selected: Receipt, Itemized receipt only. Description and Attendees do not appear on the waive path in this release.

The flow ends with a Save rule button. After save, the user lands on the Field requirements tab with the new rule visible.

Scope of supported fields

The Do not require (waive) direction supports only Receipt and Itemized receipt in this release. The Require direction retains the full R2 field set (Description, Receipt, Itemized receipt, Attendees).

Examples

  • An admin opens + Rule, selects Field requirements, picks a category, leaves the toggle on Require, checks Itemized receipt, and saves → the rule shows a Require pill and reads "Require itemized receipt" for that category.
  • An admin creates a Field requirements rule, picks a category, switches the toggle to Do not require, checks Receipt, and saves → receipts are waived for that category, the row shows a Do not require pill, and reads "Do not require receipt." Only Receipt and Itemized receipt are selectable in this state.
  • An existing Require fields rule authored in R2 now appears under the renamed Field requirements tab, shows a Require pill, and continues to function, editable through the same flow.

Metadata

Metadata

Labels

ImprovementItem broken or needs improvement.ReviewingHas a PR in reviewWeeklyKSv2

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions