Subscription Renewal Flow

Explain how subscription renewal invoices become PayPress orders.

Purpose

Explain how subscription renewal invoices become PayPress orders.

Overview

Stripe creates and attempts renewal invoices. PayPress creates local renewal orders when invoice payment events are received and accepted.

How It Works

For successful renewals, PayPress processes invoice events such as invoice.payment_succeeded or invoice_payment.paid, resolves subscription/customer context, validates ownership, and creates or updates an order for the new invoice.

Important Components

  • Stripe subscription.
  • Stripe invoice.
  • Invoice payment events.
  • Local subscription record.
  • Local renewal order.
  • Invoice links.
  • Payment intent/charge enrichment.
  • Retry Payment action for failed/open invoices.

Data Flow

Stripe renewal invoice -> payment attempt -> invoice webhook -> ownership validation -> renewal order upsert -> subscription update -> invoice/receipt enrichment.

Security Considerations

Renewal events still require signature and ownership validation. Manual Stripe-created subscriptions may need correct metadata before PayPress can accept their events.

Known Limitations

PayPress does not poll Stripe for renewal orders on a schedule. Pause-state visibility is limited. Stripe remains authoritative for retry/dunning behavior.

Related Articles