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

# Update expense

`PUT /expenses/{expenseId}`

## Path parameters

- `expenseId` string, required

## Request body

- ExpenseInput
  - `amount` number, required — Monetary value in EUR
  - `title` string, required
  - `payerAccount` string, required
  - `beneficiaryAccount` string, required
  - `beneficiaryAddress` string, required
  - `scheduledAt` string, date-time, required

## Response `200`

Expense updated successfully

- Expense
  - `id` string, required
  - `amount` number, required — Monetary value in EUR
  - `title` string, required
  - `payerAccount` string, required
  - `beneficiaryAccount` string, required
  - `beneficiaryAddress` string, required
  - `scheduledAt` string, date-time, required

## Other responses

- `400` — Invalid expense input request body @see {@link ExpenseInput}
- `404` — Expense not found
- `409` — Cannot modify expense that has been processed
- `422` — Invalid account numbers or scheduling date in the past
- `500` — An internal server error occurred.
- `503` — The service is temporarily unavailable. Maybe there is maintenance?

## Changes

- **2025-01-17** `4573748c6338` — 6 info
  - added the optional property `errorGUID` to the response with the `400` status
  - added the optional property `errorGUID` to the response with the `404` status
  - added the optional property `errorGUID` to the response with the `409` status
  - added the optional property `errorGUID` to the response with the `422` status
  - …2 more
- **2025-01-09** `a59b7402c514` — 4 breaking, 2 info
  - the response property `code` became optional for the status `400`
  - the response property `code` became optional for the status `404`
  - the response property `code` became optional for the status `500`
  - the response property `code` became optional for the status `503`
  - …2 more
- **2025-01-09** `29074eeb2bb5` — 4 info
  - added the media type `application/json` for the response with the status `400`
  - added the media type `application/json` for the response with the status `404`
  - added the non-success response with the status `500`
  - added the non-success response with the status `503`
- **2025-01-07** `659ddbe31a58` — 2 breaking, 4 info
  - removed the media type `application/json` for the response with the status `400`
  - removed the media type `application/json` for the response with the status `404`
  - removed the non-success response with the status `409`
  - removed the non-success response with the status `422`
  - …2 more

[Change history](https://skmtc.dev/ducin-public/apis/itcorpo-api/changes/expenses/:expenseId/put.md)

---

[API](https://skmtc.dev/ducin-public/apis/itcorpo-api.md) · [All operations](https://skmtc.dev/ducin-public/apis/itcorpo-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ducin-public/itcorpo-api/revisions/80675117301b/schema)
