medium complexity extracted Expense & Reimbursement Confidence: 100%
3
Components
2
Shared
0
User Stories
Yes
Analyzed

Description

This feature lets users attach a photograph of a paper receipt to an expense claim from the mobile app. Capture is available from both the device camera and the photo library, with the resulting image stored alongside the expense record. The feature enforces a receipt-required threshold (e.g. mandatory for expenses above 100 NOK as in the HLF rules) and surfaces a clear inline indicator when a receipt is missing for a claim that requires one, blocking submission until the attachment is provided.

Sources & reasoning

Section 2.1 explicitly requires receipt photos above a 100 NOK threshold for HLF. Receipt upload is a direct sub-capability of the travel reimbursement workflow listed in Phase 2 (Core Product) in section 5.

Analysis

Business Value

Photographed receipts are a hard prerequisite for audit-ready reimbursement in HLF's workflow and a strong expectation across the other organizations once expense handling goes digital. Without inline capture, mentors revert to email or paper, defeating the purpose of digitalisation and creating reconciliation work for coordinators. Mobile capture also dramatically reduces lost-receipt incidents and shortens the approval cycle because admins can verify the supporting evidence directly from the approval queue. For accounting integrations (Xledger, Dynamics) the attached image becomes the auditable artifact accompanying each posted expense line.

Implementation Notes

Implement image capture using a Flutter camera/photo-library plugin, downscale and compress on-device to keep payloads small, and upload to object storage with a signed-URL pattern. Receipt records reference the parent expense ID; the receipt-required threshold is a configurable value inside the expense-reimbursement module so each tenant can set its own limit. Files transit the API backend only for metadata; binary content goes to object storage directly. Offline capture is supported by queuing the upload through the sync outbox. Server-side validation rejects expense submissions that violate the receipt-required rule.

Quality Assurance

Peer Mentor (Likeperson) (primary) · Coordinator (Koordinator) (subject view — ser kvittering i godkjenningskøen)
2
Scenarios
8
UAT Steps
20
A11y Annotations
3
Role Boundaries
Peer Mentor (Likeperson)

Peer Mentor (Likeperson)

Quick UAT

  1. Logg inn i Meander-appen som Likeperson. Ă…pne Aktiviteter og velg en aktivitet med et utlegg over 100 kr.
  2. Trykk Legg til kvittering pĂĄ utleggslinjen for ĂĄ ĂĄpne kvitteringsskjermen.
  3. Velg Ta bilde, ta bilde av papirkvitteringen og bekreft bildet.
  4. Vent til opplastingen er fullført og bekreft at miniatyrbildet av kvitteringen vises på utleggslinjen.
  5. Lagre utlegget og bekreft at status er Sendt til godkjenning med kvittering vedlagt.

