Expose POST /api/finance/portal/ so authenticated users can open Stripe's hosted portal for plan changes, payment methods, and cancellations (chat_web_app#33 companion).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
POST /api/finance/portal/that creates a Stripe Billing Portal session and returnsportal_urlInvoice.stripe_customer_id; return400when missing (user must complete Checkout first)STRIPE_PORTAL_RETURN_URL(default{FRONTEND_BASE_URL}/account/) in settings + env examplesTest plan
manage.py test finance.tests.test_portal finance.tests.test_checkoutstripe_customer_id→201+portal_url400with clear detailSTRIPE_SECRET_KEY→503401return_urlin body overrides default portal return URL