Expenses & Approval Workflows
Full expense claim lifecycle - from line items with multi-currency support, through configurable multi-stage approval routing, to final payment marking.
Prerequisites
From Core HR:
- β Active employees with assigned reporting managers
- β Projects configured (only if you plan to use project-specific expense categories)
π€ Role-Based Access
| Action | SUPER_ADMIN / ACCOUNT_ADMIN | HR_ADMIN | Manager | EMPLOYEE |
|---|---|---|---|---|
| Configure expense settings | β | β | β | β |
| Create expense categories | β | β | β | β |
| Set exchange rates | β | β | β | β |
| Submit expense claims | β | β | β | β |
| L1 approve (general claims) | - | - | β (direct reports) | β |
| L1 approve (project claims) | - | - | β (project PM) | β |
| L2 Finance approve | β | β | β | β |
| Mark as paid | β | β | β | β |
| Configure workflows | β | β | β | β |
Admin Workflow
Step 1 - Configure Expense Settings
Navigate to: Settings β Expense Settings
| Field | Description | Example |
|---|---|---|
| Base Currency | Your companyβs default currency | INR |
| Auto Approval Enabled | Skip manual approval for low-value claims | false |
Step 2 - Create Expense Categories
Categories define what types of expenses employees can claim.
Navigate to: Settings β Expense Categories β Add Category
| Field | Description | Example |
|---|---|---|
| Name | Category label | Travel β Airfare |
| Scope | GLOBAL or PROJECT_SPECIFIC | GLOBAL |
| Project Constraint | If PROJECT_SPECIFIC, link to a project | (select project) |
Step 3 - Configure Approval Workflows
The Workflow Engine defines how expense claims (and other requests) are routed for approval.
Navigate to: Settings β Workflows β Create Workflow
| Field | Description | Example |
|---|---|---|
| Name | Workflow label | Double Level Expense Approval |
| Entity Type | EXPENSE_CLAIM | EXPENSE_CLAIM |
| Priority | Higher number = higher priority | 10 |
| Conditions | JSON routing rules | { "departmentId": "uuid" } |
Add Workflow Steps (after creating the workflow):
| Step Field | Options |
|---|---|
| Step Number | 1, 2, 3β¦ (execution order) |
| Approver Type | REPORTING_MANAGER, DEPARTMENT_HEAD, PROJECT_MANAGER, SPECIFIC_USER, ROLE, SKIP |
| Approver Employee ID | Required if SPECIFIC_USER |
| Role | Required if ROLE (e.g. ACCOUNT_ADMIN) |
Employee Workflow
Step 1 - Create a Draft Expense Claim
Navigate to: Expenses β New Claim
| Field | Description |
|---|---|
| Title | Descriptive name (e.g. Bangalore Conference Trip) |
| Scope | GENERAL or PROJECT |
| Project | If PROJECT scope, select the associated project |
Step 2 - Add Line Items
Navigate to: Claim Detail β Add Item
| Field | Description | Example |
|---|---|---|
| Category | Select from available categories | Travel β Airfare |
| Amount | Amount in original currency | 250 |
| Currency | Currency of the expense | USD |
| Date | Date of the expense | 2026-06-15 |
| Description | What the expense was for | Return flight BLRβDEL |
| Receipt | Attach receipt (if required) | (file upload) |
Foreign currency items:
If you enter an item in a currency other than the base currency (e.g. USD when base is INR), the baseAmount will be blank until a Finance admin sets the exchange rate. This is expected - you can still submit the claim.
Step 3 - Submit the Claim
Once all line items are added:
Navigate to: Claim Detail β Submit
The claim transitions to PENDING_L1 and enters the approval workflow.
Step 4 - Monitor Approval Status
Navigate to: Expenses β My Claims
| Status | Meaning |
|---|---|
DRAFT | Not yet submitted |
PENDING_L1 | Awaiting manager approval |
PENDING_FINANCE | Manager approved; awaiting finance |
APPROVED | Fully approved; pending payment |
PAID | Finance has marked as paid |
REJECTED | Declined at any stage |
RETURNED | Returned with comments; needs your response |
If your claim is returned: Add any missing information or receipts and click Resubmit.
Approval Workflow for Managers
L1 - Manager Approval
Navigate to: Approvals β Expenses (Inbox)
Review the employeeβs claim, line items, and any attachments:
- Click Approve β moves to
PENDING_FINANCE - Click Return with comments β employee can add info and resubmit
- Click Reject β claim is declined immediately
Approval Workflow for Finance
L2 - Finance Final Approval
Navigate to: Finance β Expense Approvals
Setting exchange rates: Finance β Expense Claims β claim β line item β Set Exchange Rate
- Enter the exchange rate (e.g.
84.5for 1 USD = 84.5 INR) - The total claim amount recalculates automatically
After setting all rates, click Approve to finalize.
Mark as Paid
Once funds are transferred to the employee:
Navigate to: Finance β Expense Approvals β claim β Mark Paid
Status moves to PAID and the claim is archived.
Notifications
Every action in the approval chain triggers a notification:
- Bell icon in the top nav bar shows unread alerts
- Notifications fire when a request is submitted, approved, returned, or rejected
- Click the notification to jump directly to the relevant claim
Common Troubleshooting
| Problem | Solution |
|---|---|
| Finance approval blocked | A line item with a foreign currency is missing an exchange rate |
| Claim submitted but no one is approving | No workflow is configured for this entity type or department; check workflow conditions |
| Employee canβt add a project-specific category | The categoryβs project constraint doesnβt match the claimβs selected project |
| Claim stuck at PENDING_L1 | The reporting manager may not have a user account; contact HR admin |