Expenses API

Submit and manage expense claims and approvals through the CitoHR API.

Get Expenses

Retrieve expense claims with filtering and pagination.

GET /api/expenses

Query parameters:

  • status - Filter by status: PENDING, APPROVED, REJECTED (optional)
  • page - Page number (default: 1)
  • pageSize - Items per page (default: 10)
  • userId - Filter by user ID (optional, requires MANAGER or ADMIN role to access other users)

Authorization: Requires valid session. Users can view their own expenses. MANAGER and ADMIN roles can view team members' expenses.

Create Expense Claim

Submit a new expense claim.

POST /api/expenses

Request body:

{
  "amount": 50.00,
  "categoryId": "category-id",
  "date": "2024-01-15T00:00:00.000Z",
  "description": "Business lunch",
  "receiptUrl": "https://example.com/receipt.jpg"
}

Get Expense by ID

Retrieve a specific expense claim by ID.

GET /api/expenses/{id}

Update Expense

Update an expense claim (only if status is PENDING).

PUT /api/expenses/{id}

Approve or Reject Expense

Approve or reject an expense claim. Requires MANAGER or ADMIN role.

POST /api/expenses/{id}/approve

Request body:

{
  "status": "APPROVED"
}

Status values: APPROVED, REJECTED

Delete Expense

Delete an expense claim (only if status is PENDING).

DELETE /api/expenses/{id}

Get Expense Categories

Retrieve available expense categories.

GET /api/expenses/categories

Get Pending Approvals

Retrieve expense claims pending approval. Requires MANAGER or ADMIN role.

GET /api/expenses/approval