---
title: "Shows a expense for editing"
method: GET
path: "/api/v1/expenses/{id}/edit"
tags: ["expenses"]
---

# Shows a expense for editing

`GET /api/v1/expenses/{id}/edit`

## Request

- Base URL: `https://demo.invoiceninja.com`
- URL: `https://demo.invoiceninja.com/api/v1/expenses/{id}/edit`
- Auth: none declared. Required headers: `X-API-TOKEN`, `X-Requested-With`
- TypeScript: <https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/docs/api/v1/expenses/:id/edit/get.ts> (a function with typed inputs; its response is checked against the schema)

Displays a client by id

## Path parameters

- `id` string, string, required

## Query parameters

- `include` string

## Headers

- `X-API-TOKEN` string, required
- `X-Requested-With` string, required

## Response `200`

Returns the expense object

- Expense
  - `id` string: The expense hashed id
  - `user_id` string: The user hashed id
  - `assigned_user_id` string: The assigned user hashed id
  - `project_id` string: The associated project_id
  - `client_id` string: The client hashed id
  - `invoice_id` string: The related invoice hashed id
  - `bank_id` string: The bank id related to this expense
  - `invoice_currency_id` string: The currency id of the related invoice
  - `currency_id` string: The currency id of the expense
  - `invoice_category_id` string: The invoice category id
  - `payment_type_id` string: The payment type id
  - `recurring_expense_id` string: The related recurring expense this expense was created from
  - `private_notes` string: The private notes of the expense
  - `public_notes` string: The public notes of the expense
  - `transaction_reference` string: The transaction references of the expense
  - `transcation_id` string: The transaction id of the expense
  - `custom_value1` string: A custom value
  - `custom_value2` string: A custom value
  - `custom_value3` string: A custom value
  - `custom_value4` string: A custom value
  - `tax_amount` number: The tax amount
  - `tax_name1` string: Tax Name 1
  - `tax_name2` string: Tax Name 2
  - `tax_name3` string: Tax Name 3
  - `tax_rate1` number, float: Tax rate 1
  - `tax_rate2` number, float: Tax rate 2
  - `tax_rate3` number, float: Tax rate 3
  - `amount` number, float: The total expense amont
  - `foreign_amount` number, float: The total foreign amount of the expense
  - `exchange_rate` number, float: The exchange rate at the time of the expense
  - `date` string: The expense date format Y-m-d
  - `payment_date` string: The date of payment for the expense, format Y-m-d
  - `should_be_invoiced` boolean: Flag whether the expense should be invoiced
  - `is_deleted` boolean: Boolean determining whether the expense has been deleted
  - `invoice_documents` boolean: Passing the expense documents over to the invoice
  - `updated_at` number: Timestamp
  - `archived_at` number: Timestamp
  - `calculate_tax_by_amount` boolean: Flag indicating whether to calculate tax based on amount rather than percentage
  - `category_id` string: The unique identifier of the expense category
  - `number` string: The unique number assigned to this expense
  - `purchase_order_id` string: The unique identifier of the associated purchase order
  - `tax_amount1` number, float: The amount of the first tax
  - `tax_amount2` number, float: The amount of the second tax
  - `tax_amount3` number, float: The amount of the third tax
  - `transaction_id` string: The unique identifier of the transaction
  - `uses_inclusive_taxes` boolean: Flag indicating whether taxes are included in the price
  - `vendor_id` string: The unique identifier of the vendor associated with this expense

## Other responses

- `401`: Authentication error
- `403`: Authorization error
- `422`: Validation error
- `default`: Unexpected Error

## Changes

- **2026-04-20** `69a36036d334`: 1 info
  - the response optional property `id` became read-only for the status `200`
- **2025-11-22** `00ad5cc89fad`: 10 info
  - added the optional property `calculate_tax_by_amount` to the response with the `200` status
  - added the optional property `category_id` to the response with the `200` status
  - added the optional property `number` to the response with the `200` status
  - added the optional property `purchase_order_id` to the response with the `200` status
  - …6 more
- **2024-06-06** `8e82a2bd77e0`: 2 breaking, 39 info
  - the response's body type changed from no type to `object` for status `200`
  - the response's body type changed from no type to `object` for status `default`
  - added the optional property `amount` to the response with the `200` status
  - added the optional property `archived_at` to the response with the `200` status
  - …37 more
- **2024-06-05** `e61df65649e2`: 2 breaking, 39 warning
  - the response's body type changed from `object` to no type for status `200`
  - the response's body type changed from `object` to no type for status `default`
  - removed the optional property `amount` from the response with the `200` status
  - removed the optional property `archived_at` from the response with the `200` status
  - …37 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/changes/api/v1/expenses/:id/edit/get.md)

---

[API](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference.md) - [All operations](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/revisions/bcda1f823746?raw)
