You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DELETE /v1/users/delete-account revokes Firebase auth and wipes Firestore, but never calls Stripe to cancel an active subscription. A user who deletes their account continues to be billed, with no remaining identity to access invoices or self-service the cancellation.
Where
backend/database/users.py:497-513 — delete_user_data(uid) only walks Firestore subcollections. backend/routers/users.py:126-165 — delete_account endpoint composes the wipe; no Stripe call in the chain. backend/database/users.py:620-637 — get_stripe_customer_id exists but is unused in the deletion path.
PR #6669 (Fix and redesign delete-account flow) explicitly notes that Pinecone + GCS are intentionally untouched pending their own cleanup pass. Stripe is not mentioned and appears to be an unintentional gap rather than a deferred item.
Impact
Continued billing of a user who has lost access to the account (and to support email).
Compliance friction: GDPR Article 17 / CCPA require cessation of processing on deletion; an active subscription contradicts the intent of the deletion.
Suggested direction (open to alternatives)
Inside delete_account, look up get_stripe_customer_id(uid); if present, schedule a Stripe subscriptions.cancel (or subscriptions.update(cancel_at_period_end=True) if the team prefers grace period).
Make the Stripe call idempotent and tolerant of an already-cancelled subscription.
Happy to open a PR if the team confirms direction (cancel immediately vs. cancel at period end) and any legal/billing constraints. Related: stale issue #5088.
What
DELETE /v1/users/delete-accountrevokes Firebase auth and wipes Firestore, but never calls Stripe to cancel an active subscription. A user who deletes their account continues to be billed, with no remaining identity to access invoices or self-service the cancellation.Where
backend/database/users.py:497-513—delete_user_data(uid)only walks Firestore subcollections.backend/routers/users.py:126-165—delete_accountendpoint composes the wipe; no Stripe call in the chain.backend/database/users.py:620-637—get_stripe_customer_idexists but is unused in the deletion path.PR #6669 (Fix and redesign delete-account flow) explicitly notes that Pinecone + GCS are intentionally untouched pending their own cleanup pass. Stripe is not mentioned and appears to be an unintentional gap rather than a deferred item.
Impact
Suggested direction (open to alternatives)
delete_account, look upget_stripe_customer_id(uid); if present, schedule a Stripesubscriptions.cancel(orsubscriptions.update(cancel_at_period_end=True)if the team prefers grace period).account_deletions/{uid}(already created by Fix and redesign delete-account flow #6669) with astripe_canceled_attimestamp for audit.Happy to open a PR if the team confirms direction (cancel immediately vs. cancel at period end) and any legal/billing constraints. Related: stale issue #5088.