Skip to content

[No QA] Docs updates for E/A#99644 document split Reimbursable follows locked workspace rule - #100224

Merged
luacmartins merged 3 commits into
mainfrom
melvin-docs-99644-split-reimbursable-rule
Sep 21, 2026
Merged

luacmartins merged 3 commits into
mainfrom
melvin-docs-99644-split-reimbursable-rule

Conversation

@MelvinBot

@MelvinBot MelvinBot commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

Explanation of Change

Help site follow-up for #99644, which made split expenses follow the workspace cash-expense rule instead of copying reimbursable from the parent expense.

This PR is much smaller than it originally was. When it was opened, neither help article documented the behavior. Since then two commits landed on main that cover most of it:

  • f505e2a1fd added the Why don't I see the Reimbursable toggle on a split? FAQ entry to Split-Expenses.md.
  • 1e8f515919 restructured Workspace-Rules.md for the tabbed Rules page, and its Cash expenses bullet already states that an Always option hides the Reimbursable toggle on the expense and on every split created from it.

So the remaining delta is one file:

  • docs/articles/new-expensify/reports-and-expenses/Split-Expenses.md — extends the existing FAQ answer with the two things it didn't cover: the unlocked Reimbursable / Non-reimbursable modes seed each split from the original expense and show a changeable toggle, and the locked modes apply even to expenses created before an Admin changed the rule. Also points the cross-link at the Workspace Rules General tab section and adds a cash expenses rule keyword.

docs/articles/new-expensify/workspaces/Workspace-Rules.md is now unchanged from main. The earlier version of this PR added a flat bullet list there, which the Sep 16 merge reinstated after main had deleted it in the tabbed restructure — a conflict-resolution artifact using labels that no longer ship.

Every label was re-verified against the live dev UI rather than taken from the code. Note the correction: the Rules row reads Cash expenses, not Cash expense default as the first version of this PR claimed. The four options read Reimbursable, Non-reimbursable, Always reimbursable, Always non-reimbursable.

UI verification screenshots

Rules page, General tab — the row label is Cash expenses:

Rules page General tab showing the tab bar and the Cash expenses row

The four option labels:

Cash expenses option list with all four labels

Split row under Always non-reimbursable — no Reimbursable field:

Split row detail with no Reimbursable field present

Split row under plain Reimbursable — Reimbursable toggle present and changeable:

Split row detail showing a Reimbursable toggle set to on

Fixed Issues

$ #99140
PROPOSAL:

Tests

// TODO: The human co-author must fill out the tests you ran before marking this PR as "ready for review"
// Please describe what tests you performed that validates your changed worked.

  • Verify that no errors appear in the JS console

Offline tests

QA Steps

// TODO: The human co-author must fill out the QA tests you ran before marking this PR as "ready for review".
// Please describe what QA needs to do to validate your changes and what areas do they need to test for regressions.

  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari

@truph01, please review the files changed and confirm they reflect the current behavior. Then post a new comment saying @MelvinBot mark this PR as ready for review.

Co-authored-by: truph01 <truph01@users.noreply.github.com>
@MelvinBot
MelvinBot requested a review from a team September 2, 2026 21:34
@MelvinBot MelvinBot added the HelpDot Apply this label if the issue relates to ExpensifyHelp label Sep 2, 2026
@github-actions github-actions Bot changed the title Docs updates for E/A#99644 document split Reimbursable follows locked workspace rule [No QA] Docs updates for E/A#99644 document split Reimbursable follows locked workspace rule Sep 2, 2026
@OSBotify

This comment has been minimized.

@truph01

truph01 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

@MelvinBot Mark this PR as ready

@MelvinBot
MelvinBot marked this pull request as ready for review September 4, 2026 04:04
@melvin-bot

melvin-bot Bot commented Sep 4, 2026

Copy link
Copy Markdown

Concierge reviewer checklist:

  • I have verified the accuracy of the article
    • The article is within a hub that makes sense, and the navigation is correct
    • All processes, screenshots, and examples align with current product behavior.
    • All links within the doc have been verified for correct destination and functionality.
  • I have verified the readability of the article
    • The article's language is clear, concise, and free of jargon.
    • The grammar, spelling, and punctuation are correct.
    • The article contains at least one image, or that an image is not necessary
  • I have verified the formatting of the article
    • The article has consistent formatting (headings, bullet points, etc.) with other HelpDot articles and that aligns with the HelpDot formatting standards.
    • The article has proper text spacing and breaks for readability.
  • I have verified the article has the appropriate tone and style
    • The article's tone is professional, friendly, and suitable for the target audience.
    • The article's tone, terminology, and voice are consistent throughout.
  • I have verified the overall quality of the article
    • The article is not missing any information, nor does it contain redundant information.
    • The article fully addresses user needs.
  • I have verified that all requested improvements have been addressed

