Skip to content

[Due for payment 2026-11-02] Bulk edit company card transaction start dates #101355

Open

Description

@joekaufmanexpensify

@JmillsExpensify and I were discussing recent customer feedback about bulk adjusting company card start date and think this is a quick win worth adding.

Details

  • Today, admins can update a transaction start date for one assigned company card from its details page. They can choose a custom date or From the beginning.
  • Updating this date already triggers a re-scrape for that card. Transactions before the selected date are excluded, and transactions already stored for the card are deduplicated.
  • We are not changing that existing import, date-filtering, or deduplication behavior in this issue. Just adding an entry point to adjust this for multiple cards at once using the existing logic.
  • The Company cards bulk-actions menu already shows card-specific actions only when every selected card is assigned. If any selected card is unassigned, it hides those actions while keeping generic actions such as Export as CSV available.
  • Bulk action: add an Update transaction start date action to that menu, using the same assigned-cards-only eligibility rule.
  • Transaction start date page: selecting the action opens the existing transaction-start-date page with copy clarifying that the chosen date will apply to all selected cards. I think that is sufficient versus showing all the selected cards on this page. Updated body copy:
    • Choose a transaction start date for all selected cards. We'll sync transactions from that date onwards, excluding those we already imported.
  • Bulk update: saving sends a new command that accepts multiple card IDs and applies the existing per-card transaction-start-date behavior to every selected card.
  • Success toast: after the update succeeds, show a success growl on the company card page as feedback.

Mockups

Image Image Image
Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. melvin-bot commented on Sep 16, 2026

    @melvin-bot

    Triggered auto assignment to Design team member for new feature review - @shawnborton (NewFeature)

  2. joekaufmanexpensify commented on Sep 16, 2026

    @joekaufmanexpensify
    ContributorAuthor

    @shawnborton would you be able to help put together a quick set of mocks for this bulk flow before we proceed?

  3. shawnborton commented on Sep 17, 2026

    @shawnborton
    Contributor

    Figma here.

    Here is the flow you are requesting:

    Image Image Image

    If we wanted to do something more subtle, we could growl for success? cc @Expensify/design for thoughts on that, not sure if we do that elsewhere or not:

    Image
  4. shawnborton commented on Sep 17, 2026

    @shawnborton
    Contributor

    (Feel free to make edits/copy changes directly in the Figma!)

  5. dannymcclain commented on Sep 17, 2026

    @dannymcclain
    Contributor

    Mocks look good and IMO this is an ideal place to use a toast for a success message. 🍞

  6. joekaufmanexpensify commented on Sep 17, 2026

    @joekaufmanexpensify
    ContributorAuthor

    Nice, looking really great. I'm not aware of any existing growls/toasts in newdot today (and codex agrees). That said, I agree this would be a very ideal place to use one, so down to get toasty if everyone is good with the new pattern. Otherwise, the success page looks great too.

  7. dubielzyk-expensify commented on Sep 17, 2026

    @dubielzyk-expensify
    Contributor

    Looks good to me too. Agree with Danny it's a perfect use of toast 👍

    I'm not aware of any existing growls/toasts in newdot today (and codex agrees)

    We've just started using it. There should be a PR already using it if not already merged.

  8. shawnborton commented on Sep 18, 2026

    @shawnborton
    Contributor

    Sweet, let's do 🍞 then!

  9. joekaufmanexpensify commented on Sep 18, 2026

    @joekaufmanexpensify
    ContributorAuthor

    Nice, sounds great. I will update the OP with the mocks and get this going. 👍

  10. 42 remaining items

  11. melvin-bot commented on Oct 27, 2026

    @melvin-bot

    @hungvu193 — to hire @Eskalifer1 on Upwork, add the External label so a job is created and the offer is sent automatically.

  12. changed the title [-]Bulk edit company card transaction start dates[/-] [+][Due for payment 2026-11-02] Bulk edit company card transaction start dates[/+] on Oct 27, 2026
  13. added
    ReviewingHas a PR in review
    Awaiting PaymentAuto-added when associated PR is deployed to production
    and removed on Oct 28, 2026
  14. melvin-bot commented on Nov 1, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  15. melvin-bot commented on Nov 1, 2026

    @melvin-bot

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
    • [BugZero Assignee] I have created a GH issue for creating/updating the regression test once above steps have been agreed upon
  16. Eskalifer1 commented on Nov 2, 2026

    @Eskalifer1
    Contributor

    Contributor+ Checklist:

    • [Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.

      Link to the comment on the PR: N/A - new feature

    • [Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.

      Link to discussion: N/A

    • [Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.

    Regression Test Proposal

    Precondition:

    • Your workspace has Company Cards with several cards assigned to you.

    Test:

    1. Go to Company Cards > Select some cards > Update transacton card date.
    2. Try to update the date.
    3. Verify that you can update the date

    Do we agree 👍 or 👎

  17. Eskalifer1 commented on Nov 2, 2026

    @Eskalifer1
    Contributor

    Note about regressions:

    We had one regression mention here: #101355 (comment)

    It was demoted, since the behavior was correct, it just felt strange from a UX perspective(#104957 (comment)):

    Yes, I agree. We can even close this issue, since the Growl only shows when the request is successful and the request was actually successful. Currently, our API requests work in a queue, but the optimistic data is applied immediately after the action.

    We decided that we should implement in-app notifications (Growl) for a successful action in a separate issue dedicated specifically to this, rather than as part of this issue(https://expensify.slack.com/archives/C01GTK53T8Q/p1792980628220839):

    That makes sense to me

    At first, we weren't quite sure what to do, so we just removed Growl(#104957), but later decided that the way it works now suits us, so we reverted it(#105140).

    Therefore, it was decided to simply do nothing about the existing issue:

    Yeah, I'm not super concerned about this case. I think it's very possible no real customers will ever experience this because removing a feed is an extremely rare action. If we close this issue for now, are you guys still thinking that we should get rid of the growl, or that it's going to cause a bunch of issues?
    From a UX perspective, I feel like it works quite well.

    And issue was closed(#104950 (comment)):

    As discussed here: https://expensify.slack.com/archives/C01GTK53T8Q/p1792980628220839
    We can close this issue once the revert reaches prod.

  18. Eskalifer1 commented on Nov 2, 2026

    @Eskalifer1
    Contributor

    Price increase request

    Mandatory

    Proposed amount: N/A - I'll let the CME determine an appropriate amount based on the scope and impact of this work.

    Why the work exceeded the issue: The scope of the issue stayed the same throughout, but it was large from the start: a new bulk action, a new page flow, a new multi-card API command and a success toast, all delivered in one frontend PR. The size of the change, not any shift in requirements, is what pushed the effort past the job price.

    Regressions caused by this PR: N/A

    Optional

    Files touched: The PR changes 51 files, with 758 lines added and 167 removed.

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

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionDailyKSv2NewFeatureSomething to build that is a new item.ReviewingHas a PR in review

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions