# Release v14 — dealership self-service billing

This release adds secure, dealership-specific Stripe billing actions to the dealer dashboard.

- **Update credit card** opens Stripe's hosted payment-method update flow.
- **Cancel subscription** opens Stripe's hosted cancellation confirmation flow.
- Only authenticated dealership owners and managers may open billing controls.
- Card details remain entirely within Stripe and are never stored by Beat My Car Quote.
- Scheduled cancellations display their membership end date and disable duplicate cancellation requests.
- Existing Stripe subscription webhooks synchronize cancellation status with the dealership dashboard.

No database migration or new environment variable is required. The existing `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, and `STRIPE_DEALER_BILLING_PORTAL_RETURN_URL` values are used.

Before testing, enable payment-method updates and end-of-period subscription cancellation in the corresponding Stripe Customer Portal configuration. Stripe test and live portal settings must be configured separately.
