Stripe payment links always return HTTP 200, even if the link does not exist
A developer discovered that Stripe's hosted payment page at buy.stripe.com returns an identical HTTP 200 response and byte-for-byte the same HTML whether a payment link is live, deactivated, or entirely fabricated. This happens because the page is a JavaScript shell that resolves the URL slug client-side after the document loads, making server-side HTTP status checks meaningless. The only reliable way to verify a payment link is to use Stripe's API, specifically by listing payment links via /v1/payment_links and matching on the url field, since there is no direct lookup-by-slug endpoint. Beyond existence, the API also reveals whether a link is active, in live mode, and whether its price matches what is advertised in published materials. The author updated their release verification tooling to drop HTTP fetching entirely in favor of API-only resolution.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.
Discussion (0)
Log in to join the discussion and vote.
Log in