---
title: "Update an expense item"
method: PATCH
path: "/expense-items/{id}"
tags: ["Expense Items"]
---

# Update an expense item

`PATCH /expense-items/{id}`

## Request

- Base URL: `https://www.ruddr.io/api/workspace`
- URL: `https://www.ruddr.io/api/workspace/expense-items/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Request body

- object
  - `vendorName` string, nullable: The name of the vendor for the expense. Max 255 characters.
  - `notes` string, nullable: Notes about the expense item. Max 5000 characters.
  - `attendees` string, nullable: Attendees for the expense. Max 5000 characters.
  - `date` string, date: The date of the expense. Should be in the form `YYYY-MM-DD`.
  - `currency` string: The ISO 4217 currency code for the expense amount (e.g. `USD`).
  - `expenseAmount` number: The expense amount in the expense's currency.
  - `markupMethod` 'percentage' | 'amount' | 'null', nullable: The markup method to apply to the expense.
  - `markupRatio` number, nullable: The markup ratio (e.g. 0.1 for 10%). Must be between 0 and 1. Used when `markupMethod` is `percentage`.
  - `markupAmount` number, nullable: The fixed markup amount. Used when `markupMethod` is `amount`.
  - `unitCount` number, nullable: The number of units for unit-based expense categories.
  - `unitAmount` number, nullable: The per-unit amount for unit-based expense categories.
  - `isReimbursable` boolean: Whether the expense is reimbursable to the member.
  - `isBillable` boolean: Whether the expense item is billable back to the client.
  - `isReimbursed` boolean: When set to `true`, marks the expense as reimbursed to the member. The expense item must be reimbursable.
  - `expenseReportId` string: The expense report ID (`uuid`) this item belongs to.
  - `expenseCategoryId` string: The expense category ID (`uuid`) for this item.
  - `projectId` string, nullable: The project ID (`uuid`) to associate this expense with.

## Response `200`

200

- ExpenseItem
  - `id` string: The unique identifier for the object.
  - `statusId` 'not_submitted' | 'pending_approval' | 'approved' | 'rejected': The approval status of the expense item.
  - `vendor` string, nullable: The name of the vendor for the expense.
  - `notes` string, nullable: Additional notes about the expense item.
  - `attendees` string, nullable: The attendees for the expense (e.g. for meals or entertainment categories).
  - `date` string, date: The date of the expense. In the form `YYYY-MM-DD`.
  - `currency` string: The ISO 4217 currency code for the expense amount (e.g. `USD`).
  - `amount` number: The expense amount in the expense's currency.
  - `markupMethod` 'percentage' | 'amount' | 'null', nullable: The markup method applied to the expense. `null` if no markup is applied.
  - `markupRatio` number, nullable: The markup ratio (e.g. 0.1 for 10%). Present when `markupMethod` is `percentage`, otherwise `null`.
  - `markupAmount` number, nullable: The fixed markup amount. Present when `markupMethod` is `amount`, otherwise `null`.
  - `markup` number, nullable: The computed markup value in the expense's currency. `null` when no markup method is set.
  - `total` number: The total billed amount including any markup, in the expense's currency.
  - `unitCount` number, nullable: The number of units for unit-based expense categories. `null` if not applicable.
  - `unitAmount` number, nullable: The per-unit amount for unit-based expense categories. `null` if not applicable.
  - `isReimbursable` boolean: Whether the expense is reimbursable to the member.
  - `isBillable` boolean: Whether the expense item is billable back to the client.
  - `isReimbursed` boolean: Whether the expense has been reimbursed to the member.
  - `createdAt` string, date-time: The timestamp when the object was created.
  - `modifiedAt` string, date-time: The timestamp when the object was last modified.
  - `expenseReport` object: The expense report this item belongs to.
    - `id` string: The unique identifier for the object.
    - `title` string: The title of the expense report.
  - `expenseCategory` object: The expense category for this item.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the expense category.
    - `unitName` string, nullable: The unit name for unit-based categories (e.g. "mile"). `null` if not a unit-based category.
  - `member` object: The member who submitted the expense.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the member.
  - `project` object, nullable: The project associated with this expense item. `null` if not assigned to a project.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the project.
    - `client` object: The client associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the client.
  - `receipts` ExpenseReceipt[]: The receipts attached to this expense item, oldest first. Receipts whose file upload never completed are not included.
    - `id` string: The unique identifier for the object.
    - `fileName` string: The name of the receipt file.
    - `contentType` string: The content type reported when the receipt was uploaded. The download endpoint sends the file with a content type derived from `fileName` instead.
    - `createdAt` string, date-time: The timestamp when the object was created.
  - `invoiced` boolean: Whether this record has been invoiced.

## Other responses

- `400`: 400
- `403`: 403
- `404`: 404

---

[API](https://skmtc.dev/ruddr/apis/ruddr-api.md) · [All operations](https://skmtc.dev/ruddr/apis/ruddr-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruddr/apis/ruddr-api/revisions/01c3f2a969ba?raw)