Quick UAT — Accessibility

  1. Logg inn i Meander-appen som Likeperson. Ă…pne Aktiviteter og velg en aktivitet med et utlegg over 100 kr.
    • Screen reader VoiceOver/TalkBack annonserer skjermtittel 'Aktivitetsdetaljer' og leser utleggslinjen med beløp og 'Kvittering pĂĄkrevd'.
    • Keyboard / focus Tab-rekkefølge: tilbakeknapp → aktivitetsoverskrift → utleggsliste → utleggslinje.
    • Focus visibility Synlig fokusring pĂĄ utleggslinjen nĂĄr den fĂĄr fokus.
  2. Trykk Legg til kvittering pĂĄ utleggslinjen for ĂĄ ĂĄpne kvitteringsskjermen.
    • Screen reader Knapp annonseres som 'Legg til kvittering, knapp'. Ved aktivering annonseres ny skjerm 'Kvittering'.
    • Focus visibility Fokus flyttes automatisk til skjermtittelen pĂĄ kvitteringsskjermen.
    • Touch target Legg til kvittering-knappen er minst 24Ă—24 CSS-piksler (faktisk 44Ă—44).
  3. Velg Ta bilde, ta bilde av papirkvitteringen og bekreft bildet.
    • Screen reader Knappene 'Ta bilde' og 'Velg fra galleri' annonseres som separate knapper med tydelige labels.
    • Keyboard / focus Begge knapper nĂĄs via Tab; Enter eller mellomrom aktiverer kamera/galleri.
    • Contrast Bekreft- og avvis-knappene har 4.5:1 kontrast og er ikke kun fargekodet — har ogsĂĄ tekst-label.
  4. Vent til opplastingen er fullført og bekreft at miniatyrbildet av kvitteringen vises på utleggslinjen.
    • Focus visibility Etter opplasting flyttes fokus tilbake til utleggslinjen som nĂĄ viser miniatyrbilde.
    • Live region 'Kvittering lastes opp, x prosent fullført' og deretter 'Kvittering lastet opp' annonseres via polite live region.
    • Zoom Miniatyrbildet og progress-indikatoren er brukbare ved 200 % zoom uten horisontal scroll.
  5. Lagre utlegget og bekreft at status er Sendt til godkjenning med kvittering vedlagt.
    • Live region 'Utlegg lagret. Status: Sendt til godkjenning. Kvittering vedlagt.' annonseres.
    • Contrast Statusbadge 'Sendt til godkjenning' bruker ikke kun farge — har ogsĂĄ tekst-label.
Coordinator (Koordinator) subject view

Coordinator (Koordinator)

Quick UAT

  1. Logg inn i Meander-appen som Koordinator. Åpne Arbeid → Utlegg til gjennomgang.
  2. Velg utlegget som Likepersonen nettopp sendte inn (samme aktivitet og beløp).
  3. Bekreft at kvitteringsbildet vises inline pĂĄ utleggsdetaljene og at det kan ĂĄpnes i fullskjerm.

Quick UAT — Accessibility

  1. Logg inn i Meander-appen som Koordinator. Åpne Arbeid → Utlegg til gjennomgang.
    • Screen reader Skjermtittel 'Utlegg til gjennomgang' annonseres; antall ventende utlegg leses opp.
    • Keyboard / focus Tab-rekkefølge: bunnav → faneoverskrift → liste over utlegg.
  2. Velg utlegget som Likepersonen nettopp sendte inn (samme aktivitet og beløp).
    • Focus visibility Synlig fokusring pĂĄ listeelementet; Enter ĂĄpner utleggsdetaljene.
    • Touch target Hver listerad er minst 24Ă—24 CSS-piksler høy (faktisk full radhøyde).
  3. Bekreft at kvitteringsbildet vises inline pĂĄ utleggsdetaljene og at det kan ĂĄpnes i fullskjerm.
    • Screen reader Bildet har alt-tekst 'Kvitteringsbilde, trykk for ĂĄ ĂĄpne i fullskjerm'.
    • Zoom Kvitteringsbildet skalerer ved 200 % zoom og kan ĂĄpnes i fullskjerm-visning med pinch-zoom.

Role Boundaries

3 role(s) must NOT access this feature
  • Organization Administrator

    Org Admin logger ikke på mobilappen for kvitteringsopplasting; i admin-portalen finnes ingen kvitteringsfangstskjerm — kun visning av allerede opplastede kvitteringer i Expense Approval Queue.

  • Global Administrator

    Ingen tilgang til organisasjonens utlegg eller kvitteringer som standard. Kvitteringsbinærer er tenant-scoped; deep-link til kvitteringsobjekt returnerer 403 uten gyldig tidsbegrenset supporttilgang.

  • Prospective Buyer

    Salgsnettstedet har ingen pĂĄlogging eller tilgang til Receipt Photo Upload; funksjonen er ikke tilgjengelig pĂĄ den offentlige siden.

Expected End State

Kvitteringsbildet er lastet opp til managed object storage med tenant-scopet referanse lagret på det aktuelle utlegget. Utlegget er merket Sendt til godkjenning med kvittering vedlagt og synlig inline for koordinatoren i godkjenningskøen.

User Stories

No user stories have been generated for this feature yet.