API 2.0
Expenses

Expenses

Create project expense

Create a new expense for a project or a task, either amount-based or unit-based.
/expenses

Parameters

Name Required Type/Format Description
projectId yes String Project ID
userId yes String User who created the expense
expenseCategoryId yes String Expense category ID (defines amount-based or unit-based rules)
expenseDate yes YYYY-MM-DD Date of expense
name yes String Expense name (short title)
reimbursementStatus yes Integer Reimbursement status (see constants below)
amount no Number Amount-based expense value (use only for amount-based categories)
units no Float Units for unit-based expense (use only for unit-based categories)
comments no String Optional notes or comments
taskId no String Related task ID (optional)

Response

Sample response →
{
  "amount": null,
  "approvalStatus": 0,
  "comments": "some comment",
  "expenseCategoryId": "EXPENSE_CATEGORY_ID",
  "expenseDate": "2026-04-02",
  "id": "EXPENSE_ID",
  "momentCreated": "2026-04-02T14:39:07.095086",
  "name": "Test expense",
  "projectId": "PROJECT_ID",
  "reimbursementStatus": 0,
  "taskId": null,
  "units": 100,
  "userId": "USER_ID"
}

Get expense

Retrieve a single expense by ID.
/expense/EXPENSE-ID

Response

Sample response →
{
  "amount": 1000,
  "approvalStatus": 0,
  "comments": "some comment",
  "expenseCategoryId": "EXPENSE_CATEGORY_ID",
  "expenseDate": "2026-04-02",
  "id": "EXPENSE_ID",
  "momentCreated": "2026-04-02T14:39:07.095086",
  "name": "Expense",
  "projectId": "PROJECT_ID",
  "reimbursementStatus": 0,
  "taskId": null,
  "units": null,
  "userId": "USER_ID"
}

Get expense categories

Retrieve a list of expense categories. The approvalStatus and reimbursement fields are the default statuses applied to expenses created under the category, and use the same Approval/Reimbursement status enums described below.
/expenses/categories

Response

Sample response →
[
  {
    "approvalStatus": 0,
    "id": "EXPENSE_CATEGORY_ID",
    "name": "Consulting",
    "reimbursement": 0,
    "systemType": 2,
    "unitName": "hour",
    "unitPrice": 13
  }
]

Get project expenses

Retrieve a list of expenses for a project.
/project/PROJECT-ID/expenses

Response

Sample response →
[
  {
    "amount": null,
    "approvalStatus": 0,
    "comments": "some comment",
    "expenseCategoryId": "EXPENSE_CATEGORY_ID",
    "expenseDate": "2026-04-02",
    "id": "EXPENSE_ID",
    "momentCreated": "2026-04-02T14:39:07.095086",
    "name": "Expense",
    "projectId": "PROJECT_ID",
    "reimbursementStatus": 0,
    "taskId": null,
    "units": 100,
    "userId": "USER_ID"
  }
]

Constants

Supported constants for expense-related fields.

Approval status

Value Name Description
0 PENDING Waiting for approval; no decision made yet
1 APPROVED Approved and accepted
2 REJECTED Rejected and not accepted

Reimbursement status

Value Name Description
0 NOT_REIMBURSABLE Not eligible for reimbursement
1 PENDING Reimbursement requested and pending
2 REIMBURSED Reimbursed to the user
3 REJECTED Reimbursement rejected

Expense category system type

Value Name Description
1 AMOUNT_BASED Amount-based expense; use the amount field
2 UNIT_BASED Unit-based expense; use the units field