For more detailed instructions on completing this checklist, see How do I review a HelpDot PR as a Concierge Team member?

cc @kadiealexander

@melvin-bot

melvin-bot Bot commented Sep 4, 2026

Copy link
Copy Markdown

@hoangzinh @truph01 @kadiealexander One of you needs to copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@melvin-bot
melvin-bot Bot removed the request for review from a team September 4, 2026 04:04
@MelvinBot

MelvinBot commented Sep 4, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Done — this PR is now ready for review.

Verified via the GitHub API: isDraft is false, and review is requested from Expensify/pullerbear and stephanieelliott. You're still the assignee.

One thing to note: the Tests and QA Steps sections still contain the // TODO: The human co-author must fill out... placeholders. I leave those for you to fill in rather than writing test steps on your behalf. Since this is a [No QA] docs-only PR (two docs/articles/ markdown files), "Same as tests" or a short note about reviewing the HelpDot preview is probably all that's needed.

All checks are passing except Check independent approval, which is expected until a reviewer approves.


view run · view recording

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

HelpDot Documentation Review

Overall Assessment

This PR documents how the workspace Cash expense default rule determines the reimbursable status of each split, and expands the Cash expense default option description in Workspace Rules. The changes add a well-structured new section to Split-Expenses.md and a clarifying sentence to Workspace-Rules.md. Both changes are cohesive, accurate, and address a real support-confusion scenario (a missing Reimbursable toggle).

Scores Summary

  • Readability: 9/10 - The new section is clear, scannable, and uses a well-formatted bulleted breakdown of the four rule states plus a concrete example. The Workspace Rules addition is a single dense sentence but remains readable.
  • AI Readiness: 9/10 - New heading is task-based ("How the Cash expense default rule sets Reimbursable on each split"), uses only H2 headings, and keywords were expanded with realistic search/troubleshooting phrases (e.g. "reimbursable toggle missing on split"). internalScope is present. Full feature names used throughout.
  • Style Compliance: 8/10 - Exact UI labels are bolded correctly (Reimbursable, Non-reimbursable, Always reimbursable, Always non-reimbursable). Cross-link uses descriptive anchor text and a relative link. Screenshot placeholder follows the exact HTML-comment format with a specific Purpose. Minor inconsistency: "Company card expenses" capitalization vs "company cards" elsewhere.

Key Findings

  • New H2 in Split-Expenses.md is fully compliant with the task-based heading rules and single-title structure.
  • Strong AI retrieval optimization: keyword list now includes the exact confusion phrasing members would search.
  • Excellent cross-linking: single relative link with descriptive anchor text, placed after explanatory prose (not inside steps), reinforcing a genuine dependency.
  • Screenshot suggestion is justified with a clear, non-generic Purpose (prevents members from reporting the intentionally hidden toggle as a bug).
  • Workspace-Rules.md change keeps the four options consistent with the Split-Expenses section, avoiding drift between the two articles.
  • Minor: consider consistent casing for descriptive references to "company card" expenses.

Recommendations

  • Optional: align casing on "Company card expenses" / "company cards" for consistency across both articles.
  • Optional: the Workspace Rules sentence is long; it reads fine but could be split for scannability. Not required.
  • No blocking issues. Changes are accurate, well-scoped, and governance-compliant.

Files Reviewed

  • docs/articles/new-expensify/reports-and-expenses/Split-Expenses.md - New task-based section, updated keywords, compliant cross-link and screenshot placeholder. Approved.
  • docs/articles/new-expensify/workspaces/Workspace-Rules.md - Expanded Cash expense default description with exact UI options. Approved.

Note: This review reflects only the proposed changes in the diff.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ddc0ea68a6

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".


## How the Cash expense default rule sets Reimbursable on each split

Every split inherits its reimbursable status from the workspace **Cash expense default** rule rather than from the original expense:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Limit policy-value inheritance to locked modes

For the editable Reimbursable and Non-reimbursable modes, this sentence states the opposite of the actual behavior and the next bullet: getSplitReimbursable() in src/libs/actions/IOU/SplitExpenseItems.ts returns the original expense's parentReimbursable value unless disabledFields.reimbursable is true. A reader splitting an expense whose value differs from the current unlocked default would therefore incorrectly expect the split to be reset; qualify this claim so it applies only to the two locked Always modes.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valid catch — fixed, though by deleting this section rather than qualifying the sentence.

