---
title: "Update expense | Nuvio Docs"
description: "Updates an existing expense"
url: https://nuvio.io/docs/api/update-expense
---

# Update expense

PUT `/v1/expense/{id}`

Needs an API key with the [`update`](https://nuvio.io/docs/api/authentication#scopes) scope.

## Path parameters

-   `id` string Required

## Body parameters

-   `referenceNumber` string

    Invoice or receipt number of the received expense, formatted in string. Accepts alpha numeric characters and '-' symbol.

-   `description` string

    Description of the expense. This will also be its title in the Nuvio Platform.

-   `expenseDate` string

    The date of the expense. Should be formatted in `YYYY-MM-DD` format

-   `dueDate` string

    Due date of the payment for this expense. Should be formatted in `YYYY-MM-DD` format.

-   `currency` string

    3-letter currency code. You can find all the available currencies here.

-   `projectId` string

    32-character unique ID of the related project. If you don't know the ID, you can also provide `projectCode` instead of this field. If both of them are provided `projectId` will be used only.

-   `projectCode` string

    User-generated custom code of the related project. If `projectId`\` is also provided, it will override this field.

-   `supplierId` string

    32-character unique ID of the supplier. If you don't know the ID, you can also provide `supplierCode` instead of this field. If both of them are provided, `supplierId` will be used only.

-   `supplierCode` string

    User-generated custom unique code of the specific supplier. If `supplierId` is also provided, it will override this field.

-   `tags` array of strings

    List of the tags that are related to this expense. Provide a list of tags with their 32-character unique ID.

-   `items` array of objects

    List of the items that are linked to this expense. This list will override existing list of items in the updated expense. Do not just update 1 item, make sure to include all the items in your request.

    Show child parameters Hide child parameters

    -   `itemDetail` string Required

        Description of the item. Should be a string.

    -   `productId` string

        32-character unique ID of the product. If you don't know the ID, you can also provide `productCode` instead of this field. If both of them are provided, `productId` will be used only.

    -   `productCode` string

        User-generated custom unique code of the specific product. If `productId` is also provided, it will override this field.

    -   `quantity` integer

        Quantity of the sold items. It should be a positive integer.

    -   `itemTaxes` array of strings

        A list of the taxes to be applied to the related line item. Provide a list of taxes with their 32-character unique ID.

    -   `unitPrice` number

        Net Amount of a single product sold. Should be a positive decimal number with 2 decimal points. `eg. 32.43`

-   `exchangeRate` number

    If currency is different than your company's functional currency, this will be the exchange rate that Nuvio will use while converting the amounts of this expense to company's functional currency. Should be number with 4 decimal points. `eg. 32.4325`

## Returns

The updated expense.

`401`

No usable `Authorization: Bearer {token}` header (1002).

`403`

The access token is unknown, or lacks the scope this route needs (1001).

PUT /v1/expense/{id}

```
curl -X PUT https://api.nuvio.io/v1/expense/7c9e6679-7425-40de-944b-e07fc1f90ae7 \
  -H "Authorization: Bearer $NUVIO_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "referenceNumber": "INV-2026-0042",
    "description": "Office supplies",
    "expenseDate": "2026-11-05",
    "dueDate": "2026-11-05",
    "currency": "USD",
    "projectId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "projectCode": "ACME-01",
    "supplierId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "supplierCode": "ACME-01",
    "tags": [
      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
    ],
    "items": [
      {
        "itemDetail": "Office supplies",
        "productId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "productCode": "ACME-01",
        "quantity": 1,
        "itemTaxes": [
          "7c9e6679-7425-40de-944b-e07fc1f90ae7"
        ],
        "unitPrice": 100
      }
    ],
    "exchangeRate": 1
  }'
```

Response

```
{
  "success": true,
  "errors": null,
  "data": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "referenceNumber": "INV-2026-0042",
    "paymentStatus": "Pending",
    "description": "Office supplies",
    "dueDate": "2026-11-05",
    "expenseDate": "2026-11-05",
    "currency": "USD",
    "exchangeRate": 1,
    "project": {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "name": "Acme Supplies",
      "projectCode": "ACME-01"
    },
    "supplier": {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "name": "Acme Supplies",
      "entityCode": "ACME-01"
    },
    "tags": [
      {
        "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "name": "Acme Supplies"
      }
    ],
    "subTotal": 100,
    "totalTax": 100,
    "totalAmount": 100,
    "remainingAmount": 100,
    "items": [
      {
        "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "itemDetail": "Office supplies",
        "productCode": "ACME-01",
        "productId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "productName": "Acme Supplies",
        "quantity": 1,
        "unitPrice": 100,
        "totalTaxes": 100,
        "totalAmount": 100,
        "itemTaxes": [
          {
            "taxId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
            "taxName": "Acme Supplies",
            "taxAmount": 100
          }
        ]
      }
    ],
    "matchedPayments": [
      {
        "bankAccountId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "bankAccountName": "Acme Supplies",
        "transactionId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "amount": 100,
        "currency": "USD",
        "description": "Office supplies",
        "transactionDate": "2026-11-05"
      }
    ]
  }
}
```
