Credits and subscriptions sit on Stripe with Checkout sessions created server-side. That keeps price IDs and secrets off the client while still giving you the familiar hosted payment UX customers trust.
Webhooks reconcile subscription state after renewals, cancellations, and failed payments so the product UI does not lie about what plan you are on. Top-ups follow the same pattern for predictable balance updates.
We document the local Stripe CLI flow in the project docs so engineers can replay webhooks during development. Reliability here matters because billing bugs erode founder confidence faster than almost anything else.