Guides / How to build

How to Build an Expense Tracker: Receipts, Approvals and Reimbursements

Build an expense tracker for yourself or a team: quick entry, receipt photos, approvals, reimbursement status, accountant-ready exports and AI receipt reading.

Mythex Team · 2026-09-29 · 5 min read

An expense tracker records what was spent, on what, by whom, with a receipt attached. For a freelancer it's a tidy record for tax time. For a team it's the flow from "I paid for this" to "you've been reimbursed": submit, approve, pay, export. To build one you need fast entry from a phone, receipt uploads, categories, an approval step for teams, and an export your accountant can use. Keep the entry screen fast — if logging an expense takes longer than a minute, people stop doing it.

Personal, freelance or team?

TypeWho uses itWhat matters most
PersonalOne person tracking daily spendingSpeed of entry, categories, monthly totals
Freelancer or sole traderOne person, for tax and client rebillingReceipts, tax amounts, "billable to client" flag, exports
Team or companyEmployees, approvers, financeSubmission, approval, reimbursement status, policy checks, audit trail

If what you really want is to plan monthly spending against targets, read how to build a budget app instead. The rest of this guide focuses on freelancer and team expense tracking.

What an expense tracker needs

Pages

  • Add expense — amount, currency, date, merchant, category, note, receipt photo. On phones, open the camera directly.
  • My expenses — list with status (draft, submitted, approved, rejected, reimbursed) and filters.
  • Expense report (optional) — group expenses from one trip or month and submit them together.
  • Approvals — for managers: pending items with the receipt visible, approve or reject with a reason.
  • Finance view — approved items waiting for reimbursement, mark as paid, export.
  • Settings — categories, policy limits, approvers, currencies.

Data

  • Users — name, role, manager (who approves their expenses).
  • Expenses — user, date, merchant, amount (integer cents), currency, tax amount, category, project or client, billable flag, note, status, report.
  • Receipts — expense, file, uploaded date.
  • Reports — user, title, period, status.
  • Approval events — expense or report, who, action, reason, timestamp.
  • Categories and policies — for example "Meals: up to a set amount per day, receipt required above a threshold".

Keep an append-only log of approval events rather than just overwriting a status. When someone asks "who approved this?", the answer is in the log.

Permissions

  • Employees see and edit only their own expenses, and only while they're drafts or rejected.
  • Approvers see their team's submitted expenses.
  • Finance or admins see everything, mark reimbursements and export.

An approved expense should lock: changing the amount after approval must send it back for approval. Our guide on role-based access control covers building these roles.

Decisions and trade-offs

Single expenses or reports. Submitting each expense on its own is simpler. Grouping into reports suits travel and monthly claims. Start with single expenses unless your team already works in reports.

One step or two-step approval. A manager approval is enough for most small teams. Add a finance step when amounts are large or policy requires it.

Policy checks. Simple rules — category limits, receipt required above an amount, no weekend meals — can flag expenses automatically. Flag, don't block; approvers make the call.

Receipt reading. AI models and OCR services can read the merchant, date and total from a photo. It saves typing but makes mistakes, so pre-fill the form and ask the person to confirm. The AI provider's key must stay on the server. See how to add AI features to your app.

Currencies. If people travel, store the original amount and currency, and the converted amount at the rate used, with the date of that rate.

Paying people back. The tracker records that reimbursement happened; the actual payment usually goes through payroll or your bank. Keep it that way at first.

Example first prompt

Build an expense tracking app for a 20-person company. Employees add expenses from their phone: amount, currency, date, merchant, category, project, note, and a receipt photo taken with the camera. Store amounts as integer cents. Expenses start as drafts; employees submit them. Each employee has a manager who approves or rejects submitted expenses with a reason, seeing the receipt next to the details. Flag, but don't block, expenses over the category limit or without a receipt above 25 dollars. Once approved, an expense is locked; editing it sends it back for approval. Finance users see all approved expenses, mark them reimbursed in batches, and export a CSV with date, employee, merchant, category, project, amount, currency, status and a receipt link. Log every status change with who and when. Roles: employee, manager, finance. Email and password login, a database, and file storage for receipts. Seed two teams and sample expenses.