You were right about the mechanism. getSplitReimbursable() only substitutes the policy default when disabledFields.reimbursable === true, and otherwise returns parentReimbursable. So the lead sentence's "rather than from the original expense" was wrong for the two unlocked modes.

While checking this I found that main already documents the locked case in the Why don't I see the Reimbursable toggle on a split? FAQ entry (added by f505e2a1fd after this PR branched), so the whole section was redundant. I removed it and added the unlocked-mode behavior to that existing answer instead:

Under the plain Reimbursable or Non-reimbursable options the value isn't fixed, so each split starts with the original expense's value and shows a Reimbursable toggle you can change.

Verified against the live dev UI both ways — locked shows no toggle, unlocked shows a changeable one.

- **Max expense amount** – Set a per-expense spending cap (supports decimals).
- **Max expense age (Days)** – Define how old an expense can be (whole numbers only).
- **Cash expense default** - Choose whether cash expenses are reimbursable by default. Note: [Workspace Merchant Rules](/articles/new-expensify/workspaces/Workspace-Merchant-Rules) can also set reimbursable status on a per-merchant basis.
- **Cash expense default** - Choose whether cash expenses are reimbursable by default. The four options are **Reimbursable**, **Non-reimbursable**, **Always reimbursable**, and **Always non-reimbursable**. **Reimbursable** and **Non-reimbursable** only set a starting value, so members can still change it on an individual expense. **Always reimbursable** and **Always non-reimbursable** lock the value, so the **Reimbursable** toggle is hidden on the expense and on every split created from it. Note: [Workspace Merchant Rules](/articles/new-expensify/workspaces/Workspace-Merchant-Rules) can also set reimbursable status on a per-merchant basis.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability / scannability: This bullet now packs the four option names, their locking behavior, and split behavior into a single dense run-on, which hurts scannability (HELP_AUTHORING_GUIDELINES.md — concise/scannable, Section 5 formatting clarity). Consider breaking the four options into a short nested list so each behavior is easy to scan — e.g. group **Reimbursable**/**Non-reimbursable** (sets a starting value only; member can change it) separately from **Always reimbursable**/**Always non-reimbursable** (locks the value; hides the Reimbursable toggle on the expense and every split created from it).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed by reverting this file entirely — the bullet is gone.

This whole list shouldn't have been here. main deleted it in 1e8f515919 when the Rules page was restructured into tabs, and the merge I did on Sep 16 reinstated it as a conflict-resolution artifact. It also used pre-restructure labels (Cash expense default, Billable default, Merchant-based automation) and duplicated bullets that now live under How to set basic rules on the General tab, plus it swallowed the blank line before the --- separator.

main's Cash expenses bullet already states the thing this PR set out to document: "When you select an Always option, the Reimbursable toggle is hidden on the expense and on every split created from it." So there was nothing left to add here.

I also confirmed on the live dev UI that the row label is Cash expenses, not Cash expense default — so the reinstated bullet was documenting a label that no longer ships.


This applies even when the original expense was created before the rule was changed. For example, if a cash expense was created while the rule was **Reimbursable** and an Admin later switched the rule to **Always non-reimbursable**, splitting that expense produces non-reimbursable splits.

To review or change the rule, [learn how to configure Workspace Rules](/articles/new-expensify/workspaces/Workspace-Rules).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scope / cross-linking: This new section largely explains how the workspace Cash expense default rule itself behaves, which is workspace-rule configuration detail owned by the Workspace Rules article (HELP_AUTHORING_GUIDELINES.md Section 1 & 6 — one workflow per article; avoid combining split behavior with workspace design). The relative cross-link and anchor text are good. Recommend keeping this section focused on the split-specific outcome (whether the Reimbursable toggle appears/locks on a split) and deferring the full rule explanation to the linked Workspace Rules article, to avoid duplicating content and diluting retrieval precision.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed — the section is removed.

Your scope call was right, and it turned out to be moot: main already covers this in the Why don't I see the Reimbursable toggle on a split? FAQ entry, added by f505e2a1fd after this PR branched. Keeping a second H2 explaining the same rule would have duplicated content and diluted retrieval exactly as you describe.

I kept only the two facts that FAQ answer was missing — the unlocked-mode behavior and that locked modes apply even to expenses created before the rule changed — and folded them into it. The full rule configuration detail now stays in the Workspace Rules article, and the cross-link points at its General tab section rather than the article root.

