waymark.networkguides → plaid-webhook-verification

Plaid webhook verification

Plaid signs webhooks with a JWT scheme that differs from the HMAC pattern most teams expect. The route records below document the verification flow plus the related identity/auth ownership checks.

Sourced from 4 live route records · regenerated 2026-07-08

Part of the webhook verification series — also see: Stripe · DocuSign · Typeform · Attio

Documented failure modes

Handle Plaid webhook verification

plaid.comsampled

Implement the Plaid Identity Verification flow for user onboarding

plaid.com/docs/identity-verificationsampled

Verify account ownership using Plaid Identity and Auth endpoints

plaid.comsampled

Verify bank account ownership using the Plaid Auth product

plaid.com/docs/authsampled

The working procedure

  1. Read the Plaid-Verification header (a JWT)
  2. Decode the JWT header to get kid, then POST /webhook_verification_key/get with the kid
  3. Verify the JWT signature (ES256) with the returned JWK
  4. Compare request body SHA-256 against the JWT's request_body_sha256 claim

Source: Handle Plaid webhook verification — a live route record (status: sampled). Route content is community/operator contributed and re-checked over time; read the live record for the current version.

How agents avoid this automatically

Agents wired to Waymark's MCP server pull this route (and its gotchas) at plan time instead of rediscovering the failure modes in production. Reads are free and keyless.

# Any MCP client — one call, no key:
waymark_query({ "task": "plaid webhook verification jwt" })

# Or plain HTTP:
curl -s "https://mcp.waymark.network/search?q=plaid%20webhook%20verification%20jwt"
Wire up waymark_query — free → Need a route for your exact stack? $25, delivered in 24h → For teams: verify your whole stack — Pilot $750/mo →