Update invoice

PUT/api/v1/invoices/{invoice_id}

Update invoice details. Optionally include 'recurring' config to create a recurring template.

Operation ID: update_invoice_api_v1_invoices__invoice_id__put·View as markdown·OpenAPI slice

Authentication

Bearer token authentication. Pass your DayZero API token in the Authorization header and the target business UUID in x-business-id.

Parameters

Path

invoice_idstring · uuidrequired

Request body

idstringrequired

UUID of the invoice to update.

customer_idstring

Change the customer.

line_itemsarray · LineItemRequest

Replace line items (draft invoices only).

due_datestring

New due date (YYYY-MM-DD).

invoice_datestring

New invoice (issue) date, YYYY-MM-DD. This is the date the invoice is shown and reported under, and the date its finalization journal entry is posted on — changing it on a finalized invoice re-dates that entry so the ledger keeps matching the invoice. Mainly for backdating invoices imported from another system.

invoice_numberstring

Set the invoice number, e.g. to keep the number an imported invoice had in its previous system. Must be unique within the business. Not available on Stripe-issued invoices, whose number belongs to Stripe.

descriptionstring

Update description/notes.

fulfillment_location_idstring

Update the default warehouse for inventory deductions. Ignored once the invoice has been delivered.

project_idstring

Link (or, when set to null, unlink) the project this invoice is attributed to for profitability. Changing it after finalization does not retroactively re-tag already-posted journal entries.

contract_idstring

Link (or, when set to null, unlink) the contract this invoice bills against. The contract must belong to the same business and the same customer as the invoice. Linking a finalized (open/paid) invoice adds its total to the contract's billed amount and can activate billing; unlinking symmetrically removes it. Draft invoices move nothing until sent.

revenue_treatmentstring

Manual revenue-tracking label ('earned' or 'deferred'), or an empty string / null to clear it. Informational only — posts NO journal entry. Works on any invoice, existing or draft.

recurringInvoiceRecurringConfig

If provided, creates a recurring template from this invoice.

Responses

200Successful Response

successboolean
messagestring
codestring
dataInvoiceResponse

400Bad Request - Invalid input

401Unauthorized - Authentication required

403Forbidden - Insufficient permissions

404Not Found - Resource does not exist

422Validation Error - Invalid data format