Database
Supabase
Paddle's catalogue lives in their dashboard, so your Supabase schema should mirror price and product IDs rather than redefine them. Store the Paddle subscription ID, the current price ID and a resolved plan level, and treat that plan level as the only thing application code reads. Because Paddle supports invoiced business customers, expect an account or organization table sitting between users and subscriptions, since the person who pays is frequently not the person who signs in.