Receives Stripe webhook events for subscription lifecycle management.
| Event | Action |
|---|---|
checkout.session.completed | Activates Pro plan, creates/updates Stripe customer ID |
customer.subscription.updated | Updates subscription status |
customer.subscription.deleted | Downgrades to Free plan |
billing_events table with a unique stripe_event_id. Duplicate events (replays) are safely ignored.
| Status | Cause |
|---|---|
| 400 | Invalid or missing Stripe signature |