Stripe invoice
A Stripe invoice is the bill behind every subscription charge. Learn its statuses, the events it fires such as invoice.upcoming, and why invoice.paid matters.
Updated October 1, 2026
A Stripe invoice is Stripe's record of what a customer owes and whether they have paid it. Every subscription renewal creates one, and so does any one-off bill you send a client. The invoice holds the line items, tax, discounts and total, along with the payment attempt that settles it.
Stripe invoice statuses
An invoice moves through five statuses:
draftmeans it can still be edited. Subscription invoices sit here for about an hour afterinvoice.createdbefore Stripe finalizes them and tries to collect payment.openmeans it is finalized. Finalizing locks most fields, assigns an invoice number, and creates the hosted payment page and PDF. Stripe firesinvoice.finalized.paidmeans it is settled. Stripe firesinvoice.paid.uncollectiblemeans you wrote it off, withinvoice.marked_uncollectible. It can still be paid later.voidmeans it is canceled, withinvoice.voided.
Two fields change how you read an invoice. collection_method is charge_automatically when Stripe charges the saved payment method, which is typical for subscriptions, or send_invoice when Stripe emails payment instructions, which is typical for B2B. billing_reason says why the invoice exists. It is subscription_create for a new subscription's first invoice, subscription_cycle for a renewal, subscription_update for a change mid-cycle, and manual for a one-off.
Line items come from invoice items and subscription prices. Once the invoice is finalized, Stripe charges it or sends it.
invoice.upcoming
Stripe sends invoice.upcoming a set number of days before an automatically charged subscription renews. You choose the number of days in your Dashboard's billing settings. The invoice in this event is a preview with no ID, so you can't edit it directly. To change what the customer pays, update the subscription or add invoice items before the renewal. Use the event to check the card on file or warn a customer about a large annual charge.
invoice.paid vs invoice.payment_succeeded
Both fire when an online payment succeeds, with the same invoice data. They differ on payments made outside Stripe. When you mark an invoice paid by hand after a wire or a check clears, only invoice.paid fires. So invoice.paid is the event to trust for "this invoice is settled", and it is the event Stripe suggests for granting access when a subscription is active.
Other invoice events
invoice.payment_failedfires when a payment attempt fails, from a decline or a missing payment method.invoice.payment_action_requiredfires when the customer has to complete authentication, such as 3D Secure.invoice.createdfires when a new invoice is drafted. If Stripe doesn't get a successful response from your webhook endpoints, it can delay finalizing automatically collected invoices for up to 72 hours.
Why invoices matter
An invoice is where billed revenue turns into collected revenue, or fails to. A renewal invoice stuck in open after a declined card is MRR at risk, and the retry window is limited. Stripe's recommended Smart Retries setting is 8 tries within 2 weeks. After that, the subscription is canceled, marked unpaid or left past due, depending on your settings. For send_invoice customers, an open invoice past its due date is a debt someone has to chase.
Finalized invoices are also accounting records, and you can't change the amount. To reduce what a customer owes, issue a credit note against the invoice. To fix customer details, void it and create a corrected copy.
Who handles each invoice event
- Paid renewal. Finance reconciles it.
- Failed payment. Finance or support checks the decline reason, asks the customer to update their card, and lets retries run. See Smart Retries and dunning.
- Action required. Support sends the customer the hosted invoice link so they can authenticate.
- Upcoming renewal. Customer success confirms the card and price before a large annual charge runs.
- Uncollectible. Finance and the founder decide whether to keep pursuing it, and remove it from revenue forecasts either way.
Invoices in ChargeBell
The invoice paid alert posts the amount, the customer, the invoice number and the billing reason. It also notes when someone marked an invoice paid outside Stripe. The alert is off by default, because one new sale can trigger several success alerts at once, such as new subscriber, payment received and invoice paid. Turn it on when renewals or B2B invoices are the signal you care about, and send it to #billing or #revenue. If volume gets high, send it to the daily digest instead.
Failed invoice charges come through the payment failed alert, which includes the decline reason and posts during quiet hours. For who should see which alert, read which Stripe alerts go to finance, support, and founders.
Get alerted in Slack
Stripe events: invoice.created, invoice.finalized, invoice.paid, invoice.payment_failed, invoice.payment_action_required, invoice.upcoming, invoice.marked_uncollectible, invoice.voided
ChargeBellAPP
🧾 Invoice INV-0042 paid: $2,400.00
Acme Corp
Due Jul 4, 9:00 AM