---
title: "Put expenses into an expense report"
method: POST
path: "/api/v1/rest/spese/reports/{id}/expenses"
tags: ["Expenses"]
---

# Put expenses into an expense report

`POST /api/v1/rest/spese/reports/{id}/expenses`

## Request

- Base URL: `https://api.custodo.ai`
- URL: `https://api.custodo.ai/api/v1/rest/spese/reports/{id}/expenses`
- Auth: HTTP bearer

Moves lines into a nota spese and restates its three totals in the same breath. The report has to be open — a `draft` or a `rejected` one — and every line has to belong to the report’s owner, be complete, already be converted into the company’s currency, and carry a proof of payment where the company demands one. ⚠ ALL OR NOTHING: if one line is refused, none of them move, and the answer says which line and why. A line already in THIS report is not an error — putting it in twice is one act. A line in ANOTHER report is refused and never taken from it.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant-Id` string, uuid

## Request body

- object
  - `expense_ids` string[], required: The lines to put in, 1–200. From spese_list_expenses. Past that ceiling the answer is several calls.

## Response `200`

Done. `data` is the tool’s own answer.

- RestResult
  - `ok` true, required
  - `data` unknown, required

## Other responses

- `400`: The arguments did not validate: `error.message` names the field, what it expects and what arrived.
- `401`: No API key, or one that is malformed, unknown, revoked or expired.
- `403`: The call never ran: the module is off for this organisation, the credential lacks the permission or the module, the tier does not cover it, or the tool is destructive and the key was not minted for that.
- `404`: Nothing with that id in this organisation.
- `409`: The record is in a state that does not allow it — under legal hold, already sent, already closed. `error.code` says which.
- `422`: The tool ran and refused, in a sentence of its own (`TOOL_REFUSED`): the message says what to change. Retrying the same call will not help.
- `429`: The API key has spent its minute, or its day. Every request a key makes counts. See `Retry-After`.

---

[API](https://skmtc.dev/custodo/apis/custodo-integrazioni.md) · [All operations](https://skmtc.dev/custodo/apis/custodo-integrazioni/llms.txt) · [OpenAPI document](https://skmtc.dev/custodo/apis/custodo-integrazioni/revisions/16d336d3ec2a?raw)
