# EnKash Expense Status Lifecycle 

Each expense in the EnKash system moves through **well-defined statuses** from creation to closure.
Allowed actions and visibility depend on the **user role** interacting with the expense.

## <span style="color:#7b2cbf">Supported Roles</span>

1. **Employee** – Creates and submits expenses
2. **Finance Admin** – Settles expenses and performs recovery
3. **Company Admin** – Views and reports on expenses

> **Key Principle**
> Expense status changes are **strictly role-controlled** and **state-driven**.

## <span style="color:#7b2cbf">Expense States</span>

| Category               | States                                    |
| ---------------------- | ----------------------------------------- |
| **Initial / Editable** | CREATED, DRAFTED, AUTO_CREATED            |
| **Approval Flow**      | SUBMITTED, UPDATED_AND_SUBMITTED, ON_HOLD |
| **Decision States**    | APPROVED, REJECTED                        |
| **Closure (Terminal)** | SETTLED, RECOVERED, WITHDRAWN             |

## <span style="color:#7b2cbf">Expense State Transitions</span>

| **From State**        | **To State**          | **Allowed Role**           | **Trigger / Notes**                   |
| --------------------- | --------------------- | -------------------------- | ------------------------------------- |
| `CREATED`| `DRAFTED`| Employee                   | Expense saved as draft                |
| `DRAFTED`| `SUBMITTED`| Employee                   | Expense submitted (single or dossier) |
| `AUTO_CREATED`| `SUBMITTED`| Employee                   | Auto-created expense submitted        |
| `SUBMITTED` | `UPDATED_AND_SUBMITTED` | Employee   | Employee edits and resubmits          |
| `SUBMITTED`| `APPROVED`| Manager / Finance Approver | Approval completed       |
| `UPDATED_AND_SUBMITTED` | `APPROVED`      | Manager / Finance Approver | Approval completed after update|
| `SUBMITTED`| `REJECTED`| Manager / Finance Approver | Rejected at any approval level|
| `UPDATED_AND_SUBMITTED` | `REJECTED`     | Manager / Finance Approver | Rejected after resubmission|
| `SUBMITTED`| `ON_HOLD `| Manager / Finance Approver | Put on hold for clarification|
| `UPDATED_AND_SUBMITTED` | `ON_HOLD`       | Manager / Finance Approver | Same as submitted                     |
| `APPROVED`| `SETTLED`| Finance Admin       | Finance settles approved expense      |
| `REJECTED`| `RECOVERED`| Finance Admin              | Only for **UPI / CARD**       |
| `SUBMITTED`| `WITHDRAWN`| Employee                   | Withdraw before approval              |
| `UPDATED_AND_SUBMITTED` | `WITHDRAWN`     | Employee  | Withdraw resubmitted expense          |
| `APPROVED`| `WITHDRAWN` | Employee                   | Withdraw before settlement            |
| `REJECTED`| `WITHDRAWN`| Employee                   | Withdraw before recovery              |
| `ON_HOLD`| `WITHDRAWN`| Employee                   | Withdraw on-hold expense              |

## <span style="color:#7b2cbf">Role-Based Responsibility Model</span>

<Container>
<Icon icon="ph-bold-number-circle-one"color="#7b2cbf"color="#7b2cbf"/> <span style="color:#7b2cbf"> Employee Responsibilities</span>

Employees initiate and manage expenses until closure.

<Icon icon="material-outline-numbers"color="#000000"/> Employees can:

* Create and edit expenses
* Submit or resubmit expenses
* Withdraw expenses before final settlement

<Icon icon="material-outline-numbers"color="#000000"/> Employees cannot:

* Approve, reject, hold, settle, or recover expenses

</Container>


<Container>
 <Icon icon="ph-bold-number-circle-two"color="#7b2cbf"color="#7b2cbf"/> <span style="color:#7b2cbf"> Finance Approver Responsibilities</span>

Approvers decide the outcome of submitted expenses.

<Icon icon="material-outline-numbers"color="#000000"/> Approvers can:

* Approve expenses
* Reject expenses
* Put expenses on hold

<Icon icon="material-outline-numbers"color="#000000"/> Approvers cannot:

* Edit expenses
* Settle or recover expenses
</Container>

<Container>
<Icon icon="ph-bold-number-circle-three"color="#7b2cbf"color="#7b2cbf"/> <span style="color:#7b2cbf"> Manager / Finance Admin Responsibilities</span>

Finance Admins financially close expenses.

<Icon icon="material-outline-numbers"color="#000000"/> Finance Admins can:

* Settle `APPROVED` expenses (all payment modes)
* Recover `REJECTED` expenses for:

  * UPI
  * CARD

<Icon icon="material-outline-numbers"color="#000000"/> Finance Admins cannot:

* Modify expense data
* Recover reimbursements

</Container>

## <span style="color:#7b2cbf">Terminal States (End of Lifecycle)</span>

These states **close the expense permanently**.

| State         | Meaning                                           |
| ------------- | ------------------------------------------------- |
| **SETTLED**   | Approved expense fully paid and closed            |
| **RECOVERED** | Rejected UPI / Card expense financially recovered |
| **WITHDRAWN** | Expense withdrawn by employee 

:::caution[]
***Terminal State Rules***

* No transitions are allowed **out** of terminal states
* Withdrawn expenses are **hidden from all admin and finance reports**
:::


## <span style="color:#7b2cbf">Transition Rules & Guardrails</span>

<Container>
#### <span style="color:#7b2cbf">Allowed</span>  

<Icon icon="material-outline-numbers"color="#7b2cbf"/>`REJECTED → RECOVERED` **only** for UPI/CARD
<Icon icon="material-outline-numbers"color="#7b2cbf"/>`APPROVED → SETTLED` by Finance Admin only
</Container>


<Container>
#### <span style="color:#7b2cbf">Disallowed</span>

<Icon icon="material-outline-numbers"color="#7b2cbf"/>`SETTLED → any state`
<Icon icon="material-outline-numbers"color="#7b2cbf"/>`RECOVERED → any state`
<Icon icon="material-outline-numbers"color="#7b2cbf"/>`WITHDRAWN → any state`
<Icon icon="material-outline-numbers"color="#7b2cbf"/>`REJECTED → SETTLED`
<Icon icon="material-outline-numbers"color="#7b2cbf"/>`APPROVED → RECOVERED`
<Icon icon="material-outline-numbers"color="#7b2cbf"/> Company Admin triggering any state change
</Container>




