Expense Lifecycle
This page explains the full journey of an expense from creation to closure, including all decision points and system actions.
Full lifecycle
Employee System Approver(s)
| | |
|-- Create draft --------> | |
|-- Attach receipt ------> | |
|-- Submit --------------> | Policy check |
| | (flag or block) |
| |-- Notify step 1 -----------> |
| | Review |
| | <-- Approve --------------- |
| |-- Notify step 2 -----------> |
| | Review |
| | <-- Approve --------------- |
| | |
| | Status: Approved |
| | |
| <-- Notify Finance ---- | |
| (mark paid) | |
| <-- Email: paid ------- | |
| | Auto-close after 7 days |
| | Status: Closed |
Report lifecycle
Expenses can also be submitted as part of an expense report. In this case the approval chain is driven by the report total, not the individual expense amounts.
Employee System Approver(s)
| | |
|-- Create report -------> | |
|-- Add expenses --------> | |
|-- Add per diem --------> | |
|-- Submit report -------> | Resolve approval chain |
| | (report_total policy match) |
| |-- Notify step 1 -----------> |
| | Review |
| | <-- Approve --------------- |
| |-- Notify step 2 -----------> |
| | Review |
| | <-- Approve --------------- |
| | |
| | Status: Approved |
| | |
| <-- Notify Finance ---- | |
| (mark paid) | |
| <-- Email: paid ------- | |
| | Auto-close after 7 days |
| | Status: Closed |
When a report is rejected it returns to Draft — the employee can update line items and resubmit.
Expenses inside a report have status In report while the report is in draft, and cannot be submitted individually until removed from the report.
Key rules
- Draft expenses are never visible to approvers
- Expenses in a report are locked to that report — they cannot be submitted individually until removed
- Submitted reports cannot be edited — the employee must wait for the outcome or have an approver reject back to draft
- Rejected reports return to Draft; the employee can edit and resubmit
- Approved reports are immutable except for the Finance "mark paid" action
- Closed reports are fully immutable
- The entire lifecycle is captured in the Audit Log
SLA escalation
Each approval step has an SLA deadline in hours. If an approver does not act in time:
- The system inserts a warning comment on the expense
- An audit entry is created
- The workspace Admin is notified
The expense does not auto-approve or auto-escalate — it waits for a human decision.
Email notifications
Klear sends a transactional email at each key transition. Notifications are best-effort — a delivery failure never blocks the state change.
| Transition | Who is emailed |
|---|---|
| Submitted | Step-1 approver only |
| Step N approved → step N+1 activated | Step-N+1 approver |
| All steps approved | Submitter |
| Rejected | Submitter (with reason and note) |
| Info requested | Submitter (with approver's message) |
See Email Notifications for the full reference including provider configuration.
Multi-currency
Expenses can be entered in any currency. Klear converts to SGD using the FX rate table at the time of submission. The SGD equivalent is used for policy thresholds and reports. Live FX rate feeds (MAS / Open Exchange Rates) are coming in v1.5.