curl -X PUT 'https://api.stateset.com/v1/invoice/inv_1234567890' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"due_date": "2024-08-15",
"payment_terms": "net_60",
"memo": "Terms extended per agreement 2024-06-30",
"metadata": { "accounting_code": "REV-001" }
}'
{
"invoice_id": "inv_1234567890",
"status": "sent",
"due_date": "2024-08-15",
"payment_terms": "net_60",
"total_amount": { "value": "12000.00", "denom": "ssusd" },
"amount_paid": { "value": "0.00", "denom": "ssusd" },
"balance_due": { "value": "12000.00", "denom": "ssusd" }
}
Update Invoice
Amend an invoice’s terms, line items, or metadata before it is paid.
PUT
/
v1
/
invoice
/
{id}
curl -X PUT 'https://api.stateset.com/v1/invoice/inv_1234567890' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"due_date": "2024-08-15",
"payment_terms": "net_60",
"memo": "Terms extended per agreement 2024-06-30",
"metadata": { "accounting_code": "REV-001" }
}'
{
"invoice_id": "inv_1234567890",
"status": "sent",
"due_date": "2024-08-15",
"payment_terms": "net_60",
"total_amount": { "value": "12000.00", "denom": "ssusd" },
"amount_paid": { "value": "0.00", "denom": "ssusd" },
"balance_due": { "value": "12000.00", "denom": "ssusd" }
}
Overview
Updates the mutable parts of an invoice. What is mutable depends onstatus.
An invoice that has received payment is substantially frozen. Amounts and line items cannot be
changed on a
paid invoice — that would silently alter what a counterparty
already settled against. To correct a paid invoice, void
it and issue a replacement. A voided invoice cannot be updated at all.| Field | draft / sent | paid / voided |
|---|---|---|
line_items, total_amount | Mutable | Frozen |
due_date, payment_terms | Mutable | Mutable |
metadata, memo | Mutable | Mutable |
Path
string
required
The invoice to update.
Body
Send only the fields you intend to change — omitted fields are left alone.array
Replaces the line items wholesale; it is not a merge. Send the complete intended set.
string
New due date,
YYYY-MM-DD. Extending this is how you grant terms without voiding and reissuing.string
e.g.
net_30, net_60.string
Free-text note shown on the invoice.
object
Arbitrary keys for your own reconciliation, e.g. an accounting code.
Response
Returns the updated invoice, shaped as in Get Invoice.Response fields
string
string
string (date-time)
string
Errors
Succeeds with200. Failures return 400, 401, 403, 404, 422 or 429 with an error body, per the platform status-code contract.
curl -X PUT 'https://api.stateset.com/v1/invoice/inv_1234567890' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"due_date": "2024-08-15",
"payment_terms": "net_60",
"memo": "Terms extended per agreement 2024-06-30",
"metadata": { "accounting_code": "REV-001" }
}'
{
"invoice_id": "inv_1234567890",
"status": "sent",
"due_date": "2024-08-15",
"payment_terms": "net_60",
"total_amount": { "value": "12000.00", "denom": "ssusd" },
"amount_paid": { "value": "0.00", "denom": "ssusd" },
"balance_due": { "value": "12000.00", "denom": "ssusd" }
}
Changing
due_date on an invoice you have already
factored does not move the factoring maturity
date — the funder priced the original term. Reconcile with the funder before extending.Related
Last modified on August 29, 2026