Travel Expense Registration
Feature Detail
Description
Travel Expense Registration enables peer mentors and coordinators to log reimbursable costs incurred during their work, including kilometre allowances, toll fees, parking, and public transport. The feature presents fixed expense-type selectors to prevent invalid combinations (e.g. simultaneous km and bus ticket claims). Submissions are routed to threshold-based approval workflows - expenses under configured limits are auto-approved, while larger claims require manual attestation by a coordinator or org admin.
User Flow
Analysis
Accurate reimbursement handling is a legal and contractual obligation for organisations that compensate peer mentors for travel. Without a streamlined digital flow, claims are submitted via paper or email, creating administrative backlogs, errors, and delayed payments that demotivate volunteers. Automating threshold-based approvals removes repetitive manual work for coordinators - HLF noted that the majority of claims fall below the auto-approval threshold - freeing staff time for higher-value coordination tasks. For org admins, consolidated digital records simplify accounting system export and Bufdir audit trails.
Built as a Flutter screen backed by a dedicated Expense Service and Expense Repository. Fixed expense-type selectors are fetched from the Expense Types & Requirements feature to enforce valid combinations at the UI level before submission. The REST API endpoint accepts expense payloads and immediately evaluates them against org-configured auto-approval thresholds stored in organisation_settings. Approved records update the expenses table directly; others are placed in a pending queue consumed by the admin portal approval workflow. Kilometre calculations use device GPS or manual entry; integration with mapping APIs is optional for v1.0.
Components (35)
Shared Components
These components are reused across multiple features
Service Layer (9)
Data Layer (12)
Infrastructure (7)
User Stories
No user stories have been generated for this feature yet.