Quick Answers
- Stripe vs Square fees: Both are 2.9% + 30¢ online. Square wins in-person; Stripe wins for subscriptions and automation.
- Stripe vs Square vs PayPal: Square = retail, PayPal = marketplace trust, Stripe = anything you're building with code or Zapier.
- Zapier webhook timeout issue 2026: Zapier cuts off at 30 seconds — respond with 200 immediately and process async. One line fix.
- Twilio export not working: Usually a missing Export permission or subaccount key scope. Check Console → Account → Data Export.
Vercel + Stripe Webhook Not Working? The 3 Real Causes (and the One-Line Fix)
I'm PJ — I'm in Encinitas and I help operators ship payment integrations that don't break at 2 AM. The Vercel + Stripe webhook combo fails for 3 specific reasons in 2026: cold-start timeouts, the Next.js body-parser eating the raw payload, and 405s from a bad route handler. Here's how to diagnose + fix each in under 10 minutes.
Quick diagnostic — which one is it?
- Stripe dashboard shows "Pending" or no event delivered? → Vercel cold start timeout (function never woke up in time).
- Vercel function logs show "Webhook signature verification failed"? → Next.js body parser corrupted the raw payload before Stripe could verify it. (#1 cause.)
- Stripe shows 405 Method Not Allowed? → Your route file isn't exporting POST handler correctly (App Router vs Pages Router mismatch).
- Webhook works locally but fails on Vercel deploy? → Environment variable mismatch. Webhook secret in Vercel dashboard ≠
STRIPE_WEBHOOK_SECRETin your code. - Webhook fires but Zapier downstream times out? → Zapier's 30-second hard limit. Fix in Section "Zapier Timeout" below.
Questions Vercel + Stripe operators keep asking
- Stripe vs Square — which has lower fees for my business in 2026?
- Square vs Stripe — which is easier to set up without a developer?
- Stripe vs Square vs PayPal — which should I actually use?
- Zapier webhook timeout issue 2026 — why does it keep failing?
- How do I fix a Zapier webhook that times out on a Vercel or Stripe endpoint?
- Twilio export not working in 2026 — what's blocking it?
- Vercel Stripe webhook not working — is it the body parser?
Real Answers
Vercel + Stripe Webhook Body Parser (the #1 cause)
Next.js parses the request body before Stripe's signature check runs — that breaks signature verification 100% of the time. Add export const config = { api: { bodyParser: false } } (Pages Router) or use await req.text() (App Router). Read the raw body before passing to Stripe. One line, done.
Vercel Function Cold Start Timeout
Hobby tier functions timeout at 10s. If your handler does DB writes + Stripe API roundtrips + external calls, you'll hit it on cold starts → Stripe marks the delivery failed and retries. Fix: bump maxDuration in route config (10s Hobby, 60s Pro, 300s Enterprise). For heavy work, respond 200 immediately + queue.
405 Method Not Allowed (App Router gotcha)
Migrated from Pages Router to App Router and seeing 405s? You need export async function POST(request) as a NAMED export — not export default. Routes also live at /app/api/webhook/route.ts, not /pages/api/webhook.ts.
Zapier Webhook Timeout Issue 2026
Zapier times out at 30 seconds. If your Stripe or custom webhook handler takes longer, Zapier marks it failed and retries — creating duplicates. Fix: respond HTTP 200 immediately in your handler, then process the payload in a background job. Works on Vercel, Render, Railway.
Twilio Export Not Working (2026)
Three causes: (1) Export permission not enabled — check Console → Account → General Settings → Data Export. (2) You're over the 10,000 record cap — break into date ranges. (3) You're using a subaccount API key — exports require the main account key. Fix one of those and it will work.
Vercel Stripe Webhook Body Parser Fix
Next.js parses the request body before Stripe's signature check runs — and that breaks verification. Add export const config = { api: { bodyParser: false } } to your webhook route, then read the raw body with getRawBody(). One line, done.
Related Guides
Not sure which one to pick — or stuck on a webhook?
Text me the situation. I'll tell you exactly what to do. No sales pitch, no discovery call. Just a straight answer from someone who sets these up every week in North County San Diego.
💬 Text PJ Now — 858-461-8054Free. No obligation. I reply same day.