---
title: "Update a draft invoice"
method: PATCH
path: "/invoices/{id}"
tags: ["Invoices"]
---

# Update a draft invoice

`PATCH /invoices/{id}`

## Request

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

Draft-only. A sent, partial, paid or voided invoice answers 409.

## Path parameters

- `id` integer, required

## Headers

- `Idempotency-Key` string, uuid

## Request body

- object
  - `invoiceNumber` string
  - `contactId` integer
  - `sourceBidId` integer, nullable
  - `sourcePayAppId` integer, nullable
  - `sourceType` 'bid' | 'pay_app' | 'ad_hoc'
  - `issueDate` string, nullable
  - `dueDate` string, nullable
  - `taxRate` string
  - `discountType` 'fixed' | 'percentage'
  - `discount` string
  - `notesToCustomer` string, nullable
  - `terms` string, nullable
  - `paymentTermsText` string, nullable
  - `paymentTermId` integer, nullable
  - `paymentTermInstallmentId` integer, nullable
  - `percentOfBid` string, nullable

## Response `200`

Updated

- object
  - `data` object, required
    - `id` integer, required
    - `tenantId` integer, required
    - `invoiceNumber` string, required
    - `projectId` integer, nullable, required
    - `contactId` integer, nullable, required
    - `status` 'draft' | 'sent' | 'partial' | 'paid' | 'voided', required
    - `issueDate` string, date-time, nullable, required
    - `dueDate` string, date-time, nullable, required
    - `subtotal` string, required
    - `taxAmount` string, required
    - `total` string, required
    - `amountPaid` string, required
    - `balanceDue` string, required
    - `notesToCustomer` string, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `lineItems` InvoiceLineItem[]
      - `id` integer, required
      - `invoiceId` integer, required
      - `description` string, required
      - `quantity` string, required
      - `unitPrice` string, required
      - `amount` string, required
      - `order` integer, required
  - `meta` ResponseMeta, required
    - `request_id` string: Server-generated request identifier
    - `pagination` PaginationMeta
      - `cursor` string, nullable, required: Opaque cursor for the next page; null when no more results
      - `has_more` boolean, required: Whether more pages are available after this one
      - `count` integer, required: Items in this page

## Other responses

- `404`: Error
- `409`: Error
- `422`: Error

---

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