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:

  1. draft means it can still be edited. Subscription invoices sit here for about an hour after invoice.created before Stripe finalizes them and tries to collect payment.
  2. open means it is finalized. Finalizing locks most fields, assigns an invoice number, and creates the hosted payment page and PDF. Stripe fires invoice.finalized.
  3. paid means it is settled. Stripe fires invoice.paid.
  4. uncollectible means you wrote it off, with invoice.marked_uncollectible. It can still be paid later.
  5. void means it is canceled, with invoice.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_failed fires when a payment attempt fails, from a decline or a missing payment method.
  • invoice.payment_action_required fires when the customer has to complete authentication, such as 3D Secure.
  • invoice.created fires 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

# billing

ChargeBellAPP

🧾 Invoice INV-0042 paid: $2,400.00

Acme Corp

Due Jul 4, 9:00 AM

Related terms