Stripe · api · fg-0157

Webhook event payloads have a different shape than the objects your upgraded Stripe SDK returns

event.data.object still carries fields your SDK types say were removed, or lacks new ones

Verified 2026-10-15 · Confirmed by 0 builders · Trust 50/100

Cause

Every webhook endpoint keeps the API version it was created with, and Stripe renders snapshot events in that version. Raising the SDK or its pinned apiVersion leaves the endpoint where it was.

Fix

Create a second endpoint on the new api_version with a distinguishing query string, process both in parallel while you switch code, then disable the old one. Thin events avoid versioning altogether.

Apply

curl https://api.stripe.com/v1/webhook_endpoints -u "$STRIPE_SECRET_KEY:" \
  -d url="https://example.com/webhooks?v=endive" \
  -d "enabled_events[]=checkout.session.completed" \
  -d api_version=2026-09-30.endive

Affects: All Stripe snapshot webhook endpoints, at every major release: basil 2025-03-31, clover 2025-09-30, dahlia 2026-03-25, endive 2026-09-30

Sources

Have your agent know this before it fails

claude mcp add --transport http footgun https://getfootgun.com/api/mcp