Expensify Bulk Receipt Categorizer
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Expensify Bulk Receipt Categorizer lets you assign categories to multiple receipts in a single operation. Instead of opening each receipt individually, navigating to the category section, selecting a category, and saving — repeating this for every single receipt — this tool provides a unified checklist of all receipts on the current page. You can filter receipts by merchant name to quickly find the ones you want to categorize. Select any number of receipts using checkboxes, choose a category from the dropdown, and click Apply. The tool then automatically processes each selected receipt — opening the edit modal, setting the chosen category, and saving the changes. This turns what could be dozens of manual operations into a single batch action, making expense report preparation and bookkeeping significantly faster and more consistent.
WHERE IT RUNS
This script runs exclusively on the Expensify web application in your browser. It activates on the receipt list page, expenses view, and reports dashboard within the Expensify interface. It requires the BotGentz extension to inject and execute the script. The tool does not work on the Expensify mobile app, the API, or any third-party Expensify clients — only the web-based Expensify interface accessed through a Chromium-based or Firefox browser. It specifically targets pages under *.expensify.com, including the Expensify receipts and expenses views.
HOW TO USE
After installing the script via BotGentz, navigate to your Expensify dashboard and open the Receipts, Expenses, or Reports page. The tool automatically detects the receipt list and displays a floating panel on the right side. The panel shows all receipts on the current page, with checkboxes next to each receipt entry. Each receipt displays its merchant name, amount, date, and existing category. Use the search box to filter by merchant name to narrow down your selection. Check the boxes for every receipt you want to categorize. Below the receipt list, select a category from the dropdown — this loads available categories from your Expensify account or falls back to common defaults. Click "Apply Category" and confirm the action. The tool will process each selected receipt one by one — opening the edit modal, setting the chosen category, and saving. A status message appears when the operation completes, showing how many receipts were successfully categorized.
THE ACTUAL MECHANISM — WHY IT WORKS
Expensify's web interface is built with React and uses a component-based rendering system for its expense management. The receipt list is rendered as table rows or list items, each containing receipt metadata and action buttons. This tool scans the DOM for receipt items using multiple selector patterns that Expensify consistently uses across versions. For each receipt, it extracts the merchant, amount, date, and existing category from the visible text content and data attributes. Each receipt is assigned a unique identifier from data attributes or checkbox values. When categorizing, the tool locates the edit button within each receipt item and triggers a click event that opens Expensify's edit modal. The modal contains a category dropdown or input field where the category can be selected. The tool selects the chosen category using React-friendly event dispatching — setting the value via the native setter and dispatching both "input" and "change" events to ensure React registers the update. The tool then clicks the modal's save/update button, waits for the modal to close, and proceeds to the next receipt. This approach works without making direct API calls, which would require authentication credentials and knowledge of Expensify's internal API structure. By using the existing UI, the tool works within Expensify's own permission and validation system, and continues to function even if the underlying API changes.
THE PANEL
The floating panel is fully draggable — click and drag the header to reposition it anywhere on the page. The panel's position is saved per site in localStorage, so it reappears exactly where you left it when you return to the receipts page. Double-click the header to snap the panel to the nearest edge (left or right). A collapse button minimizes the panel to a small tab showing a receipt emoji badge, keeping it out of the way while still accessible. The receipt list inside the panel is scrollable and resizes vertically based on the number of receipts. Pressing Escape while the panel is focused closes it completely; reopening is done via a small button injected near the page toolbar. All panel interactions are non-blocking — Expensify's main UI remains fully responsive while the panel is open, and the panel updates automatically when you navigate between pages.
PLEASE NOTE
This script requires the BotGentz extension (free) to run user scripts on Expensify. Expensify frequently updates its web interface and modal structures; if the tool stops working, check for an updated version within BotGentz's script repository. This tool does not store, transmit, or log any receipt data, merchant information, or category assignments — all operations occur locally in your browser with no external network requests except those made by Expensify itself. Category assignments are applied through Expensify's own UI event system, so all changes respect your account permissions and policy settings. The tool does not bypass Expensify's security or permission system; it simply automates the clicks you would otherwise perform manually. For accounts with a large number of receipts, the tool may take several minutes to complete the operation, as each receipt is processed sequentially with delays to avoid overwhelming the UI. A progress indicator shows which receipt is currently being processed. Always double-check your selections and category choice before applying changes, as bulk categorization affects expense reporting and accounting. The tool only affects receipts visible on the current page; to categorize all receipts, use Expensify's built-in pagination controls or adjust your filters to show all relevant receipts. The category dropdown is populated from categories detected on the page, with fallback defaults for common expense categories.