# Stripe cannot edit finalized invoice: void it or issue a credit note

## The symptom

`invoice is already finalized` or `cannot be edited` errors when your code tries to update lines, discounts, or tax on an invoice the customer already received. Or a support agent asks "how do I fix this invoice" and there is no edit button.

## Confirm the cause

Finalization is the point of no return for line items. Stripe locks the invoice because it may already have been sent, paid, or reported. Check `invoice.status`: `draft` is editable, `open` and `paid` are not.

## The fix

Three legal moves, pick by status:

1. **Unpaid (open) and wrong: void it.** Voiding cancels the invoice with no balance impact. Then create a corrected invoice. This is the clean path; do it before the customer pays.
2. **Paid and wrong: issue a credit note.** Credit notes reduce or refund the paid invoice and keep the audit trail intact. Never "edit" a paid invoice by hand-waving in your own database; the books diverge.
3. **Need to actually change an open invoice: uncollectible then recreate.** Marking open invoices uncollectible writes them off as bad debt. If you just need a do-over, void (not uncollectible) is the right call.

What not to do: delete the Stripe invoice and recreate it silently. Deletion destroys the audit trail; voiding preserves it.

## Verify the fix

In test mode: draft an invoice, finalize it, and confirm edits fail. Void it and confirm status `void` with zero balance impact. Pay another, issue a credit note, and confirm the customer's balance reflects it. Confirm your support runbook offers exactly these three options and nothing else.