- **Max expense amount** – Set a per-expense spending cap (supports decimals).
- **Max expense age (Days)** – Define how old an expense can be (whole numbers only).
- **Cash expense default** - Choose whether cash expenses are reimbursable by default. Note: [Workspace Merchant Rules](/articles/new-expensify/workspaces/Workspace-Merchant-Rules) can also set reimbursable status on a per-merchant basis.
- **Cash expense default** - Choose whether cash expenses are reimbursable by default. The four options are **Reimbursable**, **Non-reimbursable**, **Always reimbursable**, and **Always non-reimbursable**. **Reimbursable** and **Non-reimbursable** only set a starting value, so members can still change it on an individual expense. **Always reimbursable** and **Always non-reimbursable** lock the value, so the **Reimbursable** toggle is hidden on the expense and on every split created from it. Note: [Workspace Merchant Rules](/articles/new-expensify/workspaces/Workspace-Merchant-Rules) can also set reimbursable status on a per-merchant basis.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Readability / scannability: This bullet now packs the four option names, their locking behavior, and split behavior into a single dense run-on, which hurts scannability (HELP_AUTHORING_GUIDELINES.md — concise/scannable, Section 5 step/formatting clarity). Consider breaking the four options into a short sub-list (or a brief nested list) so each behavior is easy to scan, e.g. list **Reimbursable**/**Non-reimbursable** (starting value only, member can change) separately from **Always reimbursable**/**Always non-reimbursable** (locks the value; hides the Reimbursable toggle on the expense and its splits).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate of the other comment on this line — resolved the same way: docs/articles/new-expensify/workspaces/Workspace-Rules.md is reverted entirely, so this bullet no longer exists. It was a merge artifact that reinstated a list main had already deleted in the tabbed Rules restructure.


This applies even when the original expense was created before the rule was changed. For example, if a cash expense was created while the rule was **Reimbursable** and an Admin later switched the rule to **Always non-reimbursable**, splitting that expense produces non-reimbursable splits.

To review or change the rule, [learn how to configure Workspace Rules](/articles/new-expensify/workspaces/Workspace-Rules).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scope / cross-linking: This section explains how the workspace Cash expense default rule behaves, which is workspace-rule configuration detail owned by the Workspace Rules article (HELP_AUTHORING_GUIDELINES.md Section 1 & 6 — one workflow per article; avoid combining split behavior with workspace design). The cross-link is good; keep this section focused on the split-specific outcome (whether the Reimbursable toggle appears on a split) and defer the full rule explanation to the linked Workspace Rules article to avoid duplicating/diluting retrieval.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate of the other comment on this line — resolved the same way: the new H2 section is removed, and the two facts it added that main didn't already have are folded into the existing Why don't I see the Reimbursable toggle on a split? FAQ answer.

@melvin-bot
melvin-bot Bot requested a review from luacmartins September 4, 2026 07:58
@luacmartins

Copy link
Copy Markdown
Contributor

@hoangzinh we have a few suggestions and conflicts to address

@hoangzinh

Copy link
Copy Markdown
Contributor

@hoangzinh we have a few suggestions and conflicts to address

@truph01 Given you're assignee of this PR, can you ask MelvinBot to address those suggestions?

@luacmartins

Copy link
Copy Markdown
Contributor

Bump @truph01

1 similar comment
@luacmartins

Copy link
Copy Markdown
Contributor

Bump @truph01

@OSBotify

This comment has been minimized.

@luacmartins

Copy link
Copy Markdown
Contributor

@truph01 is this PR ready for review again?

@luacmartins

Copy link
Copy Markdown
Contributor

@truph01 bump

@truph01

truph01 commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

@MelvinBot Could you check all the above review comments?

Review follow-up on #100224.

- Revert Workspace-Rules.md entirely. The bullet list it added was
  reinstated by the main merge after main had deleted it in the tabbed
  Rules restructure, and it used pre-restructure labels. Main's General
  tab 'Cash expenses' bullet already documents the Always-option locking
  and the hidden Reimbursable toggle on splits.
- Drop the new Split-Expenses.md H2 section. Main already answers this in
  the 'Why don't I see the Reimbursable toggle on a split?' FAQ entry, so
  the section duplicated workspace-rule config detail owned by the
  Workspace Rules article.
- Extend that FAQ entry with the two facts main lacked: the unlocked
  Reimbursable/Non-reimbursable modes seed each split from the original
  expense and show a changeable toggle, and the locked modes apply even
  to expenses created before the rule changed.
- Point the cross-link at the General tab section and add a 'cash
  expenses rule' keyword.

