How Updating an Invoice Actually Works in Stripe
Like all Stripe mutations, updating an invoice is a POST request to /v1/invoices/{id} (not PATCH or PUT), sending only the fields that need to change -- but which fields are actually editable depends heavily on the invoice's current status.
Real API Details
A draft invoice allows broad changes (due date, line items, metadata), while a finalized invoice restricts edits mostly to metadata and a few administrative fields -- line items and amounts become locked once finalized.
Practical Considerations
Check the invoice's status before attempting substantive changes (like modifying line items) -- attempting to edit locked fields on a finalized invoice returns an error rather than a partial update.
Use cases
Adaptive billing workflows.
- Extend due dates to accommodate customer payment schedules.
- Adjust line items when order details change.
- Attach additional metadata for downstream reporting.
- Recalculate totals when discounts or taxes are updated.
