---
title: "Update an expense"
method: PUT
path: "/expenses/{id}"
tags: ["Expenses"]
---

# Update an expense

`PUT /expenses/{id}`

Updates an existing expense

## Path parameters

- `id` integer, required

## Request body

- object
  - `date` string, date
  - `amount` number
  - `vendor` string
  - `description` string
  - `expense_category_id` integer
  - `project_id` integer
  - `client_id` integer
  - `status` 'unbilled' | 'billed'

## Response `200`

Expense updated

- Expense — Expense resource
  - `id` integer
  - `team_id` integer
  - `project_id` integer, nullable
  - `client_id` integer, nullable
  - `category_id` integer, nullable
  - `amount` number
  - `vendor` string
  - `description` string, nullable
  - `status` 'unbilled' | 'billed'
  - `date` string, date
  - `date_formatted` string
  - `client` object
    - `id` integer, nullable
    - `name` string
  - `project` object
    - `id` integer, nullable
    - `name` string
  - `category` object
    - `id` integer, nullable
    - `name` string
  - `created_at` string, date-time

## Other responses

- `401` — Unauthenticated
- `403` — Forbidden
- `404` — Not found

---

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