DEV Community

Rumblingb
Rumblingb

Posted on

The Hidden Revenue Leak in Your Stripe Payment Links

I audited 22 Stripe payment links yesterday. Every single one had the same silent revenue leak.

The Problem

Stripe payment links have a customer_creation field. It defaults to "if_required".

"if_required" means: only create a Customer object when Stripe absolutely needs one. For subscriptions, it creates one. For one-time payments, it silently discards the customer's email.

The money lands. But you lose the ability to:

  • Follow up with paying customers
  • Send renewal reminders
  • Segment by purchase history
  • Build an email list of actual buyers

You get the transaction but not the relationship.

The Fix (5 Seconds)

stripe payment_links update plink_XXXXX \n  -d "customer_creation=always" \n  --confirm
Enter fullscreen mode Exit fullscreen mode

Or in the dashboard: Payment Links → Edit → Customer creation → "Always create a Customer"

That's it. 5 seconds per link.

Why This Matters

When someone pays you $19 for an MCP server, they've raised their hand. They're not a random visitor — they're a buyer. If Stripe doesn't create a Customer object, you can never reach them again without building your own email capture flow.

For subscription products, "if_required" works fine — the subscription itself creates the Customer. But for one-time payments, every Stripe payment link with "if_required" is a silent revenue leak. You're collecting payments but burning the leads.

The Audit

I checked all 22 AgentPay payment links. All 22 had customer_creation: "if_required". Zero were set to "always".

That's 22 products where paying customers could vanish without a trace. Not because the product was bad. Not because the pricing was wrong. Because a single Stripe config field defaulted to discarding the most valuable piece of data: who paid you.

How to Check Your Own Links

Via Stripe CLI:

stripe payment_links list --limit 100 \n  --data "active=true" | jq '.data[] | {id, url, customer_creation}'
Enter fullscreen mode Exit fullscreen mode

Via API:

curl -s https://api.stripe.com/v1/payment_links?active=true&limit=100 \n  -H "Authorization: Bearer $STRIPE_API_KEY" \n  | jq '.data[] | {id, customer_creation}'
Enter fullscreen mode Exit fullscreen mode

Any link showing customer_creation: "if_required" for a one-time payment product is silently discarding your customer emails.

The Bottom Line

Stripe gets you the money. But keeping the customer relationship is on you. The default config fights you. Fix it now — 5 seconds per link, zero code changes.


61 products. 26 MCP servers. 22 payment links now audited.

Building in public at agentpay.so. All tools free at smithery.ai/servers/vishar-rumbling.

Top comments (0)