---
title: "Update Invoice"
method: PUT
path: "/invoices/{id}"
tags: ["invoices"]
---

# Update Invoice

`PUT /invoices/{id}`

## Request

- Base URL: `https://app.tascan.io/api/v1`
- URL: `https://app.tascan.io/api/v1/invoices/{id}`
- Auth: HTTP bearer

Update an invoice: mark it paid (records paid_at), overdue, cancelled, or edit client details / notes / due date.

## Path parameters

- `id` string, required

## Request body

- object
  - `invoice_id` string, required
  - `status` 'draft' | 'sent' | 'paid' | 'overdue' | 'cancelled'
  - `paid_at` string: ISO timestamp (default now) when status = paid
  - `client_name` string
  - `client_email` string
  - `client_phone` string
  - `notes` string
  - `due_date` string

## Response `200`

Success. JSON body: { data: ... } or an error object { error, message }.

## Other responses

- `4XX`: Client error (validation, auth, scope, rate limit).

---

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