Co-authored-by: truph01 <truph01@users.noreply.github.com>
@MelvinBot

Copy link
Copy Markdown
Contributor Author

🤖 Review comments addressed — and this PR shrank a lot

All five review comments are resolved, and I replied in each thread. But the headline is that main already shipped most of what this PR set out to document, so I cut the redundant content rather than polishing it. The PR is now a one-file, one-paragraph change.

Pushed as aaac1f2 — changedFiles is now 1.

What main already has

Two commits landed after this PR branched:

Commit What it added
f505e2a1fd The Why don't I see the Reimbursable toggle on a split? FAQ entry
1e8f515919 The tabbed Rules restructure, whose Cash expenses bullet already says an Always option hides the Reimbursable toggle on the expense and every split created from it

Two things worth your attention

1. The Sep 16 merge left an artifact. The earlier version of this PR added a flat bullet list to Workspace-Rules.md. main had deleted that list in the tabbed restructure, and the merge resolution put it back — 10 bullets using labels that no longer ship (Cash expense default, Billable default, Merchant-based automation), duplicating bullets that now live under the General tab, and swallowing the blank line before a --- separator. I reverted the file to main entirely.

2. The original PR documented the wrong label. It claimed the Rules row reads Cash expense default. It reads Cash expenses. Both strings exist in en.ts — cashExpenses and cashExpenseDefault — so the code alone is ambiguous. I verified on the live dev UI:

Rules page General tab showing the tab bar and the Cash expenses row

The remaining change

One file, extending main's existing FAQ answer with the two facts it didn't cover:

…the Reimbursable toggle is hidden — even if the original expense was created before an Admin changed the rule.

Under the plain Reimbursable or Non-reimbursable options the value isn't fixed, so each split starts with the original expense's value and shows a Reimbursable toggle you can change. Imported company card expenses are always non-reimbursable, so their splits don't show the toggle either.

Plus a cross-link now anchored to the General tab section instead of the article root, and a cash expenses rule keyword.

Per-comment resolution
Comment Resolution
codex — Split-Expenses.md:77, policy inheritance claim wrong for unlocked modes Valid. getSplitReimbursable() only substitutes the policy default when disabledFields.reimbursable === true; otherwise it returns parentReimbursable. Fixed by deleting the section and stating the unlocked behavior correctly in the FAQ answer.
github-actions — Workspace-Rules.md:39, dense run-on bullet File reverted to main; bullet no longer exists.
github-actions — Split-Expenses.md:85, scope / duplicating workspace-rule detail Valid and moot. Section removed; rule configuration detail stays in the Workspace Rules article.
github-actions — Workspace-Rules.md:39 (duplicate) Same as above.
github-actions — Split-Expenses.md:85 (duplicate) Same as above.
Verification and tests

Behavior re-confirmed on the live dev web UI both ways:

Rule set to Always non-reimbursable — split row shows only Description, Category, Date, Report:

Split row detail with no Reimbursable field present

Rule set to plain Reimbursable — split row gains a changeable Reimbursable toggle:

Split row detail showing a Reimbursable toggle set to on

All four option labels:

Cash expenses option list with all four labels

Tests: I could not run npm run spell-changed locally — the command was blocked in this environment. CI's spellcheck job passed on aaac1f2, which is the same gate. No other local AI tests apply to a docs-only markdown change (no app code, shell scripts, or docs routing/config touched, and no files added or removed).

Checks: everything passes except Check independent approval, which is expected until a reviewer approves. The merge conflicts luacmartins mentioned are gone — mergeable is MERGEABLE.


One judgment call worth flagging: I deleted rather than rewrote. If you'd rather keep a dedicated H2 section in Split-Expenses.md for discoverability — even though it overlaps the FAQ entry — say so and I'll add a trimmed, split-scoped version back.

The Tests and QA Steps sections still have the // TODO placeholders for you to fill in. @truph01 @luacmartins @hoangzinh

@OSBotify

Copy link
Copy Markdown
Contributor

A preview of your ExpensifyHelp changes have been deployed to https://bc9e2467.helpdot.pages.dev ⚡️

Updated articles:

@luacmartins
luacmartins merged commit 6291efe into main Sep 21, 2026
21 of 24 checks passed
@luacmartins
luacmartins deleted the melvin-docs-99644-split-reimbursable-rule branch September 21, 2026 19:44
@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/luacmartins in version: 9.4.92-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/lakchote in version: 9.4.92-8 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

Bundle Size Analysis (Sentry):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

HelpDot Apply this label if the issue relates to ExpensifyHelp

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants