Receipt Store
Component Detail
Data Layer
medium complexity
backend
0
Dependencies
0
Dependents
1
Entities
0
Integrations
Description
Persistence layer that stores receipt binaries in managed object storage and keeps metadata rows linking each object to its parent expense and tenant. Provides the lookup surface used by the upload service and by coordinator review flows.
receipt-store
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.
-
docs/source/likeperson.md · line 42Kvitteringsbilde for utlegg over 100 kr (HLF).
-
docs/source/likeperson.md · line 311Reiserefusjon
Responsibilities
- Persist receipt binaries in object storage with stable keys
- Maintain metadata rows (expense_id, tenant_id, content hash, uploaded_at)
- Enforce retention rules required for Bufdir-style grant accounting
- Resolve receipt references to signed access URLs
- Support deletion and replacement while preserving audit trail
Interfaces
putObject(key, bytes, metadata): ReceiptRef
getObject(receiptId): ReceiptBinary
findByExpenseId(expenseId): ReceiptRef[]
deleteObject(receiptId): void