> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upag.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Atualizar item

> Troca o preço ou a quantidade de um item de uma fatura em rascunho

Altera o preço e/ou a quantidade de um item de uma fatura em `draft` e recalcula `amountDue`. Trocar o preço copia o `name` e o `amount` atuais do novo preço; mudar só a quantidade mantém o valor unitário com que o item entrou.

Permissão: `invoice.write`. Apenas chave secreta (`sk_…`).

<Note>
  Os exemplos usam o sandbox (`https://api.upag.dev/v1`). Em produção use `https://api.upag.io/v1` com `sk_live_…`.
</Note>

## Endpoint

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PATCH https://api.upag.dev/v1/invoices/5b0e8d3a-9c71-4e26-a8f4-1d7c3b6e9a02/items/e4a1c7f8-2b95-4d03-8e6a-9f1b5d0c3a74 \
    -H "Authorization: Bearer sk_test_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{ "quantity": 3 }'
  ```

  ```javascript Node.js SDK theme={null}
  import { Upag } from 'upag';

  const upag = new Upag('sk_test_your_api_key');

  const item = await upag.invoices.updateItem(
    '5b0e8d3a-9c71-4e26-a8f4-1d7c3b6e9a02',
    'e4a1c7f8-2b95-4d03-8e6a-9f1b5d0c3a74',
    { quantity: 3 },
  );
  ```
</CodeGroup>

## Parâmetros

<ParamField path="invoiceId" type="string (uuid)" required>
  ID da fatura. Precisa estar em `draft`.
</ParamField>

<ParamField path="itemId" type="string (uuid)" required>
  ID do item.
</ParamField>

<ParamField body="price" type="string (uuid)">
  Novo preço. Precisa ter a mesma moeda da fatura.
</ParamField>

<ParamField body="quantity" type="integer">
  Nova quantidade, inteiro ≥ 1.
</ParamField>

## Resposta

`200 OK` com o item atualizado.

```json Response theme={null}
{
  "id": "e4a1c7f8-2b95-4d03-8e6a-9f1b5d0c3a74",
  "product": "7d2b5e90-1c34-4a68-b9f7-0e3a6c8d1f25",
  "price": "3a7e9c14-6b2d-4f85-9e10-5c8d2a7b4f61",
  "name": "Plano mensal",
  "amount": 4950,
  "quantity": 3,
  "totalAmount": 14850
}
```

## Erros

| Status | Código | Quando |
| - | - | - |
| `404` | `INVOICE_NOT_FOUND` | A fatura não existe ou é de outra conta |
| `404` | `INVOICE_ITEM_NOT_FOUND` | O item não pertence à fatura |
| `404` | `PRICE_NOT_FOUND` / `PRODUCT_NOT_FOUND` | O novo preço, ou o produto dele, não existe na conta |
| `400` | `INVOICE_NOT_DRAFT` | A fatura já foi aberta |
| `400` | `INVOICE_CURRENCY_MISMATCH` | O novo preço está em outra moeda |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.