---
title: "Invoice assign to expense"
method: PUT
path: "/v3/expense/invoice/assign"
tags: ["[v3] Expense", "[v3] Invoices"]
---

# Invoice assign to expense

`PUT /v3/expense/invoice/assign`

## Request body

- object
  - `invoiceId` integer
  - `expenseIds` integer[]

## Response `200`

OK

- object
  - `message` string
  - `data` ExpenseResponse
    - `id` integer
    - `currencyId` integer
    - `expenseCategory` ExpenseCategoryResponse
      - `id` integer
      - `name` string
      - `color` string
      - `unitPrice` integer, nullable
      - `unitName` string, nullable
      - `currencyId` integer
      - `createdAt` string
      - `updatedAt` string, nullable
    - `taskId` integer
    - `amount` integer
    - `description` string, nullable
    - `status` integer
    - `isBillable` boolean
    - `invoiceId` integer, nullable
    - `madeBy` integer
    - `madeAt` string
    - `createdBy` integer
    - `updatedBy` integer, nullable
    - `createdAt` string
    - `updatedAt` string, nullable

## Other responses

- `403` — The authenticated OAuth2 access token or PAT does not contain any scope accepted by the endpoint.

---

[API](https://skmtc.net/timecamp/apis/timecamp-api.md) · [All operations](https://skmtc.net/timecamp/apis/timecamp-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/timecamp/timecamp-api/revisions/9bdc11bd523f/schema)