Build steps

  1. Add-expense screen on a phone. Camera upload, sensible defaults (today's date, last-used category), under a minute to complete. See how to add file uploads to your app.
  2. My expenses list with statuses.
  3. Roles and approvals. Sign in as an employee, a manager and finance, and check what each can see and change.
  4. Locking and the audit log. Try editing an approved expense.
  5. Policy flags.
  6. Export. Hand the CSV to whoever does your books and ask if it imports cleanly.
  7. Receipt reading (optional). Add it once the manual flow works, and compare its guesses with real receipts.
  8. Pilot with one team for a month before rolling out.

Common mistakes

  • Slow entry. Every extra field costs submissions. Make only amount, date, category and receipt required.
  • Receipts stored publicly. Receipt files should only be reachable by people allowed to see that expense.
  • Editable approved expenses. Lock them, or the approval means nothing.
  • Overwriting status. Keep a log of every change.
  • Floating-point money. Use integer cents.
  • Deleting receipts too early. Record-keeping rules vary; check yours with an accountant.
  • Trusting AI-read totals without review.

When ready-made expense software is better

Dedicated expense management products offer card integrations, automatic bank feeds, mileage tracking, accounting software sync and mobile apps, and they've handled tax and compliance details for many countries. If you need company cards or direct sync to accounting software, they are the stronger choice.

Build your own when your approval rules or categories don't fit, when per-user pricing is high for a team that submits a few expenses a month, when expenses need to link to your own data (projects, jobs, clients, properties), or when the tracker is part of a bigger internal tool. If you rebill expenses to clients, connect it to your invoicing app.

Building it with Mythex

Mythex can build the tracker in the prompt above: you describe it in chat, try it in the live preview, and publish it for your team. It adds a dedicated Postgres database and file storage for receipts when the app needs them. Login is bring-your-own — you choose an approach and the agent wires it in — and so is any AI provider for receipt reading, with its key stored as a project secret. To start from something close, look at the expense claims app and expense approvals templates.

Questions

What is the difference between a budget app and an expense tracker?

A budget app plans spending ahead by category and compares it with what happened. An expense tracker records individual costs, usually with receipts, often so they can be claimed back, approved or handed to an accountant.

Can an expense tracker read receipts automatically?

Yes. An app can send a receipt photo to an AI model or OCR service and get back the merchant, date, total and tax. Treat the result as a suggestion that the person confirms, because photos of crumpled receipts are often misread.

What should an expense report export include?

Each expense's date, merchant, category, amount, currency, tax amount if relevant, the person who spent it, approval status and a link to the receipt. A CSV file your accountant or bookkeeping software can import is usually the most useful format.

How long should I keep receipts?

It depends on your country and the type of expense, and tax authorities set their own rules. Check with an accountant or your local tax authority, and make sure your app never deletes receipts before that period ends.

Keep reading

  • How to Add File Uploads to Your App: Storage, Limits and Security — How to let users upload images and documents to your app: where files should live, size and type limits, private files, prompts to use, and common mistakes.
  • How to Add Role-Based Access Control (RBAC) to Your App — Add roles and permissions to your app safely: pick a model, store roles, check them on the server for every request, and test that users can't see others' data.
  • How to Build a Blog with AI: Posts, Editor, SEO and Hosting — Build your own blog with an AI app builder: posts, an editor, categories, newsletter signup and SEO search engines can read, plus when a platform fits better.
  • How to Build a Booking App: Slots, Availability, Reminders and Deposits — How to build a booking app with AI: services, availability and time slots, double-booking rules, time zones, reminders, deposits, and when Calendly is enough.
  • How to Build a Budget App: Categories, Transactions, Imports and Reports — Build a personal or household budget app: budgeting methods, transactions, CSV imports vs bank connections, handling money correctly, and privacy.
  • How to Build a Changelog Page: Entries, Tags, RSS and 'What's New' — How to build a product changelog page: what each entry needs, files vs database, tags, RSS, email updates, an in-app 'what's new' badge, and writing tips.

Start building free · Templates · Docs