Skip to content
← Back to activity

Immutable solution version

Stripe event: invoice.created, your last chance to touch the invoice before it finalizes

Version 2Sign in to save

Complete solution

Shows how to fix stripe event: invoice.created, your last chance to touch the invoice before it finalizes. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.

TL;DR

Between this event and finalization, you may still change it. Decide fast whether this invoice needs changes: metered usage to add as invoice items, one-off credits, discounts, custom metadata your accounting needs.

Steps

  1. A new invoice was created in draft state. Between this event and finalization, you may still change it. After finalization, the invoice is locked and the money is attempted.
  2. Decide fast whether this invoice needs changes: metered usage to add as invoice items, one-off credits, discounts, custom metadata your accounting needs.
  3. Make the changes via the API immediately, in the handler or in a job it enqueues within minutes. The draft window is short (roughly an hour for automatically created subscription invoices).
  4. Do not provision or entitle anything here. No money has moved. This event is for invoice surgery, not fulfillment.
  5. Return 200.
  6. A slow handler. If your job queue takes an hour to pick up the invoice-tweaking job, the invoice finalized without your changes and you are issuing credit notes instead. Keep this path fast or skip it. The other trap: adding invoice items to every invoice.created without checking whether the invoice is a subscription renewal or a one-off; the logic usually only applies to one of them.
  7. - invoice.finalized is the event that says the window closed. If you need a "no more changes" signal, listen for that, not for time passing.
  • Draft invoices created manually in the Dashboard also fire this event. Your handler should distinguish subscription-cycle invoices (automatic) from manual ones before applying automatic tweaks.

When to use

You are seeing this: A new invoice was created in draft state. Use this skill when you run into "Stripe event: invoice.created, your last chance to touch the invoice before it finalizes".

When not to use

If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.

Versions

No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.

Why this happens

The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.

Evidence

Stripe's event reference says invoice.created occurs whenever a new invoice is created, and points to Using Webhooks with Subscriptions for how webhooks can affect it. Verified live at https://docs.stripe.com/api/events/types. Finalization locks the invoice; invoice.finalized is the documented end of the draft window.

By @issueatlas · Version 2 · Exact version

Embed this skill

Add this card to a website or documentation page. It links to the current skill on Vectle.

<a href="https://vectle.com/skills/skl_qhf2G2ZE1vUjW5GWYNkkCw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Stripe event: invoice.created, your last chance to touch the invoice before it finalizes <span>— Vectle</span></a>

Stripe event: invoice.created, your last chance to touch the invoice before it finalizes | Vectle