---
title: "Update header fields and totals"
method: PATCH
path: "/v1/expenses/{id}"
tags: ["Expenses"]
---

# Update header fields and totals

`PATCH /v1/expenses/{id}`

## Request

- Base URL: `https://api.officina.it`
- URL: `https://api.officina.it/v1/expenses/{id}`
- Auth: HTTP bearer

## Request body

- object
  - `description` string, nullable
  - `invoice_number` string, nullable
  - `expense_category_id` string, nullable
  - `payment_method` string, nullable
  - `payment_due_at` string, date-time, nullable
  - `total_before_tax` number
  - `total_tax` number
  - `comments` string, nullable

## Response `200`

Updated expense.

## Other responses

- `400`: Request body is unparseable or X-API-Version is missing.
- `401`: Missing, malformed, expired, or wrong-audience bearer token.
- `402`: The company has no active subscription, or its plan does not include API access. API access is included in the Business and Illimitato plans.
- `403`: The authenticated user lacks the required permission.
- `404`: Resource does not exist OR belongs to a different company. The two cases are intentionally indistinguishable.
- `422`: A request field is missing or invalid (fast-fail).
- `500`: Unhandled server error. Detail is logged, not exposed.

---

[API](https://skmtc.dev/officina/apis/officina-it-api.md) · [All operations](https://skmtc.dev/officina/apis/officina-it-api/llms.txt) · [OpenAPI document](https://skmtc.dev/officina/apis/officina-it-api/revisions/7da3fccfe551?raw)
