Two subscriptions, one person
A customer is being charged twice a month. shows two customers with their email, each with an active Pro subscription.
This answers: Why does Stripe create duplicate customers? No coding needed. 3 quick decisions.
- Payments and webhooks
- Where your data lives
Checking your access…
Why does Stripe create duplicate customers?
Checkout creates a new customer every time unless you pass an existing customer id. Passing only customer_email fills in the form but still creates a new customer, so a user who checks out twice gets two customers and possibly two subscriptions. Create one customer per user, store its id, and check for an active plan before checkout.
Breaks at Your server: New customer created on every checkout
Why AI tools write this bug
The shortest working Checkout example passes customer_email, so that's what AI tools generate, without the stored customer id.
How to fix it
- Create a customer once per user and store its id.
- Pass customer: id to every Checkout session.
- Block checkout for users with an active subscription.
- Send existing subscribers to the billing portal to change plans.
Check your own app
Paste this into Lovable, Cursor or Claude Code:
Without changing anything, show me how this project starts a Stripe Checkout. Does it pass an existing customer id or create a new customer each time? Does it check whether the user already has an active subscription first? Write a query I could run to find users with more than one Stripe customer or subscription.
Common questions
- Can Stripe merge duplicate customers?
- No. Cancel and refund the extra subscription, and keep using the customer your app has stored.