---
title: "Update expense"
method: PUT
path: "/v3/expense/{id}"
tags: ["[v3] Expense"]
---

# Update expense

`PUT /v3/expense/{id}`

## Request body

- ExpenseRequest
  - `currencyId` integer, required
  - `expenseCategoryId` integer, required
  - `taskId` integer, required
  - `amount` integer, required
  - `description` string
  - `isBillable` boolean, required
  - `madeBy` integer, required
  - `madeAt` string, required

## Response `200`

OK

- ExpenseResponse
  - `id` integer
  - `currencyId` integer
  - `expenseCategory` ExpenseCategoryResponse
    - `id` integer
    - `name` string
    - `color` string
    - `unitPrice` integer, nullable
    - `unitName` string, nullable
    - `currencyId` integer
    - `createdAt` string
    - `updatedAt` string, nullable
  - `taskId` integer
  - `amount` integer
  - `description` string, nullable
  - `status` integer
  - `isBillable` boolean
  - `invoiceId` integer, nullable
  - `madeBy` integer
  - `madeAt` string
  - `createdBy` integer
  - `updatedBy` integer, nullable
  - `createdAt` string
  - `updatedAt` string, nullable

## Other responses

- `403` — The authenticated OAuth2 access token or PAT does not contain any scope accepted by the endpoint.

---

[API](https://skmtc.net/timecamp/apis/timecamp-api.md) · [All operations](https://skmtc.net/timecamp/apis/timecamp-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/timecamp/timecamp-api/revisions/c7e9d1f9cf61/schema)
