Skip to content

Cancel a Stripe subscription that completes after the account is deleted - #162

Merged
Programcode merged 1 commit into
mainfrom
cursor/cancel-orphan-subscription-f3c6
Oct 22, 2026
Merged

Programcode merged 1 commit into
mainfrom
cursor/cancel-orphan-subscription-f3c6

Conversation

@Programcode

Copy link
Copy Markdown
Owner

Deleting an account cancels the subscriptions it can see. If Checkout finishes in that same moment, Stripe still creates a subscription, then the webhook tries to save it for a user who no longer exists. That save fails, Stripe retries forever, and the charge keeps going with nobody left in the app to cancel it.

When Checkout completes, the webhook now checks that the account still exists. If it was deleted, the webhook cancels that Stripe subscription and acknowledges the event so Stripe stops retrying. If the account lookup fails for any other reason, the webhook still returns an error and Stripe retries, so a paying user is not canceled by a blip.

Verified locally with the account-lookup tests and eslint on the webhook files. GitHub Actions is not running because of the repo billing limit, so this is a local pass, not a CI pass. This does not deploy the Edge Function or change any live data.

Open in Web Open in Cursor 

Deleting an account cancels the billing it can see. A Checkout that finishes in that window still created a Stripe subscription, then the webhook failed forever because the user no longer existed, so Stripe kept charging. The webhook now cancels that subscription and acknowledges the event. A lookup that fails for any other reason still retries.

Co-authored-by: Gáborjáni-Szabó Ádám <Programcode@users.noreply.github.com>
@vercel

vercel Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
debate-navigator Ready Ready Preview Oct 22, 2026 10:58am UTC
debatelab-staging Ready Ready Preview Oct 22, 2026 10:58am UTC

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Next included review available in 52 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
📥 Commits

Reviewing files that changed from the base of the PR and between 4f9e0a0 and c3c07d8.

📒 Files selected for processing: 3
  • src/test/stripe-account-presence.test.ts
  • supabase/functions/stripe-webhook/account-presence.ts
  • supabase/functions/stripe-webhook/index.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Programcode
Programcode merged commit b8b41c9 into main Oct 22, 2026
7 of 17 checks passed

This branch was successfully deployed

2 active deployments
Preview – debatelab-staging — c3c07d8c Deployed Oct 22, 2026 by vercel[bot]
Preview – debate-navigator — c3c07d8c Deployed Oct 22, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants