The point about storing your own plan name instead of the Stripe price id is underrated. It's what makes a later price change or a yearly plan a non-event instead of a grep through the codebase. One thing I'd add: keep a current_period_end column too, since "when do I renew?" is probably the most common billing email and it saves the one remaining trip to the dashboard.