Short answer
For a one-off change, void the open invoice and create a new one. For a charge that can wait, add an invoice item to the customer so it lands on the next invoice. For subscription renewals, make changes in the draft window by listening for invoice.created.
Rather not fix it yourself? Stripe Billing Fix and Setup handles it at a fixed price, agreed before work starts.
Why Stripe locks the invoice, and the fix
01
The code edits after finalization
“However, you can still add invoice items to the customer. The added items apply to the next invoice.” Stripe, How subscriptions work with invoices
Adding a line or changing an amount on an open invoice fails. Add the item to the customer instead, and it goes on the next invoice.
await stripe.invoiceItems.create({ customer: customerId, amount: 2500, currency: 'usd', description: 'Extra usage', });02
The change missed the draft window
“Leaves the invoice in a draft status for about an hour.” Stripe, How subscriptions work with invoices
Renewal invoices wait as drafts for about an hour before Stripe finalizes them. Run usage or discount changes from the invoice.created webhook, not later.
03
The first subscription invoice has no draft period
“Stripe immediately finalizes the initial invoice and charges the customer.” Stripe, How subscriptions work with invoices
The first invoice of a charge_automatically subscription is finalized and charged right away. Set the right price and items when creating the subscription.
04
The invoice needs a real correction
“To make more substantive changes, create a new invoice and void the old one.” Stripe, Invoicing overview (open)
Also check: a wrong amount on an unpaid open invoice is fixed by voiding it and sending a new one. A paid invoice is corrected with a credit note or refund.
Checked against the vendor’s docs on : Stripe docs: Error codes; Stripe docs: How subscriptions work with invoices; Stripe docs: Invoicing overview.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- $950Stripe Billing Fix and SetupSubscriptions, webhooks, customer portal and failed payments set up or fixed, tested in Stripe test mode.See scope and start
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
“Working with Simon makes everything run so smoothly and better than I could ask for it. Amazingly communicative, extremely knowledgeable of coding and the backend processes. I strongly recommend.”
Related: Stripe invoice_upcoming_none · Stripe subscription past_due · Stripe coupon_expired · Stripe card_not_supported