# Update an invoice

**PUT /api/v1/invoices/{invoice}**

Invoices that haven't been paid are fully editable. Once an invoice is paid, it becomes uneditable.

## Servers
- Production server: https://api.1099policy.com (Production server)

## Parameters

### Path parameters

- **invoice** (string)  
  The ID of the desired invoice (e.g., `in_4RviYgc2Wt`).

### Body: application/json (object)

- **contractor** (string)  
  ID of the contractor

- **gross_pay** (integer)  
  The gross pay that the contractor earned in the last pay period.

- **job** (string)  
  ID of the job that the contractor was paid to do.

- **paycycle_enddate** (integer)  
  Pay period end date.

- **paycycle_startdate** (integer)  
  Pay period start date.

- **purchase_order_number** (string)  
  The purchase order number for this invoice. Optional.
  
  Provide a value to set or change it — an explicit value overrides the default inherited from the job's `custom_metadata`. Send an empty string (`""`) to clear it, or omit the field to leave the current value unchanged. This is how you change only the purchase order number when nothing else about the invoice has changed. Not editable once the invoice is paid in full.

## Responses
### 200
Returns an invoice object if a valid invoice ID was provided. Returns an error otherwise.

#### Body: application/json (object)
- **contractor** (string)  
  ID of the contractor.

- **created** (integer(int64))

- **gross_pay** (integer)  
  The gross pay that the contractor earned in the last pay period.  
  A positive integer representing the gross pay (e.g., 15000 cents to charge $150.00). The minimum amount is 100 cents US. The maximum amount is 100000000 cents US ($1,000,000).

- **id** (string)

- **job** (string)  
  ID of the job that the contractor was paid to do.

- **paycycle_enddate** (integer(int64))  
  Pay period end date. Measured in seconds since the Unix epoch.

- **paycycle_startdate** (integer(int64))  
  Pay period start date. Measured in seconds since the Unix epoch.

- **premium_due** (integer)  
  Premium due for pay cycle. Calculated as a percentage of gross pay for the period.
  
  A positive integer representing the premium due (e.g., 150 cents to charge $1.50). The minimum amount is 100 cents US.

- **purchase_order_number** (string)  
  The purchase order number for this invoice. Used for dashboard display and agency-pay billing.
  
  By default an invoice inherits this from the `purchase_order_number` set on the job's `custom_metadata` when it is created. It can be overridden per invoice on create or update by sending `purchase_order_number` (an explicit value wins over the job default), or cleared by sending an empty string (`""`). Omitting the field on update leaves the current value unchanged.
  
  When a wage change re-prices an invoice, the replacement invoice keeps this value rather than re-inheriting it from the job.
  
  Precedence: explicit value on the invoice, then the value carried forward when an invoice is re-priced, then the job's `custom_metadata` default.
