Update an invoice (absent fields keep their value; send version for optimistic concurrency)

A money change (items, discounts, totals) sends totals and is refused on an invoice with payments. Order, customer of an order invoice, type and display id never change.

Scope: invoices:write, channel:write or admin. A permission group made before the Channel API scopes existed grants it as invoices:manage.

Idempotency: send Idempotency-Key; a retry with the same key replays the first answer.

Rate limit: write class, 1,200 requests per minute per tenant by default (read class 6,000). Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; a refusal is 429 rate_limited with Retry-After.

Path Params
string
required
length between 1 and 300

The uuid, a legacy 24-hex id, or ext:: (URL-encoded).

Body Params
string
length between 1 and 64

The version read; a stale one is 409 version_conflict.

length between 1 and 500
Schema_b957b16211 | null
items
array of objects
length ≤ 1000
items
totals
object

Magnitudes (a refund sends positive amounts). A refund component (shipping, salesTax, dutyTax, vat) the refund charges instead of returning is negative; a charge invoice sends no negative amount (400 validation_failed). Recomputed by the server: subtotal from the lines (when there are lines), total from subtotal + shipping + salesTax + dutyTax + vat - discount. A mismatch is 422 totals_mismatch with the computed values.

discounts
array of objects
length ≤ 50
discounts
taxLines
array of objects
length ≤ 50
taxLines
Schema_aee7e11aee | null
length between 1 and 100
tags
array of strings
length ≤ 50
tags
metadata
object

Merged by key; a null value removes the key.

length ≤ 10000
integer
0 to 4
Headers
string
length between 7 and 50

Any string of 7 to 50 characters that identifies this request (an order number, a webhook id). A retry with the same key and the same body answers the first result with Idempotent-Replayed: true; the same key with a different body is 422 idempotency_key_reused; a concurrent request with the same key is 409 in_progress with Retry-After. Recommended on every write.

Responses

Language
Credentials
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json