Travel expenses
Travel Expense Management
I built one system for the complete travel expense process: calculations based on current rates, manager approval, tax-document validation, and accounting close.
Problem
The process relied on a spreadsheet, email, and manual re-entry into the accounting system. Employees calculated the amount from a rate table, approvals circulated outside a single process, and receipts were entered again during final reconciliation.
Solution
One process proposes expense categories, calculates amounts using current rates, routes the request to the employee's manager, validates tax files, and reconciles the final balance against the recorded deposit.
Outcome
The request, approval, expense documentation, and final reconciliation are kept in one record. Each amount follows current rules, and the final balance determines whether the employee must repay funds or the company must reimburse the employee.
My role
I was responsible for the functional and technical design and the complete system build: rate rules, process states, manager approval, tax-document validation, accounting close, deployment, and documentation.
How it works
A request moves between the employee, the employee's manager, and Accounting. The system applies current rates and keeps the balance updated throughout the process.
Scroll horizontally to view the full diagram.
The system in operation
Four stages of the process, from operational visibility through reconciliation and accounting close.
Screenshots were generated in a local environment with fictional data. Each image opens at full size.
Key functions
- Policy-based calculation. Six expense types—meals, lodging, fuel, tolls, bus, and taxi—calculated using the rates in effect for the travel dates and destination.
- Built-in approval. The employee's manager reviews requests in one inbox, and each request moves through draft, submitted, approved, or rejected.
- Tax-document validation. The system reads tax files and ensures each receipt is used only once.
- Accounting close. Records the deposit, method, and reference, then determines whether the employee owes a repayment or the company owes a reimbursement.
Technical details
- Reusable foundation
- Reusable Application Foundation with authentication, permissions, audit logging, and deployment already configured
- Backend
- NestJS 11 · TypeORM · PostgreSQL 15
- Frontend
- React 19 · Vite · TanStack Query · Zod · Tailwind 4
- Infrastructure
- Elastic Beanstalk · RDS PostgreSQL · S3 · SES · CloudFront · Route 53
- Functional scope
- Trips with multiple destinations · catalogs for cities, zones, rate levels, and policies with effective dates
- Documentation
- Functional process guide and deployment guide delivered with the project