runbookify
← All plans
Payroll & Timekeeping / Expense Reimbursement

Reimbursement Status Tracker: Stop Answering 'Did My Expense Report Get Paid?'

Give every employee a self-service portal that shows exactly where their reimbursement stands — submitted, in review, approved, scheduled, paid — with an estimated pay date from your real pay calendar, while finance stays the only one who advances a status.

BeginnerAn afternoonBuilds onNext.jsSupabaseResend
What you'll build

A web portal where finance imports the reimbursement pipeline and the pay calendar, each employee logs in and sees only their own items with an estimated pay date, finance confirms every status transition by hand, and optional emails tell people the moment their status changes.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.

Before you start

  • A Supabase account (free)
  • A Vercel account (free)
  • A Resend account (free)
  • A reimbursement status CSV or Google Sheet (or an export from your expense tool)
  • Your payroll/AP pay calendar (dates checks/ACH actually go out)
  • Claude Code or any AI coding agent

The problem this kills

Every AP and payroll team knows the drip. "Hey, quick question — did my expense report get approved yet?" "Any idea when I'll see that reimbursement?" "It's been two weeks, is something wrong?" None of these messages are unreasonable. People are waiting on their own money and they have no way to see where it is. So they ask. And finance ends up running a manual help desk on top of actually processing the reimbursements.

The information already exists — it's sitting in a spreadsheet or your expense tool. It's just trapped where employees can't see it, and it has no connection to when money actually moves. The fix isn't more replies. It's a window: let people look up their own status, show them a realistic pay date based on your real pay calendar, and make finance the only hand that ever advances a status. You don't need to be a developer to build that window this afternoon.

What you'll build

A simple internal web portal. Finance imports two things: the reimbursement pipeline (each item with an employee, an amount, and a current status like submitted → in review → approved → scheduled → paid) and the pay calendar (the dates checks or ACH runs actually go out). The tool dedupes items by reimbursement ID so the same expense never shows up twice. Each employee logs in and sees only their own reimbursements, each with its current status and an estimated pay date calculated from the pay calendar — shown clearly as an estimate, never a promise.

Finance gets a private screen to confirm each status transition by hand. Advancing something to "approved" or "paid" is always a deliberate human action; the portal only ever reflects what finance has confirmed. Optionally, the moment finance moves an item, Resend emails the employee so they don't have to keep checking. The day-to-day result: employees self-serve, finance stops fielding status pings, and everyone trusts the number because a person — not a guess — put it there.

What's inside the Implementation Plan

The downloadable plan is a step-by-step file you paste into an AI coding agent. It opens by interviewing you about your business — what your status stages are actually called, where the pipeline data lives, exactly how your reimbursement and employee fields are named, how your pay calendar works (weekly? semi-monthly? off-cycle runs?), the lag between "approved" and money out the door, your typical and peak volumes, and your messy edge cases (split reimbursements, rejected items, resubmissions) — and then it tailors the data model, the pay-date math, and every later step to your answers. This is not a generic template; the agent reflects a short spec back to you and waits for your thumbs-up before it builds anything. From there it walks the agent through the import, the dedupe-by-ID logic, the per-employee status view, the estimated-pay-date calculation, the finance confirm-transition screen, and the optional status-change emails — each step with a ready-to-copy prompt. There's also a fallback so you can build the whole thing today with no integration at all: finance maintains a status CSV or Google Sheet and the portal reads from it.

The governance it includes (this is the point)

  • Login, so only your team and employees can use it. No public access to anyone's reimbursement data.
  • Row-level security, so each employee sees only their own items — never a coworker's amounts or status. Finance sees everything; everyone else sees just their row of the world.
  • A complete audit trail: every status change records who advanced it, from what to what, and when.
  • A hard human-in-the-loop gate: the portal never advances a status on its own. Finance confirms each transition — especially "approved" and "paid" — and only then does the change show. The tool reflects reality; it never invents it.
  • Duplicate guards: items are deduped by reimbursement ID on every import, so a re-uploaded sheet can't create phantom or double entries.

Who it's for

Finance and AP teams who feel like a status help desk — and the employees waiting on their reimbursements who just want to know where their money is without sending another message. If your reimbursement status lives in a spreadsheet or an expense tool nobody else can see, this turns that into a calm, self-service portal in an afternoon.

You've got this — paste the first prompt and let the agent interview you.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.