This app runs inside the BotSurf browser. Don't have it yet? Get the app or extension now!

Expensify Receipt Match Highlighter

Finance · All
0 installs · Verified BotGentz app
Launch App
Opens in BotSurf — try it free, no account needed.
CategoryFinance
PlatformAll
Pricing Free
Installs0
Download BotSurf to use — free
No account needed for free apps. Once BotSurf is open, find this app in Apps from the + menu.

About this app

WHAT IT DOES

Expensify Receipt Match Highlighter scans your Expensify expense reports and highlights which expenses have receipts attached and which are missing. Each expense row is color-coded: green for matched (receipt attached), yellow for warning (receipt attached but potential mismatch or issue), and red for missing (no receipt). A summary panel shows the total expenses, matched count, warning count, missing count, and an overall match rate percentage. The panel also lists all expenses with missing receipts so you can quickly identify what needs attention. You can copy the match summary as text for reporting or follow-up. This helps you ensure every expense has a receipt, streamline the approval process, and avoid compliance issues.

WHERE IT RUNS

This script runs on Expensify expense report pages (*.expensify.com/*). It operates entirely within your browser tab, reading the page's DOM to locate expense rows, receipt attachments, and metadata. The script cannot access other tabs, your browsing history, bookmarks, downloads, or any data outside the current page. All settings—including highlight colors, match status badge visibility, filter preference, and auto-analyze preference—are stored locally using GM_setValue and never transmitted anywhere.

HOW TO USE

After installing with the BotGentz extension, the script automatically analyzes expense reports you view (if auto-analyze is enabled). The panel shows a summary with total expenses, matched, warning, and missing counts, plus the match rate. Each expense row is highlighted with a colored left border and a status badge (✅ Matched, ⚠️ Warning, ❌ Missing). Click "Analyze Receipts" to manually trigger analysis if auto-analyze is off. Customize highlight colors for matched, warning, and missing statuses. Toggle match status badges on or off, and enable filtering by match status. Click "Copy Match Report" to copy a formatted summary to your clipboard.

THE REAL MECHANISM

The script detects Expensify expense rows using multiple selectors (.expense-row, .expense-item, .expense-line, .report-item) to handle different Expensify UI versions. For each expense, it extracts the description from .description, .expense-name, or .merchant, the amount from .amount or .expense-amount, the date from .date or .expense-date, and the category from .category or .expense-category. Receipt presence is detected by scanning for receipt indicators like .receipt-thumbnail, .receipt-image, .receipt-icon, .attachment-icon, .has-receipt, or [data-testid="receipt"]. If a receipt element is found, the expense is marked as matched. If no receipt element is found but the row text contains "receipt," "attachment," or "paperclip," it's also considered matched. The warning status is applied when a receipt exists but the amount is $0 (potential issue). The summary calculates match rate as (matched / total) × 100. Highlighting applies a left border color and background tint to each row, and adds a status badge next to the description. All DOM manipulation uses safe methods with no innerHTML from untrusted content.

THE PANEL

The Receipt Match badge is displayed within the BGPanel component, which you can drag anywhere on your screen by its header. It snaps to the nearest edge when released, keeping your workspace organized. The panel collapses to a small bubble showing only the emoji icon when minimised—click to expand it again. You can resize the panel horizontally to see more of the summary and missing receipt list. Press the Escape key to collapse the panel instantly. Your panel position and size are saved per-site.

PLEASE NOTE

This script requires the free BotGentz browser extension to function. Expensify frequently updates its UI, which may change class names, data-testid attributes, and DOM structure—the script may require updates to maintain compatibility. The receipt detection relies on the presence of receipt indicator elements on the page; if the page uses a different receipt visualization, the script may not detect all receipts. The warning status is a simple heuristic based on amount being zero; more sophisticated matching logic may be needed for complex cases. The script never reads or writes password fields, hidden inputs, or file inputs. It stores only your highlight colors, match status badge visibility, filter preference, and auto-analyze preference locally. No expense data, receipt information, or personal information is ever collected, transmitted, or shared.

Similar Apps

Log in to BotGentz

Suggest an App

Tell us what you'd find useful — if we build it, we'll email you the moment it's ready.