Expense Approval Queue
Feature Detail
Description
The Expense Approval Queue gives organization admins in the Admin Web Portal a structured workflow for reviewing expense claims submitted by peer mentors. Claims exceeding auto-approval thresholds are routed here with full context - expense type, distance, amount, attached receipts, and originating activity. Reviewers can approve, reject, or request correction, with each action producing an audit record and triggering a push notification to the submitting peer mentor.
Sources & reasoning
HLF's explicit requirement for manual attestation above the 50 km / no-receipt threshold directly implies an approval queue as the admin-side surface receiving those claims. The Fase 2 roadmap confirms threshold-based reimbursement handling as a v1.0 deliverable. The queue is the necessary admin complement to the mobile expense registration flow.
No source references — this artifact was included based on reasoning alone (see above).
Analysis
HLF and Blindeforbundet both require manual attestation for claims exceeding defined thresholds. Without a structured queue, approvals fall back to email and spreadsheets, recreating the overhead the platform eliminates. A dedicated queue centralizes oversight, enforces reimbursement policies, and builds an audit trail for Bufdir financial reporting. Separating the peer mentor's simple mobile submission from the web-based review experience matches each role's distinct context and digital skill level. Faster, predictable approval cycles directly improve volunteer retention and reduce coordinator administrative burden.
The queue is a server-rendered Next.js page querying expenses and expense_approvals for status = pending_review, scoped to the admin's organization. Each item surfaces submitter identity, expense type, distance, amount, and receipt thumbnails. Approve, reject, and request-correction actions POST to /api/v1/expenses/:id/review, writing to expense_approvals with reviewer_id and timestamp and dispatching a push notification. Bulk approval handles batches of similar claims atomically. The list is paginated and filterable by expense type, date range, and peer mentor, with every action producing an audit log entry.
Components (47)
Shared Components
These components are reused across multiple features
Service Layer (11)
Data Layer (23)
Infrastructure (7)
User Stories
No user stories have been generated for this feature yet.